diff options
-rw-r--r-- | fs/btrfs/ioctl.h | 14 | ||||
-rw-r--r-- | fs/btrfs/super.c | 3 |
2 files changed, 10 insertions, 7 deletions
diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h index 78049ea208db..b320b103fa13 100644 --- a/fs/btrfs/ioctl.h +++ b/fs/btrfs/ioctl.h | |||
@@ -22,13 +22,20 @@ | |||
22 | 22 | ||
23 | #define BTRFS_IOCTL_MAGIC 0x94 | 23 | #define BTRFS_IOCTL_MAGIC 0x94 |
24 | #define BTRFS_VOL_NAME_MAX 255 | 24 | #define BTRFS_VOL_NAME_MAX 255 |
25 | #define BTRFS_PATH_NAME_MAX 3072 | 25 | #define BTRFS_PATH_NAME_MAX 4087 |
26 | 26 | ||
27 | /* this should be 4k */ | ||
27 | struct btrfs_ioctl_vol_args { | 28 | struct btrfs_ioctl_vol_args { |
28 | __s64 fd; | 29 | __s64 fd; |
29 | char name[BTRFS_PATH_NAME_MAX + 1]; | 30 | char name[BTRFS_PATH_NAME_MAX + 1]; |
30 | }; | 31 | }; |
31 | 32 | ||
33 | struct btrfs_ioctl_clone_range_args { | ||
34 | __s64 src_fd; | ||
35 | __u64 src_offset, src_length; | ||
36 | __u64 dest_offset; | ||
37 | }; | ||
38 | |||
32 | #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ | 39 | #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ |
33 | struct btrfs_ioctl_vol_args) | 40 | struct btrfs_ioctl_vol_args) |
34 | #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ | 41 | #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ |
@@ -52,11 +59,6 @@ struct btrfs_ioctl_vol_args { | |||
52 | struct btrfs_ioctl_vol_args) | 59 | struct btrfs_ioctl_vol_args) |
53 | #define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \ | 60 | #define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \ |
54 | struct btrfs_ioctl_vol_args) | 61 | struct btrfs_ioctl_vol_args) |
55 | struct btrfs_ioctl_clone_range_args { | ||
56 | __s64 src_fd; | ||
57 | __u64 src_offset, src_length; | ||
58 | __u64 dest_offset; | ||
59 | }; | ||
60 | 62 | ||
61 | #define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ | 63 | #define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ |
62 | struct btrfs_ioctl_clone_range_args) | 64 | struct btrfs_ioctl_clone_range_args) |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index b4c101d9322c..92c9b543deff 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -582,7 +582,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd, | |||
582 | { | 582 | { |
583 | struct btrfs_ioctl_vol_args *vol; | 583 | struct btrfs_ioctl_vol_args *vol; |
584 | struct btrfs_fs_devices *fs_devices; | 584 | struct btrfs_fs_devices *fs_devices; |
585 | int ret = 0; | 585 | int ret = -ENOTTY; |
586 | int len; | 586 | int len; |
587 | 587 | ||
588 | if (!capable(CAP_SYS_ADMIN)) | 588 | if (!capable(CAP_SYS_ADMIN)) |
@@ -594,6 +594,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd, | |||
594 | goto out; | 594 | goto out; |
595 | } | 595 | } |
596 | len = strnlen(vol->name, BTRFS_PATH_NAME_MAX); | 596 | len = strnlen(vol->name, BTRFS_PATH_NAME_MAX); |
597 | |||
597 | switch (cmd) { | 598 | switch (cmd) { |
598 | case BTRFS_IOC_SCAN_DEV: | 599 | case BTRFS_IOC_SCAN_DEV: |
599 | ret = btrfs_scan_one_device(vol->name, FMODE_READ, | 600 | ret = btrfs_scan_one_device(vol->name, FMODE_READ, |