We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent bc3204c commit f4301b6Copy full SHA for f4301b6
fs/bcachefs/alloc_background.c
@@ -1903,9 +1903,12 @@ static void bch2_do_discards_fast_work(struct work_struct *work)
1903
1904
static void bch2_discard_one_bucket_fast(struct bch_fs *c, struct bpos bucket)
1905
{
1906
- struct bch_dev *ca = bch2_dev_bkey_exists(c, bucket.inode);
+ rcu_read_lock();
1907
+ struct bch_dev *ca = bch2_dev_rcu(c, bucket.inode);
1908
+ bool dead = !ca || percpu_ref_is_dying(&ca->io_ref);
1909
+ rcu_read_unlock();
1910
- if (!percpu_ref_is_dying(&ca->io_ref) &&
1911
+ if (!dead &&
1912
!discard_in_flight_add(c, bucket) &&
1913
bch2_write_ref_tryget(c, BCH_WRITE_REF_discard_fast) &&
1914
!queue_work(c->write_ref_wq, &c->discard_fast_work))
0 commit comments