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.
Unified · Split
| @@ -2574,6 +2574,10 @@ static long btrfs_ioctl_fs_info(struct btrfs_root *root, void __user *arg) · 2573 unmodified lines | ||
| 2574 | 2574 | } |
| 2575 | 2575 | mutex_unlock(&fs_devices->device_list_mutex); |
| 2576 | 2576 | |
| 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 | + | |
| 2577 | 2581 | if (copy_to_user(arg, fi_args, sizeof(*fi_args))) |
| 2578 | 2582 | ret = -EFAULT; |
| 2579 | 2583 | |
| @@ -181,7 +181,11 @@ struct btrfs_ioctl_fs_info_args { · 180 unmodified lines | ||
| 181 | 181 | __u64 max_id; /* out */ |
| 182 | 182 | __u64 num_devices; /* out */ |
| 183 | 183 | __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 */ | |
| 185 | 189 | }; |
| 186 | 190 | |
| 187 | 191 | struct btrfs_ioctl_feature_flags { |