Linux-BTRFS Archive on lore.kernel.org
 help / color / Atom feed
From: Goffredo Baroncelli <kreijack@libero.it>
To: linux-btrfs@vger.kernel.org
Cc: Hugo Mills <hugo-lkml@carfax.org.uk>
Subject: RFC: exporting info via sysfs [was Re: [patch 0/2] Control filesystem balances (kernel side)]
Date: Thu, 4 Nov 2010 23:55:24 +0100
Message-ID: <201011042355.25214.kreijack@libero.it> (raw)
In-Reply-To: <201010301944.35962.kreijack@libero.it>

Hi all,

I make a prototype for exporting info from btrfs via sysfs.
Under /sys/btrfs were created two directories, named "fs" and "devices".


/sys/btrfs/fs/<fs-uuid>/
                         label		-> filesystem label
                         num_devices    -> total number of devices
                         open_devices   -> number of opened devices
                         [...]
/sys/btrfs/devices/<dev-uuid>/
                         devid          -> btrfs device number
                         fsid           -> filesystem uuid (fs-uuid)
                         major, minor   -> major minor
                         name           -> device name
                         writeable      -> is the device writeable

where <fs-uuid> is the filesystem uuid, and <dev-uuid> is the device uuid. The 
link between devices and filesystem is the <fsid> parameter of a device.

I create these structure because we should handle the case were the devices 
are present (like after a "btrfs device scan") but the filesystem aren't 
mounted.

In this case the devices/ subdirectory is populated. Instead the fs/ 
subdirectory is empty.

I don't attach a patch because the code is very ugly.
Comments ? Thoughts ?
        
Below an example of use.

$ /sbin/blkid img*
img0.img: UUID="099ea4b7-96dd-41fc-91df-0d1ab0066e05" 
UUID_SUB="1103c4e9-2dba-4b58-82ea-7c7c633fe04a" TYPE="btrfs" 
img1.img: UUID="099ea4b7-96dd-41fc-91df-0d1ab0066e05" 
UUID_SUB="d677e338-5eb0-4373-a540-78b9e7938987" TYPE="btrfs" 
img2.img: UUID="099ea4b7-96dd-41fc-91df-0d1ab0066e05" 
UUID_SUB="de5e3fbf-2400-438c-95b5-e4c876d96bed" TYPE="btrfs" 
img3.img: UUID="099ea4b7-96dd-41fc-91df-0d1ab0066e05" UUID_SUB="019b1657-
edad-488e-ad72-ccd2ea92e3ac" TYPE="btrfs"

