bcachefs: Fix creating snapshot with implict source
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 4 Dec 2023 20:44:15 +0000 (15:44 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 6 Dec 2023 05:21:30 +0000 (00:21 -0500)
When creating a snapshot without specifying the source subvolume, we use
the subvolume containing the new snapshot.

Previously, this worked if the directory containing the new snapshot was
the subvolume root - but we were using the incorrect helper, and got a
subvolume ID of 0 when the parent directory wasn't the root of the
subvolume, causing an emergency read-only.

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

index 5a39bcb597a33d42826a16a98da394de3fe23660..a70b7a03057d7fdd9921a7e3e4fdddd742866508 100644 (file)
@@ -413,7 +413,7 @@ retry:
 
        if ((arg.flags & BCH_SUBVOL_SNAPSHOT_CREATE) &&
            !arg.src_ptr)
-               snapshot_src.subvol = to_bch_ei(dir)->ei_inode.bi_subvol;
+               snapshot_src.subvol = inode_inum(to_bch_ei(dir)).subvol;
 
        inode = __bch2_create(file_mnt_idmap(filp), to_bch_ei(dir),
                              dst_dentry, arg.mode|S_IFDIR,