diff options
author | Josef Bacik <jbacik@fusionio.com> | 2012-06-21 16:03:58 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2012-07-23 16:27:42 -0400 |
commit | 02db0844beffc1c4e99d750be58ffb3ed95d6d62 (patch) | |
tree | ee82fa926f2900e24a1ca76eab6a85a32f453898 /fs/btrfs/super.c | |
parent | 96c3f4331a8c1cd0a58307e4ac7e73e09d7dab23 (diff) |
Btrfs: add DEVICE_READY ioctl
This will be used in conjunction with btrfs device ready <dev>. This is
needed for initrd's to have a nice and lightweight way to tell if all of the
devices needed for a file system are in the cache currently. This keeps
them from having to do mount+sleep loops waiting for devices to show up.
Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Diffstat (limited to 'fs/btrfs/super.c')
-rw-r--r-- | fs/btrfs/super.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 88a2d2bb2d7..26da344231a 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -1462,6 +1462,13 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd, ret = btrfs_scan_one_device(vol->name, FMODE_READ, &btrfs_fs_type, &fs_devices); break; + case BTRFS_IOC_DEVICES_READY: + ret = btrfs_scan_one_device(vol->name, FMODE_READ, + &btrfs_fs_type, &fs_devices); + if (ret) + break; + ret = !(fs_devices->num_devices == fs_devices->total_devices); + break; } kfree(vol); |