$ (cd /sys/fs/btrfs/; for i in */*/*; do echo -e "$i:\t$(cat $i)"; done )          
devices/019b1657-edad-488e-ad72-ccd2ea92e3ac/devid:     4
devices/019b1657-edad-488e-ad72-ccd2ea92e3ac/fsid:      
099ea4b7-96dd-41fc-91df-0d1ab0066e05
devices/019b1657-edad-488e-ad72-ccd2ea92e3ac/major:     98
devices/019b1657-edad-488e-ad72-ccd2ea92e3ac/minor:     64
devices/019b1657-edad-488e-ad72-ccd2ea92e3ac/name:      /dev/ubde
devices/019b1657-edad-488e-ad72-ccd2ea92e3ac/writeable: 1
devices/1103c4e9-2dba-4b58-82ea-7c7c633fe04a/devid:     1
devices/1103c4e9-2dba-4b58-82ea-7c7c633fe04a/fsid:      
099ea4b7-96dd-41fc-91df-0d1ab0066e05
devices/1103c4e9-2dba-4b58-82ea-7c7c633fe04a/major:     98
devices/1103c4e9-2dba-4b58-82ea-7c7c633fe04a/minor:     16
devices/1103c4e9-2dba-4b58-82ea-7c7c633fe04a/name:      /dev/ubdb
devices/1103c4e9-2dba-4b58-82ea-7c7c633fe04a/writeable: 1
devices/d677e338-5eb0-4373-a540-78b9e7938987/devid:     2
devices/d677e338-5eb0-4373-a540-78b9e7938987/fsid:      
099ea4b7-96dd-41fc-91df-0d1ab0066e05
devices/d677e338-5eb0-4373-a540-78b9e7938987/major:     98
devices/d677e338-5eb0-4373-a540-78b9e7938987/minor:     32
devices/d677e338-5eb0-4373-a540-78b9e7938987/name:      /dev/ubdc
devices/d677e338-5eb0-4373-a540-78b9e7938987/writeable: 1
devices/de5e3fbf-2400-438c-95b5-e4c876d96bed/devid:     3
devices/de5e3fbf-2400-438c-95b5-e4c876d96bed/fsid:      
099ea4b7-96dd-41fc-91df-0d1ab0066e05
devices/de5e3fbf-2400-438c-95b5-e4c876d96bed/major:     98
devices/de5e3fbf-2400-438c-95b5-e4c876d96bed/minor:     48
devices/de5e3fbf-2400-438c-95b5-e4c876d96bed/name:      /dev/ubdd
devices/de5e3fbf-2400-438c-95b5-e4c876d96bed/writeable: 1
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/blocks_used:    32768
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/blocksize:      4096
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/label:
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/num_devices:    4
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/open_devices:   4
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/rw_devices:     4
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/total_blocks:   2222981120
fs/099ea4b7-96dd-41fc-91df-0d1ab0066e05/total_devices:  4



On Saturday, 30 October, 2010, you (Goffredo Baroncelli) wrote:
> On Saturday, 30 October, 2010, Hugo Mills wrote:
> >    These two patches give a degree of control over balance operations.
> > The first makes it possible to get an idea of how much work remains to
> > do, by tracking the number of block groups (chunks) that need to be
> > moved/rewritten. The second patch allows a running balance operation
> > to be cancelled when the current block group has been moved.
> > 
> >    One fundamental question, though -- is the progress monitor
> > function best implemented as an ioctl, as I've done here, or should it
> > be two or three sysfs files? I'm thinking of /proc/mdstat...
> > Obviously, /proc/mdstat would never get into /sys, but exposing the
> > "expected" and "remaining" values as files has an attractive
> > simplicity to it.
> 
> 
> I like the idea that these info should be put under sysfs. Something like
> 
> /sys/btrfs/<filesystem-uuid>/
>                              balance	-> info on balancing
>                              devices	-> list of device (a directory of
>                                            links or a file which contains 
>                                            the list of devices)
>                              subvolumes/ -> info on subvolume(s)
>                              label       -> label of the filesystem
>                              <other btrfs filesystem related knoba>
> 
>                                            
> 
> 
> Obviously we need another btrfs command to extract an uuid from a btrfs 
> filesystem like:
> 
> # btrfs filesystem get-uuid /path/to/a/btrfs/filesystem
> f9b9c413-0dc8-4e3f-94f2-86faa702f519
> 
> > 
> >    The user-space side of things are in a separate patch series, to
> > follow.
> > 
> >    Please be gentle with me, this is my first (serious, non-trivial)
> > kernel patch. :)
> > 
> >    Hugo.
> > 
> > 
> > -- 
> > === Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
> >   PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
> >    --- "No!  My collection of rare, incurable diseases! Violated!" ---   
> > 
> > --
> > 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
> > 
> 
> 
> -- 
> gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) 
<kreijack@inwind.it>
> Key fingerprint = 4769 7E51 5293 D36C 814E  C054 BF04 F161 3DC5 0512
> 
> 


-- 
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijack@inwind.it>
Key fingerprint = 4769 7E51 5293 D36C 814E  C054 BF04 F161 3DC5 0512

  parent reply index

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-30  0:07 [patch 0/2] Control filesystem balances (kernel side) Hugo Mills
2010-10-30  0:07 ` [patch 1/2] Balance progress monitoring Hugo Mills
2010-10-30 13:37   ` Hugo Mills
2010-10-30 13:39   ` [patch 1/2] Balance progress monitoring (updated) Hugo Mills
2010-11-01  8:06     ` liubo
2010-11-01 12:55       ` Hugo Mills
2010-11-02  0:51         ` liubo
2010-10-30  0:07 ` [patch 2/2] Cancel filesystem balance Hugo Mills
2010-10-30 17:44 ` [patch 0/2] Control filesystem balances (kernel side) Goffredo Baroncelli
2010-11-01 12:58   ` Xavier Nicollet
2010-11-01 12:52     ` Tomasz Torcz
2010-11-01 13:05   ` Hugo Mills
2010-11-04 22:55   ` Goffredo Baroncelli [this message]
2010-11-05 12:41     ` RFC: exporting info via sysfs [was Re: [patch 0/2] Control filesystem balances (kernel side)] Hugo Mills

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201011042355.25214.kreijack@libero.it \
    --to=kreijack@libero.it \
    --cc=hugo-lkml@carfax.org.uk \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-BTRFS Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-btrfs/0 linux-btrfs/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-btrfs linux-btrfs/ https://lore.kernel.org/linux-btrfs \
		linux-btrfs@vger.kernel.org
	public-inbox-index linux-btrfs

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-btrfs


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git