Add sync and transaction ioctl defs
authorChris Mason <chris.mason@oracle.com>
Tue, 10 Jun 2008 14:09:18 +0000 (10:09 -0400)
committerDavid Woodhouse <dwmw2@hera.kernel.org>
Tue, 10 Jun 2008 14:09:18 +0000 (10:09 -0400)
btrfsctl -c forces a single FS sync

The transaction ioctls are unsafe for general use because they can lead
to deadlocks if the application is not very careful.  But, ceph is
experimenting with btrfs as a backing store, and these ioctls are required
for testing.

btrfsctl.c
ioctl.h

index e90c6fc5d823996c81c2df486d94c2a1974b51c3..7e7e79b5d2c9d8442edfa9d0322d4d4cd64e6731 100644 (file)
@@ -51,6 +51,7 @@ void print_usage(void)
        printf("\t-r [+-]size[gkm] resize the FS\n");
        printf("\t-A device scans the device for a Btrfs filesystem\n");
        printf("\t-a scans all devices for Btrfs filesystems\n");
+       printf("\t-c forces a single FS sync\n");
        exit(1);
 }
 
@@ -115,6 +116,8 @@ int main(int ac, char **av)
                                exit(1);
                        }
                        command = BTRFS_IOC_RESIZE;
+               } else if (strcmp(av[i], "-c") == 0) {
+                       command = BTRFS_IOC_SYNC;
                }
        }
        if (command == 0) {
diff --git a/ioctl.h b/ioctl.h
index b0e73f51d636b7b31509389e4a537d45fe4bb138..85ed35a775b17d08a453ed029f0fb31214911947 100644 (file)
--- a/ioctl.h
+++ b/ioctl.h
@@ -36,6 +36,14 @@ struct btrfs_ioctl_vol_args {
                                   struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, \
                                   struct btrfs_ioctl_vol_args)
+/* trans start and trans end are dangerous, and only for
+ * use by applications that know how to avoid the
+ * resulting deadlocks
+ */
+#define BTRFS_IOC_TRANS_START  _IO(BTRFS_IOCTL_MAGIC, 6)
+#define BTRFS_IOC_TRANS_END    _IO(BTRFS_IOCTL_MAGIC, 7)
+#define BTRFS_IOC_SYNC         _IO(BTRFS_IOCTL_MAGIC, 8)
+
 #define BTRFS_IOC_CLONE        _IOW(BTRFS_IOCTL_MAGIC, 9, int)
 #define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10, \
                                   struct btrfs_ioctl_vol_args)
@@ -43,4 +51,5 @@ struct btrfs_ioctl_vol_args {
                                   struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \
                                   struct btrfs_ioctl_vol_args)
+
 #endif