bcachefs: Re-enable hash_redo_key()
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 4 Sep 2022 18:10:12 +0000 (14:10 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:40 +0000 (17:09 -0400)
commit5877d8876afe1c5843731244f39d1739eba2665f
treec7b6d5807d5698e1ff3ebe3186567dfc4c275cec
parent1ffb876fb0f31632b761ee721f633e0d7491ca7b
bcachefs: Re-enable hash_redo_key()

When subvolumes & snapshots were rolled out, hash_redo_key() was
disabled due to some new complications - namely, bch2_hash_set() works
at the subvolume level, and fsck does not run in a defined subvolume,
instead working at the snapshot ID level.

This patch splits out bch2_hash_set_snapshot() from bch2_hash_set(), and
makes one small tweak for fsck:

 - Normally, bch2_hash_set() (and other dirent code) needs to know what
   subvolume we're in, because dirents that point to other subvolumes
   should only be visible in the subvolume they were created in, not
   other snapshots. We can't check that in fsck, so we just assume that
   all dirents are visible.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/fsck.c
fs/bcachefs/str_hash.h