From: Kent Overstreet Date: Tue, 28 Mar 2023 23:15:53 +0000 (-0400) Subject: bcachefs: Check return code from need_whiteout_for_snapshot() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=2a6c302fb3a00bd74dfc3882698d290482bc5382;p=linux.git bcachefs: Check return code from need_whiteout_for_snapshot() This could return a transaction restart; we need to check for that. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c index ba31910165750..da9840edc0236 100644 --- a/fs/bcachefs/btree_update_leaf.c +++ b/fs/bcachefs/btree_update_leaf.c @@ -1426,10 +1426,15 @@ int bch2_trans_update_extent(struct btree_trans *trans, update->k.p = k.k->p; update->k.p.snapshot = insert->k.p.snapshot; - if (insert->k.p.snapshot != k.k->p.snapshot || - (btree_type_has_snapshots(btree_id) && - need_whiteout_for_snapshot(trans, btree_id, update->k.p))) + if (insert->k.p.snapshot != k.k->p.snapshot) { update->k.type = KEY_TYPE_whiteout; + } else if (btree_type_has_snapshots(btree_id)) { + ret = need_whiteout_for_snapshot(trans, btree_id, update->k.p); + if (ret < 0) + goto err; + if (ret) + update->k.type = KEY_TYPE_whiteout; + } ret = bch2_btree_insert_nonextent(trans, btree_id, update, BTREE_UPDATE_INTERNAL_SNAPSHOT_NODE|flags);