]> granicus.if.org Git - strace/commitdiff
btrfs: provide fallback definitions for BTRFS_IOC_QUOTA_RESCAN*
authorDmitry V. Levin <ldv@altlinux.org>
Fri, 17 Jun 2016 00:02:46 +0000 (03:02 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 17 Jun 2016 01:06:55 +0000 (01:06 +0000)
<linux/btrfs.h> was introduced in linux v3.9-rc1 while some
of btrfs ioctls were added later, e.g. BTRFS_IOC_QUOTA_RESCAN
and BTRFS_IOC_QUOTA_RESCAN_STATUS in v3.10-rc2,
or BTRFS_IOC_QUOTA_RESCAN_WAIT in v3.11-rc1.

* btrfs.c [!BTRFS_IOC_QUOTA_RESCAN]
(struct btrfs_ioctl_quota_rescan_args): New structure.
(BTRFS_IOC_QUOTA_RESCAN, BTRFS_IOC_QUOTA_RESCAN_STATUS): New macros.
[!BTRFS_IOC_QUOTA_RESCAN_WAIT] (BTRFS_IOC_QUOTA_RESCAN_WAIT): New macro.
* tests/btrfs.c: Likewise.

Reported-by: Li Er <phoooyb@gmail.com>
btrfs.c
tests/btrfs.c

diff --git a/btrfs.c b/btrfs.c
index 04c71fc3480dd48c4664df10453f2d100a669a48..f94565bc4e6b77cfcf8a0ddabee730626075b31d 100644 (file)
--- a/btrfs.c
+++ b/btrfs.c
@@ -83,6 +83,20 @@ struct btrfs_ioctl_defrag_range_args {
 # define BTRFS_FIRST_FREE_OBJECTID 256ULL
 #endif
 
+#ifndef BTRFS_IOC_QUOTA_RESCAN
+struct btrfs_ioctl_quota_rescan_args {
+       uint64_t flags, progress, reserved[6];
+};
+# define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, \
+                                       struct btrfs_ioctl_quota_rescan_args)
+# define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \
+                                       struct btrfs_ioctl_quota_rescan_args)
+#endif
+
+#ifndef BTRFS_IOC_QUOTA_RESCAN_WAIT
+# define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46)
+#endif
+
 #ifndef BTRFS_IOC_GET_FEATURES
 # define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \
                                        struct btrfs_ioctl_feature_flags)
@@ -1024,7 +1038,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                if (umove_or_printaddr(tcp, arg, &args))
                        break;
 
-               tprintf("{flags=%" PRI__u64 "}", args.flags);
+               tprintf("{flags=%" PRIu64 "}", (uint64_t) args.flags);
                break;
        }
 
@@ -1038,7 +1052,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                if (umove_or_printaddr(tcp, arg, &args))
                        break;
 
-               tprintf("{flags=%" PRI__u64 ", progress=", args.flags);
+               tprintf("{flags=%" PRIu64 ", progress=", (uint64_t) args.flags);
                btrfs_print_objectid(args.progress);
                tprints("}");
                break;
index 4014c883c3015f5be881fa66cd1eb30f35240d2c..45aa08fc4e44b8872dc05d56e5b08ba3660376fb 100644 (file)
@@ -72,6 +72,20 @@ const unsigned char uuid_reference[BTRFS_UUID_SIZE] = {
 
 const char uuid_reference_string[] = "01234567-89ab-cdef-fedc-ba9876543210";
 
+#ifndef BTRFS_IOC_QUOTA_RESCAN
+struct btrfs_ioctl_quota_rescan_args {
+       uint64_t flags, progress, reserved[6];
+};
+# define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, \
+                                       struct btrfs_ioctl_quota_rescan_args)
+# define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \
+                                       struct btrfs_ioctl_quota_rescan_args)
+#endif
+
+#ifndef BTRFS_IOC_QUOTA_RESCAN_WAIT
+# define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46)
+#endif
+
 #ifndef BTRFS_IOC_GET_FEATURES
 # define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \
                                    struct btrfs_ioctl_feature_flags)