linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kent Overstreet <kent.overstreet@linux.dev>
To: Dave Chinner <david@fromorbit.com>
Cc: NeilBrown <neilb@suse.de>, Donald Buczek <buczek@molgen.mpg.de>,
	linux-bcachefs@vger.kernel.org,
	Stefan Krueger <stefan.krueger@aei.mpg.de>,
	David Howells <dhowells@redhat.com>,
	linux-fsdevel@vger.kernel.org
Subject: Re: file handle in statx (was: Re: How to cope with subvolumes and snapshots on muti-user systems?)
Date: Tue, 12 Dec 2023 18:42:00 -0500	[thread overview]
Message-ID: <20231212234200.6fbcjjfrozuxnoj4@moria.home.lan> (raw)
In-Reply-To: <ZXjnffHOo+JY/M4b@dread.disaster.area>

On Wed, Dec 13, 2023 at 10:06:37AM +1100, Dave Chinner wrote:
> On Wed, Dec 13, 2023 at 09:31:13AM +1100, NeilBrown wrote:
> > On Wed, 13 Dec 2023, Dave Chinner wrote:
> > > 
> > > What you are suggesting is that we now duplicate filehandle encoding
> > > into every filesystem's statx() implementation.  That's a bad
> > > trade-off from a maintenance, testing and consistency POV because
> > > now we end up with lots of individual, filehandle encoding
> > > implementations in addition to the generic filehandle
> > > infrastructure that we all have to test and validate.
> > 
> > Not correct.  We are suggesting an interface, not an implementation.
> > Here you are proposing a suboptimal implementation, pointing out its
> > weakness, and suggesting the has consequences for the interface
> > proposal.  Is that the strawman fallacy?
> 
> No, you simply haven't followed deep enough into the rabbit hole to
> understand Kent was suggesting potential implementation details to
> address hot path performance concerns with filehandle encoding.
> 
> > vfs_getattr_nosec could, after calling i_op->getattr, check if
> > STATX_HANDLE is set in request_mask but not in ->result_mask.
> > If so it could call exportfs_encode_fh() and handle the result.
> >
> > No filesystem need to be changed.
> 
> Well, yes, it's pretty damn obvious that is exactly what I've been
> advocating for here - if we are going to put filehandles in statx(),
> then it must use the same infrastructure as name_to_handle_at().
> i.e. calling exportfs_encode_fh(EXPORT_FH_FID) to generate the
> filehandle.
> 
> The important discussion detail you've missed about
> exportfs_encode_fh() is that it *requires* adding a new indirect
> call (via export_ops->encode_fh) in the statx path to encode the
> filehandle, and that's exactly what Kent was suggesting we can code
> the implementation to avoid.
> 
> Avoiding an indirect function call is an implementation detail, not
> an interface design requirement.
> 
> And the only way to avoid adding new indirect calls to encoding
> filesystem specific filehandles is to implement the encoding in the
> existing individual filesystem i_op->getattr methods. i.e. duplicate
> the filehandle encoding in the statx path rather than use
> exportfs_encode_fh().....

I was thinking along the lines of coming up with a common fh type for
local filesystems (why exactly do we need 15?) and adding a volume ID to
the VFS inode so this could live entirely in VS code for most
filesystems, but that's an option too.

