diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-04-30 22:46:45 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-09 00:29:23 +0300 |
commit | cb4d340a10295fcea7e4363f1b95c1a8c6c9bed4 (patch) | |
tree | 4a7dc0e2be228651ad6b91806d5112b5c2a7c125 /fs | |
parent | 07d7c4da7bd1faefd338f4073846632fbac54880 (diff) | |
download | linux-cb4d340a10295fcea7e4363f1b95c1a8c6c9bed4.tar.xz |
bcachefs: bch2_evacuate_bucket() -> bch2_dev_tryget()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/bcachefs/move.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c index 12bc577354ff..c441ce7c92ec 100644 --- a/fs/bcachefs/move.c +++ b/fs/bcachefs/move.c @@ -690,6 +690,10 @@ int bch2_evacuate_bucket(struct moving_context *ctxt, struct bpos bp_pos = POS_MIN; int ret = 0; + struct bch_dev *ca = bch2_dev_tryget(c, bucket.inode); + if (!ca) + return 0; + trace_bucket_evacuate(c, &bucket); bch2_bkey_buf_init(&sk); @@ -711,7 +715,7 @@ int bch2_evacuate_bucket(struct moving_context *ctxt, a = bch2_alloc_to_v4(k, &a_convert); dirty_sectors = bch2_bucket_sectors_dirty(*a); - bucket_size = bch2_dev_bkey_exists(c, bucket.inode)->mi.bucket_size; + bucket_size = ca->mi.bucket_size; fragmentation = a->fragmentation_lru; ret = bch2_btree_write_buffer_tryflush(trans); @@ -823,6 +827,7 @@ next: trace_evacuate_bucket(c, &bucket, dirty_sectors, bucket_size, fragmentation, ret); err: + bch2_dev_put(ca); bch2_bkey_buf_exit(&sk, c); return ret; } |