Hey everyone, in fsck.c, we have: /* * Prefer to delete the first one, since that will be the one at the wrong * offset: * return value: 0 -> delete k1, 1 -> delete k2 */ int bch2_fsck_update_backpointers(struct btree_trans *trans, struct snapshots_seen *s, const struct bch_hash_desc desc, struct bch_hash_info *hash_info, struct bkey_i *new) { if (new->k.type != KEY_TYPE_dirent) return 0;
struct bkey_i_dirent *d = bkey_i_to_dirent(new); struct inode_walker target = inode_walker_init(); int ret = 0; if (d->v.d_type == DT_SUBVOL) { BUG(); } else { ret = get_visible_inodes(trans, &target, s, le64_to_cpu(d->v.d_inum)); if (ret) goto err; darray_for_each(target.inodes, i) { i->inode.bi_dir_offset = d->k.p.offset; ret = __bch2_fsck_write_inode(trans, &i->inode); if (ret) goto err; } } err: inode_walker_exit(&target); return ret; } What is the current state for handling subvolumes ? In someone already working on or it is something we don't want to implement for some reasons ? Regards, Arnaud