linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Jeff Layton <jlayton@kernel.org>, Jan Kara <jack@suse.cz>,
	Christian Brauner <brauner@kernel.org>,
	Miklos Szeredi <miklos@szeredi.hu>,
	linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-api@vger.kernel.org
Subject: Re: [RFC][PATCH 0/4] Prepare for supporting more filesystems with fanotify
Date: Fri, 28 Apr 2023 13:40:02 +0200	[thread overview]
Message-ID: <20230428114002.3vqve7g76xonjs5f@quack3> (raw)
In-Reply-To: <CAOQ4uxhWzV7YJ_kPGg_4wHhWAd79_Xgo2uoDY+1K9sEtJcH_cA@mail.gmail.com>

On Thu 27-04-23 22:11:46, Amir Goldstein wrote:
> On Thu, Apr 27, 2023 at 7:36 PM Jeff Layton <jlayton@kernel.org> wrote:
> > > There is also a way to extend the existing API with:
> > >
> > > Perhstruct file_handle {
> > >         unsigned int handle_bytes:8;
> > >         unsigned int handle_flags:24;
> > >         int handle_type;
> > >         unsigned char f_handle[];
> > > };
> > >
> > > AFAICT, this is guaranteed to be backward compat
> > > with old kernels and old applications.
> > >
> >
> > That could work. It would probably look cleaner as a union though.
> > Something like this maybe?
> >
> > union {
> >         unsigned int legacy_handle_bytes;
> >         struct {
> >                 u8      handle_bytes;
> >                 u8      __reserved;
> >                 u16     handle_flags;
> >         };
> > }
> 
> I have no problem with the union, but does this struct
> guarantee that the lowest byte of legacy_handle_bytes
> is in handle_bytes for all architectures?
> 
> That's the reason I went with
> 
> struct {
>          unsigned int handle_bytes:8;
>          unsigned int handle_flags:24;
> }
> 
> Is there a problem with this approach?

As I'm thinking about it there are problems with both approaches in the
uAPI. The thing is: A lot of bitfield details (even whether they are packed
to a single int or not) are implementation defined (depends on the
architecture as well as the compiler) so they are not really usable in the
APIs.

With the union, things are well-defined but they would not work for
big-endian architectures. We could make the structure layout depend on the
endianity but that's quite ugly...

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

  parent reply	other threads:[~2023-04-28 11:40 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-25 13:01 [RFC][PATCH 0/4] Prepare for supporting more filesystems with fanotify Amir Goldstein
2023-04-25 13:01 ` [RFC][PATCH 1/4] exportfs: change connectable argument to bit flags Amir Goldstein
2023-04-26 14:16   ` Chuck Lever
2023-04-25 13:01 ` [RFC][PATCH 2/4] exportfs: add explicit flag to request non-decodeable file handles Amir Goldstein
2023-04-26 14:18   ` Chuck Lever
2023-04-27 15:00   ` Jeff Layton
2023-04-27 15:13     ` Amir Goldstein
2023-04-25 13:01 ` [RFC][PATCH 3/4] exportfs: allow exporting non-decodeable file handles to userspace Amir Goldstein
2023-04-25 13:01 ` [RFC][PATCH 4/4] fanotify: support reporting non-decodeable file handles Amir Goldstein
2023-04-27 11:48   ` Jan Kara
2023-04-27 12:28     ` Amir Goldstein
2023-04-27 14:34       ` Amir Goldstein
2023-04-27 16:34       ` Jan Kara
2023-04-26 13:47 ` [RFC][PATCH 0/4] Prepare for supporting more filesystems with fanotify Chuck Lever
2023-04-27  4:57   ` Amir Goldstein
2023-04-27 15:13 ` Jeff Layton
2023-04-27 15:52   ` Amir Goldstein
2023-04-27 16:36     ` Jeff Layton
2023-04-27 19:11       ` Amir Goldstein
2023-04-27 19:26         ` Jeff Layton
2023-04-28 11:40         ` Jan Kara [this message]
2023-04-28 12:15           ` Jeff Layton
2023-04-28 12:31             ` Jan Kara
2023-04-28 12:33             ` Amir Goldstein
2023-04-29 14:45   ` Chuck Lever
2023-04-29 17:26     ` Amir Goldstein
2023-05-01 18:48       ` Amir Goldstein

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=20230428114002.3vqve7g76xonjs5f@quack3 \
    --to=jack@suse.cz \
    --cc=amir73il@gmail.com \
    --cc=brauner@kernel.org \
    --cc=jlayton@kernel.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-unionfs@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    /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).