All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Mason <chris.mason@oracle.com>
To: btrfs-devel@arbitraryconstant.com
Cc: linux-btrfs@vger.kernel.org
Subject: Re: btrfs device management
Date: Sun, 8 Jun 2008 21:45:59 -0400	[thread overview]
Message-ID: <200806082145.59734.chris.mason@oracle.com> (raw)
In-Reply-To: <62325.68.145.107.21.1212882817.squirrel@avalon.arbitraryconstant.com>

On Saturday 07 June 2008, btrfs-devel@arbitraryconstant.com wrote:
> Hello,
>
> I've noticed one mounts btrfs filesystems by device name (eg /dev/sda1),
> even in a multi-device filesystem. I see there's a uuid for the filesystem
> in btrfs_super_block, so this is safe to do even if the devices change
> names in the future, but it's somewhat sub-optimal in that one's fstab
> won't necessarily continue to work. Even if the devices themselves have
> uuid's that get used in fstab, a given device could just as easily go away
> in the future.
>
> I also see the standard Linux mount command is used here, and it's clearly
> designed around the assumption of a 1:1 relationship between block devices
> and filesystems, with multi-device stuff happening at another layer. One
> assumes the btrfs code in the kernel just grabs the uuid from that device
> and uses it to assemble the filesystem from whatever devices are also
> members.
>
> My question is: are there plans to support mounting by uuid of the
> filesystem directly, or by providing something like /dev/btrfs/XXXXX to
> make the mount command happy? Wherever this has been done in Linux to date
> (eg filesystems, software RAID, LVMs, etc) it's almost always been a good
> thing, it would be a step down to eg worry about what order drives were
> plugged in.
>
> Thanks for any responses. :)

Btrfs does something similar to LVM for device management, there is a scanning 
program that finds btrfs volumes and populates a kernel table matching 
filesystem uuid to devices.  So, if /dev/sdb becomes /dev/sdc, btrfs will 
still do the right thing.

Btrfs doesn't actually store device path names in the FS metadata, so it has 
no idea that /dev/sdb is part of your FS.  It just scans super blocks and is 
able to mount them wherever it finds them.

This means the device you pass to mount is going to move around as the devices 
move which is kind of awkward.  Longer term, it'll move to a udev helper 
style setup that puts links into a /dev/btrfs/by-uuid and /dev/btrfs/by-label

See the btrfs-show command for an example of how the scanning is done if 
you're in a patching mood.  It could populate the /dev/btrfs directory 
directly.

-chris

  reply	other threads:[~2008-06-09  1:45 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-07 23:53 btrfs device management btrfs-devel
2008-06-09  1:45 ` Chris Mason [this message]
2008-06-09  6:43 ` Christoph Hellwig
2008-06-09 10:06   ` Chris Mason
2008-06-09 13:45     ` Miguel Sousa Filipe
2008-06-09 13:52       ` Chris Mason
2008-06-09 15:37         ` Miguel Sousa Filipe
2008-06-09 16:19           ` Christian Hesse
2008-06-09 16:22             ` Chris Mason

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=200806082145.59734.chris.mason@oracle.com \
    --to=chris.mason@oracle.com \
    --cc=btrfs-devel@arbitraryconstant.com \
    --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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.