Richard W.M. Jones
2015-Mar-06 08:42 UTC
Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show
On Fri, Mar 06, 2015 at 07:39:36AM +0000, Chen, Hanxiao wrote:> > > > -----Original Message----- > > From: Richard W.M. Jones [mailto:rjones@redhat.com] > > Sent: Thursday, March 05, 2015 8:59 PM > > To: Chen, Hanxiao/陈 晗霄 > > Cc: libguestfs@redhat.com > > Subject: Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show > > > > AFAICT this API doesn't work: > > > > $ ./run guestfish -N fs:btrfs btrfs-filesystem-show /dev/sda1 > > libguestfs: error: btrfs_filesystem_show: /dev/sda1: > > > > That might be a bug of btrfs-progs. v3.17 works fine. > I'll fix it. > > > When I tried the btrfs-filesystem-show-all API, I see a lot of > > structure in the output: > > > > $ ./run guestfish -N fs:btrfs btrfs-filesystem-show-all > > Label: none uuid: f7754d86-baa1-40e7-a563-46976e81d64c > > Total devices 1 FS bytes used 28.00KiB > > devid 1 size 99.88MiB used 12.00MiB path /dev/sda1 > > > > Btrfs v3.18 > > > > Usually we should try to turn that text into structs, otherwise every > > consumer of libguestfs has to write parsing code themselves. > > > > *However* in this case I'm having a hard time understanding why anyone > > would want to use the API. Most likely if they were debugging a btrfs > > problem, they'd be using 'virt-rescue' and would be able to run > > arbitrary commands. Some of the other information, like UUID and > > label is available through other APIs (eg. get-uuid). Other > > information like the layout of devices could be modelled with some > > very complex structs on the libguestfs side, but does anyone need > > this? > > > > btrfs filesystem show could tell user info when they what to use: > btrfs filesystem balance > > What's more, > it could tell us if some of the btrfs device is missing: > If we had 10 btrfs devices but one of them is missing, we could use > btrfs-filesystem-show to find out which one is missing in a convenient way.I don't doubt that it's useful, but these kind of user-facing debugging operations would probably be done using 'virt-rescue'. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
Chen, Hanxiao
2015-Mar-08 11:45 UTC
Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show
> -----Original Message----- > From: Richard W.M. Jones [mailto:rjones@redhat.com] > Sent: Friday, March 06, 2015 4:43 PM > To: Chen, Hanxiao/陈 晗霄 > Cc: libguestfs@redhat.com > Subject: Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show > > On Fri, Mar 06, 2015 at 07:39:36AM +0000, Chen, Hanxiao wrote: > > > > > > > -----Original Message----- > > > From: Richard W.M. Jones [mailto:rjones@redhat.com] > > > Sent: Thursday, March 05, 2015 8:59 PM > > > To: Chen, Hanxiao/陈 晗霄 > > > Cc: libguestfs@redhat.com > > > Subject: Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show > > > > > > AFAICT this API doesn't work: > > > > > > $ ./run guestfish -N fs:btrfs btrfs-filesystem-show /dev/sda1 > > > libguestfs: error: btrfs_filesystem_show: /dev/sda1: > > > > > > > That might be a bug of btrfs-progs. v3.17 works fine. > > I'll fix it. > > > > > When I tried the btrfs-filesystem-show-all API, I see a lot of > > > structure in the output: > > > > > > $ ./run guestfish -N fs:btrfs btrfs-filesystem-show-all > > > Label: none uuid: f7754d86-baa1-40e7-a563-46976e81d64c > > > Total devices 1 FS bytes used 28.00KiB > > > devid 1 size 99.88MiB used 12.00MiB path /dev/sda1 > > > > > > Btrfs v3.18 > > > > > > Usually we should try to turn that text into structs, otherwise every > > > consumer of libguestfs has to write parsing code themselves. > > > > > > *However* in this case I'm having a hard time understanding why anyone > > > would want to use the API. Most likely if they were debugging a btrfs > > > problem, they'd be using 'virt-rescue' and would be able to run > > > arbitrary commands. Some of the other information, like UUID and > > > label is available through other APIs (eg. get-uuid). Other > > > information like the layout of devices could be modelled with some > > > very complex structs on the libguestfs side, but does anyone need > > > this? > > > > > > > btrfs filesystem show could tell user info when they what to use: > > btrfs filesystem balance > > > > What's more, > > it could tell us if some of the btrfs device is missing: > > If we had 10 btrfs devices but one of them is missing, we could use > > btrfs-filesystem-show to find out which one is missing in a convenient way. > > I don't doubt that it's useful, but these kind of user-facing > debugging operations would probably be done using 'virt-rescue'. >Thanks for the clarification, I see. Regards, - Chen
Chen, Hanxiao
2015-Mar-25 09:39 UTC
Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show
> -----Original Message----- > From: Richard W.M. Jones [mailto:rjones@redhat.com] > Sent: Friday, March 06, 2015 4:43 PM > To: Chen, Hanxiao/陈 晗霄 > Cc: libguestfs@redhat.com > Subject: Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show > > On Fri, Mar 06, 2015 at 07:39:36AM +0000, Chen, Hanxiao wrote: > > > > > > > -----Original Message----- > > > From: Richard W.M. Jones [mailto:rjones@redhat.com] > > > Sent: Thursday, March 05, 2015 8:59 PM > > > To: Chen, Hanxiao/陈 晗霄 > > > Cc: libguestfs@redhat.com > > > Subject: Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show > > > > > > AFAICT this API doesn't work: > > > > > > $ ./run guestfish -N fs:btrfs btrfs-filesystem-show /dev/sda1 > > > libguestfs: error: btrfs_filesystem_show: /dev/sda1: > > > > > > > That might be a bug of btrfs-progs. v3.17 works fine. > > I'll fix it. > > > > > When I tried the btrfs-filesystem-show-all API, I see a lot of > > > structure in the output: > > > > > > $ ./run guestfish -N fs:btrfs btrfs-filesystem-show-all > > > Label: none uuid: f7754d86-baa1-40e7-a563-46976e81d64c > > > Total devices 1 FS bytes used 28.00KiB > > > devid 1 size 99.88MiB used 12.00MiB path /dev/sda1 > > > > > > Btrfs v3.18 > > > > > > Usually we should try to turn that text into structs, otherwise every > > > consumer of libguestfs has to write parsing code themselves. > > > > > > *However* in this case I'm having a hard time understanding why anyone > > > would want to use the API. Most likely if they were debugging a btrfs > > > problem, they'd be using 'virt-rescue' and would be able to run > > > arbitrary commands. Some of the other information, like UUID and > > > label is available through other APIs (eg. get-uuid). Other > > > information like the layout of devices could be modelled with some > > > very complex structs on the libguestfs side, but does anyone need > > > this? > > > > > > > btrfs filesystem show could tell user info when they what to use: > > btrfs filesystem balance > > > > What's more, > > it could tell us if some of the btrfs device is missing: > > If we had 10 btrfs devices but one of them is missing, we could use > > btrfs-filesystem-show to find out which one is missing in a convenient way. > > I don't doubt that it's useful, but these kind of user-facing > debugging operations would probably be done using 'virt-rescue'. >Hi, Rich I think we should have a API btrfs_filesystem_show_all: #btrfs fi show Label: none uuid: e34452fa-5444-4e7b-9faa-c26fa1b83686 Total devices 1 FS bytes used 176.00KiB devid 1 size 1.00GiB used 236.00MiB path /dev/sda6 Label: none uuid: 9cdb73b9-d5b9-46c4-9395-25a952e7922a Total devices 5 FS bytes used 112.00KiB devid 1 size 10.00GiB used 1.02GiB path /dev/sdb devid 2 size 10.00GiB used 2.00GiB path /dev/sdd devid 3 size 10.00GiB used 2.00GiB path /dev/sde ... If VM has two btrfs filesystem, this API could tell user which device runs on which btrfs fs. For btrfs [fs1] with uuid 9cdb73b9-d5b9-46c4-9395-25a952e7922a, we could know it runs on: /dev/[sdb|sdd|sde] -> img1,img2,img3 Other one [fs2] runs on /dev/sda6 -> img4 If we want to do something like backup part of btrfs fs data, such as we want to drop data of fs2, we could know which VM image should be backup. AFAIK, it's the only way we could know this. So I think we should provide API: btrfs_filesystem_show_all https://www.redhat.com/archives/libguestfs/2015-March/msg00029.html Regards, - Chen
Richard W.M. Jones
2015-Mar-25 13:17 UTC
Re: [Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show
On Wed, Mar 25, 2015 at 09:39:35AM +0000, Chen, Hanxiao wrote:> So I think we should provide API:OK, but ...> btrfs_filesystem_show_all > https://www.redhat.com/archives/libguestfs/2015-March/msg00029.html... you can't just dump out the text output of btrfs filesystem show and require API users to parse it. It has to be parsed by the daemon into some suitable structures. It's a lot of work, but if there is a patch I'll take a look. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top