diff options
Diffstat (limited to 'sys-fs/btrfs-progs/files/btrfs-progs-6.1.1-ioctl-fix.patch')
-rw-r--r-- | sys-fs/btrfs-progs/files/btrfs-progs-6.1.1-ioctl-fix.patch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/sys-fs/btrfs-progs/files/btrfs-progs-6.1.1-ioctl-fix.patch b/sys-fs/btrfs-progs/files/btrfs-progs-6.1.1-ioctl-fix.patch new file mode 100644 index 000000000000..d8149b6220ef --- /dev/null +++ b/sys-fs/btrfs-progs/files/btrfs-progs-6.1.1-ioctl-fix.patch @@ -0,0 +1,87 @@ +https://bugs.gentoo.org/888579 +https://bugs.gentoo.org/889694 +https://github.com/kdave/btrfs-progs/issues/566 +https://github.com/kdave/btrfs-progs/commit/27bb4f6819df6ad7771e089e1fd3f1bd1163e437 + +From 27bb4f6819df6ad7771e089e1fd3f1bd1163e437 Mon Sep 17 00:00:00 2001 +From: David Sterba <dsterba@suse.com> +Date: Wed, 4 Jan 2023 16:34:51 +0100 +Subject: [PATCH] btrfs-progs: libbtrfs: revert to v6.0.2 ioctl.h + +The file ioctl.h has been copied to libbtrfs in 5fc1d0cd64ee +("btrfs-progs: copy ioctl.h into libbtrfs") but that was after changes +to the btrfs_qgroup_limit in 03451430de7c ("btrfs-progs: rename qgroup +items to match the kernel naming scheme"). This caused build breakage +but hasn't been fixed in v6.1.1. + +Revert the contents of libbtrfs/ioctl.h to be completely just v6.0.2 +though the other changes may not be needed, it's the version we know +works. + +Issue: #566 +Signed-off-by: David Sterba <dsterba@suse.com> +--- a/libbtrfs/ioctl.h ++++ b/libbtrfs/ioctl.h +@@ -71,10 +71,10 @@ BUILD_ASSERT(sizeof(struct btrfs_ioctl_vol_args) == 4096); + + struct btrfs_qgroup_limit { + __u64 flags; +- __u64 max_rfer; +- __u64 max_excl; +- __u64 rsv_rfer; +- __u64 rsv_excl; ++ __u64 max_referenced; ++ __u64 max_exclusive; ++ __u64 rsv_referenced; ++ __u64 rsv_exclusive; + }; + BUILD_ASSERT(sizeof(struct btrfs_qgroup_limit) == 40); + +@@ -192,6 +192,7 @@ BUILD_ASSERT(sizeof(struct btrfs_ioctl_dev_replace_status_params) == 48); + #define BTRFS_IOCTL_DEV_REPLACE_CMD_START 0 + #define BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS 1 + #define BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL 2 ++#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_RESULT -1 + #define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0 + #define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1 + #define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2 +@@ -934,6 +935,38 @@ enum btrfs_err_code { + BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET, + }; + ++/* An error code to error string mapping for the kernel ++* error codes ++*/ ++static inline char *btrfs_err_str(enum btrfs_err_code err_code) ++{ ++ switch (err_code) { ++ case BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET: ++ return "unable to go below two devices on raid1"; ++ case BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET: ++ return "unable to go below three devices on raid1c3"; ++ case BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET: ++ return "unable to go below four devices on raid1c4"; ++ case BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET: ++ return "unable to go below four/two devices on raid10"; ++ case BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET: ++ return "unable to go below two devices on raid5"; ++ case BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET: ++ return "unable to go below three devices on raid6"; ++ case BTRFS_ERROR_DEV_TGT_REPLACE: ++ return "unable to remove the dev_replace target dev"; ++ case BTRFS_ERROR_DEV_MISSING_NOT_FOUND: ++ return "no missing devices found to remove"; ++ case BTRFS_ERROR_DEV_ONLY_WRITABLE: ++ return "unable to remove the only writeable device"; ++ case BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS: ++ return "add/delete/balance/replace/resize operation " ++ "in progress"; ++ default: ++ return NULL; ++ } ++} ++ + #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ + struct btrfs_ioctl_vol_args) + #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ + |