Josef Bacik
2012-Jun-21 20:10 UTC
[RFC] A way to tell if all the devices in a file system are available
Harald Hoyer has had this as a feature request for ages and I''ve finally gotten around to hacking something up. This is probably going to get bikeshedded to death, bring it on, I''m not married to any of the behaviors in these patches, I just want to get the ball rolling so we can have something in place for 3.6. Basically all I''ve done is saved how many devices the super block thinks we have into the fs_devices struct whenever we scan a device. Then all we have to do for the IOCTL is compare how many devices the fs_devices struct has in it to how many we think we need. The command itself just spits out 0 for yay we''re ready and 1 for boo no we''re not. This makes it easier for Harald to do his multi-device btrfs support in dracut. Thanks, Josef -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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> --- fs/btrfs/ioctl.h | 3 ++- fs/btrfs/super.c | 7 +++++++ fs/btrfs/volumes.c | 9 ++++++++- fs/btrfs/volumes.h | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h index 497c530..34317cf 100644 --- a/fs/btrfs/ioctl.h +++ b/fs/btrfs/ioctl.h @@ -363,5 +363,6 @@ struct btrfs_ioctl_get_dev_stats { struct btrfs_ioctl_get_dev_stats) #define BTRFS_IOC_GET_AND_RESET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 53, \ struct btrfs_ioctl_get_dev_stats) - +#define BTRFS_IOC_DEVICES_READY _IOW(BTRFS_IOCTL_MAGIC, 54, \ + struct btrfs_ioctl_vol_args) #endif diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 23fc7e8..347ccd8 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -1458,6 +1458,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); diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 3f292cf..a505627 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -429,6 +429,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) mutex_init(&fs_devices->device_list_mutex); fs_devices->latest_devid = orig->latest_devid; fs_devices->latest_trans = orig->latest_trans; + fs_devices->total_devices = orig->total_devices; memcpy(fs_devices->fsid, orig->fsid, sizeof(fs_devices->fsid)); /* We have held the volume lock, it is safe to get the devices. */ @@ -739,6 +740,7 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, int ret; u64 devid; u64 transid; + u64 total_devices; flags |= FMODE_EXCL; bdev = blkdev_get_by_path(path, flags, holder); @@ -760,6 +762,7 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, disk_super = (struct btrfs_super_block *)bh->b_data; devid = btrfs_stack_device_id(&disk_super->dev_item); transid = btrfs_super_generation(disk_super); + total_devices = btrfs_super_num_devices(disk_super); if (disk_super->label[0]) printk(KERN_INFO "device label %s ", disk_super->label); else @@ -767,7 +770,8 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, printk(KERN_CONT "devid %llu transid %llu %s\n", (unsigned long long)devid, (unsigned long long)transid, path); ret = device_list_add(path, disk_super, devid, fs_devices_ret); - + if (!ret && fs_devices_ret) + (*fs_devices_ret)->total_devices = total_devices; brelse(bh); error_close: mutex_unlock(&uuid_mutex); @@ -1433,6 +1437,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) list_del_rcu(&device->dev_list); device->fs_devices->num_devices--; + device->fs_devices->total_devices--; if (device->missing) root->fs_info->fs_devices->missing_devices--; @@ -1550,6 +1555,7 @@ static int btrfs_prepare_sprout(struct btrfs_root *root) fs_devices->seeding = 0; fs_devices->num_devices = 0; fs_devices->open_devices = 0; + fs_devices->total_devices = 0; fs_devices->seed = seed_devices; generate_random_uuid(fs_devices->fsid); @@ -1749,6 +1755,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) root->fs_info->fs_devices->num_devices++; root->fs_info->fs_devices->open_devices++; root->fs_info->fs_devices->rw_devices++; + root->fs_info->fs_devices->total_devices++; if (device->can_discard) root->fs_info->fs_devices->num_can_discard++; root->fs_info->fs_devices->total_rw_bytes += device->total_bytes; diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h index 74366f2..a3c5d5c 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h @@ -126,6 +126,7 @@ struct btrfs_fs_devices { u64 missing_devices; u64 total_rw_bytes; u64 num_can_discard; + u64 total_devices; struct block_device *latest_bdev; /* all of the devices in the FS, protected by a mutex -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
This command will be used by things like dracut that wish to know very simply if all of the devices have been added to the kernel cache yet for the device to be fully mounted. This keeps initrd''s from constantly having to try to mount the file system until it succeeds every time a device is added to the system. Thanks, Signed-off-by: Josef Bacik <jbacik@fusionio.com> --- cmds-device.c | 35 +++++++++++++++++++++++++++++++++++ ioctl.h | 2 ++ 2 files changed, 37 insertions(+), 0 deletions(-) diff --git a/cmds-device.c b/cmds-device.c index db625a6..fccf870 100644 --- a/cmds-device.c +++ b/cmds-device.c @@ -246,11 +246,46 @@ static int cmd_scan_dev(int argc, char **argv) return 0; } +static const char * const cmd_ready_dev_usage[] = { + "btrfs device ready <device>", + "Check device to see if it has all of it''s devices in cache for mounting", + NULL +}; + +static int cmd_ready_dev(int argc, char **argv) +{ + struct btrfs_ioctl_vol_args args; + int fd; + int ret; + + if (check_argc_min(argc, 2)) + usage(cmd_ready_dev_usage); + + fd = open("/dev/btrfs-control", O_RDWR); + if (fd < 0) { + perror("failed to open /dev/btrfs-control"); + return 10; + } + + strncpy(args.name, argv[argc - 1], BTRFS_PATH_NAME_MAX); + ret = ioctl(fd, BTRFS_IOC_DEVICES_READY, &args); + if (ret < 0) { + fprintf(stderr, "ERROR: unable to determine if the device ''%s''" + " is ready for mounting - %s\n", argv[argc - 1], + strerror(errno)); + ret = 1; + } + + close(fd); + return ret; +} + const struct cmd_group device_cmd_group = { device_cmd_group_usage, NULL, { { "add", cmd_add_dev, cmd_add_dev_usage, NULL, 0 }, { "delete", cmd_rm_dev, cmd_rm_dev_usage, NULL, 0 }, { "scan", cmd_scan_dev, cmd_scan_dev_usage, NULL, 0 }, + { "ready", cmd_ready_dev, cmd_ready_dev_usage, NULL, 0 }, { 0, 0, 0, 0, 0 } } }; diff --git a/ioctl.h b/ioctl.h index f2e5d8d..e5f8a94 100644 --- a/ioctl.h +++ b/ioctl.h @@ -330,5 +330,7 @@ struct btrfs_ioctl_logical_ino_args { struct btrfs_ioctl_ino_path_args) #define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36, \ struct btrfs_ioctl_ino_path_args) +#define BTRFS_IOC_DEVICES_READY _IOW(BTRFS_IOCTL_MAGIC, 54, \ + struct btrfs_ioctl_vol_args) #endif -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Harald Hoyer
2012-Jun-22 10:33 UTC
Re: [RFC] A way to tell if all the devices in a file system are available
On 06/21/2012 10:10 PM, Josef Bacik wrote:> Harald Hoyer has had this as a feature request for ages and I''ve finally gotten > around to hacking something up. This is probably going to get bikeshedded to > death, bring it on, I''m not married to any of the behaviors in these patches, I > just want to get the ball rolling so we can have something in place for 3.6. > > Basically all I''ve done is saved how many devices the super block thinks we have > into the fs_devices struct whenever we scan a device. Then all we have to do > for the IOCTL is compare how many devices the fs_devices struct has in it to how > many we think we need. > > The command itself just spits out 0 for yay we''re ready and 1 for boo no we''re > not. This makes it easier for Harald to do his multi-device btrfs support in > dracut. Thanks, > > Josef >Exactly what I need! Thanks! Would be really usefu! -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Goffredo Baroncelli
2012-Jun-22 17:20 UTC
Re: [PATCH] Btrfs-progs: add btrfs device ready command
On 06/21/2012 10:10 PM, Josef Bacik wrote:> This command will be used by things like dracut that wish to know very > simply if all of the devices have been added to the kernel cache yet for the > device to be fully mounted. This keeps initrd''s from constantly having to > try to mount the file system until it succeeds every time a device is added > to the system. Thanks, >Please Josef, when you submit a patch to btrfs-progs that adds a new command pay attention to update the man page too. Se below my other syggestions: Thanks G.Baroncelli> Signed-off-by: Josef Bacik <jbacik@fusionio.com> > --- > cmds-device.c | 35 +++++++++++++++++++++++++++++++++++ > ioctl.h | 2 ++ > 2 files changed, 37 insertions(+), 0 deletions(-) > > diff --git a/cmds-device.c b/cmds-device.c > index db625a6..fccf870 100644 > --- a/cmds-device.c > +++ b/cmds-device.c > @@ -246,11 +246,46 @@ static int cmd_scan_dev(int argc, char **argv) > return 0; > } > > +static const char * const cmd_ready_dev_usage[] = { > + "btrfs device ready <device>",What about btrfs device check-volume <device>> + "Check device to see if it has all of it''s devices in cache for mounting",I suggest: Check if all the devices of the volume which owns <device> are registered.> + NULL > +}; > + > +static int cmd_ready_dev(int argc, char **argv) > +{ > + struct btrfs_ioctl_vol_args args; > + int fd; > + int ret; > + > + if (check_argc_min(argc, 2)) > + usage(cmd_ready_dev_usage); > + > + fd = open("/dev/btrfs-control", O_RDWR); > + if (fd < 0) { > + perror("failed to open /dev/btrfs-control"); > + return 10; > + } > + > + strncpy(args.name, argv[argc - 1], BTRFS_PATH_NAME_MAX); > + ret = ioctl(fd, BTRFS_IOC_DEVICES_READY, &args); > + if (ret < 0) { > + fprintf(stderr, "ERROR: unable to determine if the device ''%s''" > + " is ready for mounting - %s\n", argv[argc - 1], > + strerror(errno)); > + ret = 1; > + } > + > + close(fd); > + return ret; > +} > + > const struct cmd_group device_cmd_group = { > device_cmd_group_usage, NULL, { > { "add", cmd_add_dev, cmd_add_dev_usage, NULL, 0 }, > { "delete", cmd_rm_dev, cmd_rm_dev_usage, NULL, 0 }, > { "scan", cmd_scan_dev, cmd_scan_dev_usage, NULL, 0 }, > + { "ready", cmd_ready_dev, cmd_ready_dev_usage, NULL, 0 }, > { 0, 0, 0, 0, 0 } > } > }; > diff --git a/ioctl.h b/ioctl.h > index f2e5d8d..e5f8a94 100644 > --- a/ioctl.h > +++ b/ioctl.h > @@ -330,5 +330,7 @@ struct btrfs_ioctl_logical_ino_args { > struct btrfs_ioctl_ino_path_args) > #define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36, \ > struct btrfs_ioctl_ino_path_args) > +#define BTRFS_IOC_DEVICES_READY _IOW(BTRFS_IOCTL_MAGIC, 54, \ > + struct btrfs_ioctl_vol_args) > > #endif-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/21/2012 10:10 PM, Josef Bacik wrote:> 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> > --- > fs/btrfs/ioctl.h | 3 ++- > fs/btrfs/super.c | 7 +++++++ > fs/btrfs/volumes.c | 9 ++++++++- > fs/btrfs/volumes.h | 1 + > 4 files changed, 18 insertions(+), 2 deletions(-) > > diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h > index 497c530..34317cf 100644 > --- a/fs/btrfs/ioctl.h > +++ b/fs/btrfs/ioctl.h > @@ -363,5 +363,6 @@ struct btrfs_ioctl_get_dev_stats { > struct btrfs_ioctl_get_dev_stats) > #define BTRFS_IOC_GET_AND_RESET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 53, \ > struct btrfs_ioctl_get_dev_stats) > - > +#define BTRFS_IOC_DEVICES_READY _IOW(BTRFS_IOCTL_MAGIC, 54, \ > + struct btrfs_ioctl_vol_args)What is the purpose of the ioctl args ? This could confuses the user (as programmer). However IIRC for the other ioctls without argument the same policy was applied.Maybe a better name than btrfs_ioctl_vol_args would help, like btrfs_generic_ioctl. Anyway, I suggest to return not a boolean value but a pair of integers: both the number of devices registered and the total number of devices. Better would be the dev-id found and the dev-id missing. This could help a lot the diagnostic of mount problem. Finally I am starting to think that we should definitely switch to a /sys/btrfs style of interface think something like: /sys/btrfs/<fs-uuid>/<dev-uuid>/present size space-occuped number-of-error [...] /sys/btrfs/<fs-uuid>/<subvolume-id>/read-only compressed raid-mode path [...] /sys/btrfs/<fs-uuid>/label mounted read-only compressed raid-mode [...]> #endif > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > index 23fc7e8..347ccd8 100644 > --- a/fs/btrfs/super.c > +++ b/fs/btrfs/super.c > @@ -1458,6 +1458,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); > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index 3f292cf..a505627 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -429,6 +429,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) > mutex_init(&fs_devices->device_list_mutex); > fs_devices->latest_devid = orig->latest_devid; > fs_devices->latest_trans = orig->latest_trans; > + fs_devices->total_devices = orig->total_devices; > memcpy(fs_devices->fsid, orig->fsid, sizeof(fs_devices->fsid)); > > /* We have held the volume lock, it is safe to get the devices. */ > @@ -739,6 +740,7 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, > int ret; > u64 devid; > u64 transid; > + u64 total_devices; > > flags |= FMODE_EXCL; > bdev = blkdev_get_by_path(path, flags, holder); > @@ -760,6 +762,7 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, > disk_super = (struct btrfs_super_block *)bh->b_data; > devid = btrfs_stack_device_id(&disk_super->dev_item); > transid = btrfs_super_generation(disk_super); > + total_devices = btrfs_super_num_devices(disk_super); > if (disk_super->label[0]) > printk(KERN_INFO "device label %s ", disk_super->label); > else > @@ -767,7 +770,8 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, > printk(KERN_CONT "devid %llu transid %llu %s\n", > (unsigned long long)devid, (unsigned long long)transid, path); > ret = device_list_add(path, disk_super, devid, fs_devices_ret); > - > + if (!ret && fs_devices_ret) > + (*fs_devices_ret)->total_devices = total_devices; > brelse(bh); > error_close: > mutex_unlock(&uuid_mutex); > @@ -1433,6 +1437,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) > list_del_rcu(&device->dev_list); > > device->fs_devices->num_devices--; > + device->fs_devices->total_devices--; > > if (device->missing) > root->fs_info->fs_devices->missing_devices--; > @@ -1550,6 +1555,7 @@ static int btrfs_prepare_sprout(struct btrfs_root *root) > fs_devices->seeding = 0; > fs_devices->num_devices = 0; > fs_devices->open_devices = 0; > + fs_devices->total_devices = 0; > fs_devices->seed = seed_devices; > > generate_random_uuid(fs_devices->fsid); > @@ -1749,6 +1755,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) > root->fs_info->fs_devices->num_devices++; > root->fs_info->fs_devices->open_devices++; > root->fs_info->fs_devices->rw_devices++; > + root->fs_info->fs_devices->total_devices++; > if (device->can_discard) > root->fs_info->fs_devices->num_can_discard++; > root->fs_info->fs_devices->total_rw_bytes += device->total_bytes; > diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h > index 74366f2..a3c5d5c 100644 > --- a/fs/btrfs/volumes.h > +++ b/fs/btrfs/volumes.h > @@ -126,6 +126,7 @@ struct btrfs_fs_devices { > u64 missing_devices; > u64 total_rw_bytes; > u64 num_can_discard; > + u64 total_devices; > struct block_device *latest_bdev; > > /* all of the devices in the FS, protected by a mutex-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Harald Hoyer
2012-Jul-10 17:35 UTC
Re: [RFC] A way to tell if all the devices in a file system are available
Am 21.06.2012 22:10, schrieb Josef Bacik:> Harald Hoyer has had this as a feature request for ages and I''ve finally gotten > around to hacking something up. This is probably going to get bikeshedded to > death, bring it on, I''m not married to any of the behaviors in these patches, I > just want to get the ball rolling so we can have something in place for 3.6. > > Basically all I''ve done is saved how many devices the super block thinks we have > into the fs_devices struct whenever we scan a device. Then all we have to do > for the IOCTL is compare how many devices the fs_devices struct has in it to how > many we think we need. > > The command itself just spits out 0 for yay we''re ready and 1 for boo no we''re > not. This makes it easier for Harald to do his multi-device btrfs support in > dracut. Thanks, > > Josef >any news on this? -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Jun 22, 2012 at 08:12:52PM +0200, Goffredo Baroncelli wrote:> On 06/21/2012 10:10 PM, Josef Bacik wrote: > > 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> > > --- > > fs/btrfs/ioctl.h | 3 ++- > > fs/btrfs/super.c | 7 +++++++ > > fs/btrfs/volumes.c | 9 ++++++++- > > fs/btrfs/volumes.h | 1 + > > 4 files changed, 18 insertions(+), 2 deletions(-) > > > > diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h > > index 497c530..34317cf 100644 > > --- a/fs/btrfs/ioctl.h > > +++ b/fs/btrfs/ioctl.h > > @@ -363,5 +363,6 @@ struct btrfs_ioctl_get_dev_stats { > > struct btrfs_ioctl_get_dev_stats) > > #define BTRFS_IOC_GET_AND_RESET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 53, \ > > struct btrfs_ioctl_get_dev_stats) > > - > > +#define BTRFS_IOC_DEVICES_READY _IOW(BTRFS_IOCTL_MAGIC, 54, \ > > + struct btrfs_ioctl_vol_args) > > What is the purpose of the ioctl args ? This could confuses the user (as > programmer). However IIRC for the other ioctls without argument the same > policy was applied.Maybe a better name than btrfs_ioctl_vol_args would > help, like btrfs_generic_ioctl. > > Anyway, I suggest to return not a boolean value but a pair of integers: > both the number of devices registered and the total number of devices. > Better would be the dev-id found and the dev-id missing. This could help > a lot the diagnostic of mount problem.I thought that this could be implemented in a more generic way, something like a DEVICE_QUERY, where we can get all sorts of details about the particular device. And if the device is not already discovered and cached, then the query would simply indicate this.> Finally I am starting to think that we should definitely switch to a > /sys/btrfs style of interfaceI''m all for a sysfs interface, having an ioctl way of retrieving information is good, but not practical for use from scripting languages, namely for writing tests. There are some guys working on the sysfs patches, I did preliminary reviews. The first step is to bring back the core sysfs support (mostly done iirc) and then exporting various information. I''ll check what''s the status.> think something like: > > /sys/btrfs/<fs-uuid>/<dev-uuid>/present > size > space-occuped > number-of-error > [...] > > /sys/btrfs/<fs-uuid>/<subvolume-id>/read-only > compressed > raid-mode > path > [...] > > /sys/btrfs/<fs-uuid>/label > mounted > read-only > compressed > raid-mode > [...]That''s a good start for a discussion. david -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 07/17/2012 01:53 PM, David Sterba wrote:> On Fri, Jun 22, 2012 at 08:12:52PM +0200, Goffredo Baroncelli wrote: >> On 06/21/2012 10:10 PM, Josef Bacik wrote: >>> This will be used in conjunction with btrfs device ready <dev>. This is[....]> >> Finally I am starting to think that we should definitely switch to a >> /sys/btrfs style of interface > > I''m all for a sysfs interface, having an ioctl way of retrieving > information is good, but not practical for use from scripting languages, > namely for writing tests.Moreover a sysfs interface is more extensible for further enanchement> > There are some guys working on the sysfs patches, I did preliminary > reviews. The first step is to bring back the core sysfs support (mostly > done iirc) and then exporting various information. > I''ll check what''s the status.Great, are there public patches, I am interested in contributing> >> think something like: >> >> /sys/btrfs/<fs-uuid>/<dev-uuid>/present >> size >> space-occuped >> number-of-error >> [...] >> >> /sys/btrfs/<fs-uuid>/<subvolume-id>/read-only >> compressed >> raid-mode >> path >> [...] >> >> /sys/btrfs/<fs-uuid>/label >> mounted >> read-only >> compressed >> raid-mode >> [...] > > That''s a good start for a discussion. > > > david > . >-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html