Might be the best one, since btrfs and bcachefs actually do want a
different fh type (btrfs: 64 bit subvol, 64 bit ino, bcachefs: 64 bit
ino, 32 bit subvol, 32 bit generation), and we don't want to generate a
bigger fh than necessary for when it's being consumed by a stacking
filesystem that has to generate a new fh by concatanating something.

  reply	other threads:[~2023-12-12 23:42 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <12f711f9-70a2-408e-8588-2839e599b668@molgen.mpg.de>
     [not found] ` <170181366042.7109.5045075782421670339@noble.neil.brown.name>
     [not found]   ` <97375d00-4bf7-4c4f-96ec-47f4078abb3d@molgen.mpg.de>
     [not found]     ` <170199821328.12910.289120389882559143@noble.neil.brown.name>
     [not found]       ` <20231208013739.frhvlisxut6hexnd@moria.home.lan>
     [not found]         ` <170200162890.12910.9667703050904306180@noble.neil.brown.name>
     [not found]           ` <20231208024919.yjmyasgc76gxjnda@moria.home.lan>
     [not found]             ` <630fcb48-1e1e-43df-8b27-a396a06c9f37@molgen.mpg.de>
     [not found]               ` <20231208200247.we3zrwmnkwy5ibbz@moria.home.lan>
     [not found]                 ` <170233460764.12910.276163802059260666@noble.neil.brown.name>
2023-12-11 23:32                   ` file handle in statx (was: Re: How to cope with subvolumes and snapshots on muti-user systems?) Kent Overstreet
2023-12-11 23:53                     ` NeilBrown
2023-12-12  0:05                       ` Kent Overstreet
2023-12-12  0:59                         ` NeilBrown
2023-12-12  1:10                           ` Kent Overstreet
2023-12-12  2:13                             ` NeilBrown
2023-12-12  2:24                               ` Kent Overstreet
2023-12-12  9:08                               ` Christian Brauner
2023-12-12  5:53                           ` Dave Chinner
2023-12-12  6:32                             ` Amir Goldstein
2023-12-12  8:56                               ` Christian Brauner
2023-12-12 15:16                                 ` Kent Overstreet
2023-12-12 15:29                                   ` Christian Brauner
2023-12-12 15:35                                     ` Kent Overstreet
2023-12-12 15:38                                       ` Miklos Szeredi
2023-12-12 15:43                                         ` Kent Overstreet
2023-12-12 15:57                                           ` Miklos Szeredi
2023-12-12 16:08                                             ` Kent Overstreet
2023-12-12 16:30                                               ` Miklos Szeredi
2023-12-12 16:41                                                 ` Kent Overstreet
2023-12-12 21:53                                                 ` NeilBrown
2023-12-13  9:41                                               ` Christian Brauner
2023-12-12 21:46                                         ` NeilBrown
2023-12-13  9:47                                           ` Christian Brauner
2023-12-13 10:04                                             ` Christian Brauner
2023-12-14 22:47                                             ` NeilBrown
2023-12-15  0:36                                               ` Kent Overstreet
2023-12-12  9:10                               ` David Howells
2023-12-12  9:23                                 ` Christian Brauner
2023-12-12  9:28                                   ` Miklos Szeredi
2023-12-12  9:35                                     ` Christian Brauner
2023-12-12  9:42                                       ` Miklos Szeredi
2023-12-12 13:47                                         ` Christian Brauner
2023-12-12 14:06                                           ` Miklos Szeredi
2023-12-12 15:24                                             ` Christian Brauner
2023-12-12 15:28                                       ` Kent Overstreet
2023-12-12  9:46                                 ` David Howells
2023-12-12  9:10                             ` file handle in statx Donald Buczek
2023-12-12 15:20                               ` Theodore Ts'o
2023-12-12 17:15                                 ` Frank Filz
2023-12-12 17:44                                   ` Kent Overstreet
2023-12-12 18:17                                     ` Amir Goldstein
2023-12-12 19:18                                       ` Frank Filz
2023-12-12 20:59                                   ` Dave Chinner
2023-12-12 21:57                                     ` NeilBrown
2023-12-12 22:23                                       ` Dave Chinner
2023-12-12 22:36                                         ` NeilBrown
2023-12-12 22:39                                         ` Kent Overstreet
2023-12-12 23:44                                           ` Dave Chinner
2023-12-13  0:00                                             ` Kent Overstreet
2023-12-13  7:37                                 ` Donald Buczek
2023-12-13 12:28                                   ` Kent Overstreet
2023-12-13 13:48                                     ` Donald Buczek
2023-12-19  7:41                                       ` Donald Buczek
2023-12-12 15:21                             ` file handle in statx (was: Re: How to cope with subvolumes and snapshots on muti-user systems?) Kent Overstreet
2023-12-12 20:48                               ` Dave Chinner
2023-12-12 21:23                                 ` Kent Overstreet
2023-12-12 22:10                                   ` Dave Chinner
2023-12-12 22:31                                     ` NeilBrown
2023-12-12 23:06                                       ` Dave Chinner
2023-12-12 23:42                                         ` Kent Overstreet [this message]
2023-12-13  0:03                                         ` NeilBrown
2023-12-12 22:00                                 ` NeilBrown
2023-12-12  7:03                           ` David Howells
2023-12-12  0:25                     ` David Howells
2023-12-11 23:40                   ` David Howells
2023-12-12 20:59                     ` Kent Overstreet
2023-12-12 22:57                       ` NeilBrown
2023-12-12 23:43                         ` Kent Overstreet
2023-12-13  0:02                           ` NeilBrown
2023-12-13  0:14                             ` Kent Overstreet
2023-12-13 22:45                             ` Andreas Dilger
2023-12-13 23:24                               ` Kent Overstreet

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=20231212234200.6fbcjjfrozuxnoj4@moria.home.lan \
    --to=kent.overstreet@linux.dev \
    --cc=buczek@molgen.mpg.de \
    --cc=david@fromorbit.com \
    --cc=dhowells@redhat.com \
    --cc=linux-bcachefs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=stefan.krueger@aei.mpg.de \
    /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).