From: David Sterba <dsterba@suse.cz>
To: Anand Jain <anand.jain@oracle.com>
Cc: systemd-devel@lists.freedesktop.org,
"linux-btrfs@vger.kernel.org >> linux-btrfs"
<linux-btrfs@vger.kernel.org>,
lennart@poettering.net
Subject: Re: [survey] BTRFS_IOC_DEVICES_READY return status
Date: Mon, 15 Jun 2015 17:01:57 +0200 [thread overview]
Message-ID: <20150615150156.GO6761@suse.cz> (raw)
In-Reply-To: <557ADBAE.9040407@oracle.com>
On Fri, Jun 12, 2015 at 09:16:30PM +0800, Anand Jain wrote:
> BTRFS_IOC_DEVICES_READY is to check if all the required devices
> are known by the btrfs kernel, so that admin/system-application
> could mount the FS. It is checked against a device in the argument.
>
> However the actual implementation is bit more than just that,
> in the way that it would also scan and register the device
> provided in the argument (same as btrfs device scan subcommand
> or BTRFS_IOC_SCAN_DEV ioctl).
>
> So BTRFS_IOC_DEVICES_READY ioctl isn't a read/view only ioctl,
> but its a write command as well.
The implemented DEVICES_READY behaviour is intentional, but not a good
example of ioctl interface design. I asked for a more generic interface
to querying devices when this patch was submitted but to no outcome.
> Next, since in the kernel we only check if total_devices
> (read from SB) is equal to num_devices (counted in the list)
> to state the status as 0 (ready) or 1 (not ready). But this
> does not work in rest of the device pool state like missing,
> seeding, replacing since total_devices is actually not equal
> to num_devices in these state but device pool is ready for
> the mount and its a bug which is not part of this discussions.
That's an example why the single-shot ioctl is bad - it relies on some
internal state that's otherwise nontrivial to get.
> Questions:
>
> - Do we want BTRFS_IOC_DEVICES_READY ioctl to also scan and
> register the device provided (same as btrfs device scan
> command or the BTRFS_IOC_SCAN_DEV ioctl)
> OR can BTRFS_IOC_DEVICES_READY be read-only ioctl interface
> to check the state of the device pool. ?
This has been mentioned in the thread, we cannot change the ioctl that
way. Extensions are possible as far as they stay backward compatible
without changes to the existing users.
> - If the the device in the argument is already mounted,
> can it straightaway return 0 (ready) ? (as of now it would
> again independently read the SB determine total_devices
> and check against num_devices.
We can do that, looks like a safe optimization.
> - What should be the expected return when the FS is mounted
> and there is a missing device.
I think the current ioctl cannot give a good answer to that, similar to
the seeding or dev-replace case. We'd need an improved ioctl or do it
via sysfs which is my preference at the moment.
prev parent reply other threads:[~2015-06-15 15:01 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-12 13:16 [survey] BTRFS_IOC_DEVICES_READY return status Anand Jain
2015-06-12 18:04 ` [systemd-devel] " Andrei Borzenkov
2015-06-12 20:08 ` Goffredo Baroncelli
2015-06-13 9:35 ` Anand Jain
2015-06-13 15:09 ` Goffredo Baroncelli
[not found] ` <pan$63061$a3cdf5f6$a390adbd$e6097ad9@cox.net>
2015-06-14 19:44 ` Goffredo Baroncelli
2015-06-15 10:46 ` Lennart Poettering
2015-06-15 17:23 ` Goffredo Baroncelli
2015-06-15 17:38 ` Lennart Poettering
2015-06-17 19:10 ` Goffredo Baroncelli
2015-06-17 21:02 ` Lennart Poettering
2015-06-18 2:40 ` Andrei Borzenkov
2015-06-14 5:48 ` Andrei Borzenkov
2015-06-15 10:41 ` Lennart Poettering
2015-06-13 7:20 ` btrfs filesystem show confused when label is same as mountpoint Sjoerd
2015-06-13 9:51 ` Duncan
2015-06-25 16:37 ` David Sterba
2015-06-15 10:27 ` [survey] BTRFS_IOC_DEVICES_READY return status Lennart Poettering
2015-06-15 15:01 ` David Sterba [this message]
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=20150615150156.GO6761@suse.cz \
--to=dsterba@suse.cz \
--cc=anand.jain@oracle.com \
--cc=lennart@poettering.net \
--cc=linux-btrfs@vger.kernel.org \
--cc=systemd-devel@lists.freedesktop.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.