[Libguestfs] [PATCH 1/2] New API: btrfs_filesystem_show

Chen, Hanxiao chenhanxiao at cn.fujitsu.com
Wed Mar 25 09:39:35 UTC 2015



> -----Original Message-----
> From: Richard W.M. Jones [mailto:rjones at redhat.com]
> Sent: Friday, March 06, 2015 4:43 PM
> To: Chen, Hanxiao/陈 晗霄
> Cc: libguestfs at 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 at redhat.com]
> > > Sent: Thursday, March 05, 2015 8:59 PM
> > > To: Chen, Hanxiao/陈 晗霄
> > > Cc: libguestfs at 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




More information about the Libguestfs mailing list