From: Dave Chinner <david@fromorbit.com>
To: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: hch@infradead.org, viro@zeniv.linux.org.uk, adilger@sun.com,
corbet@lwn.net, serue@us.ibm.com, neilb@suse.de,
linux-fsdevel@vger.kernel.org, sfrench@us.ibm.com,
philippe.deniel@CEA.FR, linux-kernel@vger.kernel.org
Subject: Re: [PATCH -V7 6/9] ext4: Add get_fsid callback
Date: Thu, 13 May 2010 13:11:33 +1000 [thread overview]
Message-ID: <20100513031133.GF13617@dastard> (raw)
In-Reply-To: <1273679444-14903-7-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
On Wed, May 12, 2010 at 09:20:41PM +0530, Aneesh Kumar K.V wrote:
> Acked-by: Serge Hallyn <serue@us.ibm.com>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> ---
> fs/ext4/super.c | 15 +++++++++++++++
> 1 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index e14d22c..fc7d464 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -1049,6 +1049,19 @@ static int bdev_try_to_free_page(struct super_block *sb, struct page *page,
> return try_to_free_buffers(page);
> }
>
> +static int ext4_get_fsid(struct super_block *sb, struct uuid *fsid)
> +{
> + struct ext4_sb_info *sbi = EXT4_SB(sb);
> + struct ext4_super_block *es = sbi->s_es;
> +
> + memcpy(fsid->uuid, es->s_uuid, sizeof(fsid->uuid));
> + /*
> + * We may want to make sure we return error if the s_uuid is not
> + * exactly unique
> + */
> + return 0;
> +}
> +
> #ifdef CONFIG_QUOTA
> #define QTYPE2NAME(t) ((t) == USRQUOTA ? "user" : "group")
> #define QTYPE2MOPT(on, t) ((t) == USRQUOTA?((on)##USRJQUOTA):((on)##GRPJQUOTA))
> @@ -1109,6 +1122,7 @@ static const struct super_operations ext4_sops = {
> .quota_write = ext4_quota_write,
> #endif
> .bdev_try_to_free_page = bdev_try_to_free_page,
> + .get_fsid = ext4_get_fsid,
> };
>
> static const struct super_operations ext4_nojournal_sops = {
> @@ -1128,6 +1142,7 @@ static const struct super_operations ext4_nojournal_sops = {
> .quota_write = ext4_quota_write,
> #endif
> .bdev_try_to_free_page = bdev_try_to_free_page,
> + .get_fsid = ext4_get_fsid,
> };
This all looks pretty simple - can you add XFS support to this
interface (uuid is in XFS_M(sb)->m_sb.sb_uuid) so that it can be
tested to work on multiple filesystems.
FWIW, I didn't get patch 0 of this series, so I'll comment on
one line of it right here because it is definitely relevant:
> I am also looking at getting xfsprogs libhandle.so on top of these
> syscalls.
If you plan to modify libhandle to use these syscalls, then you need
to guarantee:
1. XFS support for the syscalls
2. the handle format, lifecycle and protections for XFS
handles are *exactly* the same as the current XFS
handles. i.e. there's a fixed userspace API that
cannot be broken.
3. you don't break any of the other XFS specific handle
interfaces that aren't implemented by the new syscalls
3. You don't break and existing XFS utilites - dump/restore,
and fsr come to mind immediately.
4. that you'll fix the xfstests that may break because of the
change
5. that you'll write new tests for xfstests that validates
that the libhandle API works correctly and that handle
formats and lifecycles do not get accidentally changed in
future.
That's a lot of work and, IMO, is completely pointless. All we'd get
out of it is more complexity, bloat, scope for regressions and a
biger test matrix, and we wouldn't have any new functionality to
speak of.
However, this leads to the bigger question: what's the point of a
new interface if all it ends up getting used for is to re-implement
part of an existing library?
I know this goes against the severe ext4 NIH syndrome that seems to
pervade anything that XFS has already implemented, but lets be
realistic here. If you want applications to use libhandle then there
is no need for a new kernel API - it already has a perfectly
funtional one that has stood the test of time, and all it requires
is moving the XFS ioctl handler up into the VFS and modifying the
implementation to use existing filesystem callouts.
FWIW, there really isn't anything XFS specific to these handle
functions, so moving it to the VFS should be pretty easy, and that
will result in a full libhandle support for all filesystems that
provide NFS support. That, IMO, is a far superior result than having
two different handle interfaces that have different functionality and
semantics, neither of which have wide fs support...
So please make up your mind - either the handle interface is a
completely new interface with new userspace and kernel APIs,
or it uses the existing userspace and kernel APIs. Anything else
does not make sense.
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2010-05-13 3:11 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-12 15:50 [PATCH -V7 0/8] Generic name to handle and open by handle syscalls Aneesh Kumar K.V
2010-05-12 15:50 ` [PATCH -V7 1/9] exportfs: Return the minimum required handle size Aneesh Kumar K.V
2010-05-12 15:50 ` [PATCH -V7 2/9] vfs: Add uuid based vfsmount lookup Aneesh Kumar K.V
2010-05-12 15:50 ` [PATCH -V7 3/9] vfs: Add name to file handle conversion support Aneesh Kumar K.V
2010-05-12 21:49 ` Andreas Dilger
2010-05-12 22:43 ` Neil Brown
2010-05-13 6:17 ` Aneesh Kumar K. V
2010-05-13 7:11 ` Neil Brown
2010-05-13 8:30 ` Andreas Dilger
2010-05-13 8:47 ` Neil Brown
2010-05-13 14:21 ` Aneesh Kumar K. V
2010-05-13 18:17 ` Aneesh Kumar K. V
2010-05-13 22:54 ` Andreas Dilger
2010-05-14 17:25 ` Al Viro
2010-05-14 18:18 ` Aneesh Kumar K. V
2010-05-14 18:40 ` Al Viro
2010-05-15 5:31 ` Aneesh Kumar K. V
2010-05-15 6:00 ` Al Viro
2010-05-15 15:28 ` Aneesh Kumar K. V
2010-05-13 0:20 ` Dave Chinner
2010-05-13 6:23 ` Aneesh Kumar K. V
2010-05-13 7:31 ` Dave Chinner
2010-05-13 5:56 ` Aneesh Kumar K. V
2010-05-13 14:24 ` Aneesh Kumar K. V
2010-05-12 15:50 ` [PATCH -V7 4/9] vfs: Add open by file handle support Aneesh Kumar K.V
2010-05-12 23:44 ` Neil Brown
2010-05-13 6:09 ` Dave Chinner
2010-05-13 6:37 ` Aneesh Kumar K. V
2010-05-14 10:41 ` Dave Chinner
2010-05-12 15:50 ` [PATCH -V7 5/9] vfs: Add freadlink syscall Aneesh Kumar K.V
2010-05-13 1:43 ` Neil Brown
2010-05-13 6:25 ` Aneesh Kumar K. V
2010-05-13 6:56 ` Neil Brown
2010-05-13 7:34 ` Aneesh Kumar K. V
2010-05-13 8:09 ` Neil Brown
2010-05-14 11:18 ` Aneesh Kumar K. V
2010-05-12 15:50 ` [PATCH -V7 6/9] ext4: Add get_fsid callback Aneesh Kumar K.V
2010-05-13 3:11 ` Dave Chinner [this message]
2010-05-13 6:32 ` Aneesh Kumar K. V
2010-05-14 1:44 ` Dave Chinner
2010-05-15 6:09 ` Aneesh Kumar K. V
2010-05-14 17:32 ` Coly Li
2010-05-14 18:21 ` Aneesh Kumar K. V
2010-05-14 19:08 ` Coly Li
2010-05-12 15:50 ` [PATCH -V7 7/9] x86: Add new syscalls for x86_32 Aneesh Kumar K.V
2010-05-12 15:50 ` [PATCH -V7 8/9] x86: Add new syscalls for x86_64 Aneesh Kumar K.V
2010-05-12 15:50 ` [PATCH -V7 9/9] ext3: Add get_fsid callback Aneesh Kumar K.V
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=20100513031133.GF13617@dastard \
--to=david@fromorbit.com \
--cc=adilger@sun.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=corbet@lwn.net \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
--cc=philippe.deniel@CEA.FR \
--cc=serue@us.ibm.com \
--cc=sfrench@us.ibm.com \
--cc=viro@zeniv.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).