Skip to content

Commit 80a773f

Browse files
kdavemasoncl
authored andcommitted
btrfs: retrieve more info from FS_INFO ioctl
Provide the basic information about filesystem through the ioctl: * b-tree node size (same as leaf size) * sector size * expected alignment of CLONE_RANGE and EXTENT_SAME ioctl arguments Backward compatibility: if the values are 0, kernel does not provide this information, the applications should ignore them. Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <clm@fb.com>
1 parent 7d824b6 commit 80a773f

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

fs/btrfs/ioctl.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2574,6 +2574,10 @@ static long btrfs_ioctl_fs_info(struct btrfs_root *root, void __user *arg)
25742574
}
25752575
mutex_unlock(&fs_devices->device_list_mutex);
25762576

2577+
fi_args->nodesize = root->fs_info->super_copy->nodesize;
2578+
fi_args->sectorsize = root->fs_info->super_copy->sectorsize;
2579+
fi_args->clone_alignment = root->fs_info->super_copy->sectorsize;
2580+
25772581
if (copy_to_user(arg, fi_args, sizeof(*fi_args)))
25782582
ret = -EFAULT;
25792583

include/uapi/linux/btrfs.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,11 @@ struct btrfs_ioctl_fs_info_args {
181181
__u64 max_id; /* out */
182182
__u64 num_devices; /* out */
183183
__u8 fsid[BTRFS_FSID_SIZE]; /* out */
184-
__u64 reserved[124]; /* pad to 1k */
184+
__u32 nodesize; /* out */
185+
__u32 sectorsize; /* out */
186+
__u32 clone_alignment; /* out */
187+
__u32 reserved32;
188+
__u64 reserved[122]; /* pad to 1k */
185189
};
186190

187191
struct btrfs_ioctl_feature_flags {

0 commit comments

Comments
 (0)