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 a9422fd commit 222eacaCopy full SHA for 222eaca
fs/bcachefs/data_update.c
@@ -544,8 +544,16 @@ int bch2_data_update_init(struct btree_trans *trans,
544
m->op.compression_opt = background_compression(io_opts);
545
m->op.watermark = m->data_opts.btree_insert_flags & BCH_WATERMARK_MASK;
546
547
- bkey_for_each_ptr(ptrs, ptr)
548
- bch2_dev_get(bch2_dev_bkey_exists(c, ptr->dev));
+ bkey_for_each_ptr(ptrs, ptr) {
+ if (!bch2_dev_tryget(c, ptr->dev)) {
549
+ bkey_for_each_ptr(ptrs, ptr2) {
550
+ if (ptr2 == ptr)
551
+ break;
552
+ bch2_dev_put(bch2_dev_have_ref(c, ptr2->dev));
553
+ }
554
+ return -BCH_ERR_data_update_done;
555
556
557
558
unsigned durability_have = 0, durability_removing = 0;
559
0 commit comments