From: Vivek Goyal <vgoyal@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: virtio-fs@redhat.com, miklos@szeredi.hu, qemu-devel@nongnu.org
Subject: Re: [Virtio-fs] [PATCH v7 3/7] virtiofsd: Add support for extended setxattr
Date: Mon, 28 Jun 2021 14:28:00 -0400 [thread overview]
Message-ID: <20210628182800.GG1803896@redhat.com> (raw)
In-Reply-To: <YNnvbneBCm4GYRP9@work-vm>
On Mon, Jun 28, 2021 at 04:49:02PM +0100, Dr. David Alan Gilbert wrote:
> * Vivek Goyal (vgoyal@redhat.com) wrote:
> > Add the bits to enable support for setxattr_ext if fuse offers it. Do not
> > enable it by default yet. Let passthrough_ll opt-in. Enabling it by deafult
> > kind of automatically means that you are taking responsibility of clearing
> > SGID if ACL is set.
> >
> > Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
> > ---
> > tools/virtiofsd/fuse_common.h | 5 +++++
> > tools/virtiofsd/fuse_lowlevel.c | 11 ++++++++++-
> > tools/virtiofsd/fuse_lowlevel.h | 3 ++-
> > tools/virtiofsd/passthrough_ll.c | 3 ++-
> > 4 files changed, 19 insertions(+), 3 deletions(-)
> >
> > diff --git a/tools/virtiofsd/fuse_common.h b/tools/virtiofsd/fuse_common.h
> > index 0c2665b977..8abac80098 100644
> > --- a/tools/virtiofsd/fuse_common.h
> > +++ b/tools/virtiofsd/fuse_common.h
> > @@ -377,6 +377,11 @@ struct fuse_file_info {
> > */
> > #define FUSE_CAP_SETXATTR_EXT (1 << 29)
> >
> > +/**
> > + * Indicates that file server supports extended struct fuse_setxattr_in
> > + */
> > +#define FUSE_CAP_SETXATTR_EXT (1 << 29)
> > +
>
> You already added that in 1/7 - but other than that,
Good catch. Do I need to repost patch/series due to this change or this
is something you can take care of while applying patches.
Vivek
>
>
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
>
> > /**
> > * Ioctl flags
> > *
> > diff --git a/tools/virtiofsd/fuse_lowlevel.c b/tools/virtiofsd/fuse_lowlevel.c
> > index c2b6ff1686..d1e24c013f 100644
> > --- a/tools/virtiofsd/fuse_lowlevel.c
> > +++ b/tools/virtiofsd/fuse_lowlevel.c
> > @@ -1439,7 +1439,9 @@ static void do_setxattr(fuse_req_t req, fuse_ino_t nodeid,
> > }
> >
> > if (req->se->op.setxattr) {
> > - req->se->op.setxattr(req, nodeid, name, value, arg->size, arg->flags);
> > + uint32_t setxattr_flags = setxattr_ext ? arg->setxattr_flags : 0;
> > + req->se->op.setxattr(req, nodeid, name, value, arg->size, arg->flags,
> > + setxattr_flags);
> > } else {
> > fuse_reply_err(req, ENOSYS);
> > }
> > @@ -1986,6 +1988,9 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
> > if (arg->flags & FUSE_HANDLE_KILLPRIV_V2) {
> > se->conn.capable |= FUSE_CAP_HANDLE_KILLPRIV_V2;
> > }
> > + if (arg->flags & FUSE_SETXATTR_EXT) {
> > + se->conn.capable |= FUSE_CAP_SETXATTR_EXT;
> > + }
> > #ifdef HAVE_SPLICE
> > #ifdef HAVE_VMSPLICE
> > se->conn.capable |= FUSE_CAP_SPLICE_WRITE | FUSE_CAP_SPLICE_MOVE;
> > @@ -2121,6 +2126,10 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
> > outarg.flags |= FUSE_HANDLE_KILLPRIV_V2;
> > }
> >
> > + if (se->conn.want & FUSE_CAP_SETXATTR_EXT) {
> > + outarg.flags |= FUSE_SETXATTR_EXT;
> > + }
> > +
> > fuse_log(FUSE_LOG_DEBUG, " INIT: %u.%u\n", outarg.major, outarg.minor);
> > fuse_log(FUSE_LOG_DEBUG, " flags=0x%08x\n", outarg.flags);
> > fuse_log(FUSE_LOG_DEBUG, " max_readahead=0x%08x\n", outarg.max_readahead);
> > diff --git a/tools/virtiofsd/fuse_lowlevel.h b/tools/virtiofsd/fuse_lowlevel.h
> > index 3bf786b034..4b4e8c9724 100644
> > --- a/tools/virtiofsd/fuse_lowlevel.h
> > +++ b/tools/virtiofsd/fuse_lowlevel.h
> > @@ -798,7 +798,8 @@ struct fuse_lowlevel_ops {
> > * fuse_reply_err
> > */
> > void (*setxattr)(fuse_req_t req, fuse_ino_t ino, const char *name,
> > - const char *value, size_t size, int flags);
> > + const char *value, size_t size, int flags,
> > + uint32_t setxattr_flags);
> >
> > /**
> > * Get an extended attribute
> > diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
> > index ec91b3c133..9f5cd98fb5 100644
> > --- a/tools/virtiofsd/passthrough_ll.c
> > +++ b/tools/virtiofsd/passthrough_ll.c
> > @@ -2955,7 +2955,8 @@ out:
> > }
> >
> > static void lo_setxattr(fuse_req_t req, fuse_ino_t ino, const char *in_name,
> > - const char *value, size_t size, int flags)
> > + const char *value, size_t size, int flags,
> > + uint32_t extra_flags)
> > {
> > char procname[64];
> > const char *name;
> > --
> > 2.25.4
> >
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>
WARNING: multiple messages have this Message-ID (diff)
From: Vivek Goyal <vgoyal@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: virtio-fs@redhat.com, miklos@szeredi.hu, qemu-devel@nongnu.org,
lhenriques@suse.de
Subject: Re: [PATCH v7 3/7] virtiofsd: Add support for extended setxattr
Date: Mon, 28 Jun 2021 14:28:00 -0400 [thread overview]
Message-ID: <20210628182800.GG1803896@redhat.com> (raw)
In-Reply-To: <YNnvbneBCm4GYRP9@work-vm>
On Mon, Jun 28, 2021 at 04:49:02PM +0100, Dr. David Alan Gilbert wrote:
> * Vivek Goyal (vgoyal@redhat.com) wrote:
> > Add the bits to enable support for setxattr_ext if fuse offers it. Do not
> > enable it by default yet. Let passthrough_ll opt-in. Enabling it by deafult
> > kind of automatically means that you are taking responsibility of clearing
> > SGID if ACL is set.
> >
> > Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
> > ---
> > tools/virtiofsd/fuse_common.h | 5 +++++
> > tools/virtiofsd/fuse_lowlevel.c | 11 ++++++++++-
> > tools/virtiofsd/fuse_lowlevel.h | 3 ++-
> > tools/virtiofsd/passthrough_ll.c | 3 ++-
> > 4 files changed, 19 insertions(+), 3 deletions(-)
> >
> > diff --git a/tools/virtiofsd/fuse_common.h b/tools/virtiofsd/fuse_common.h
> > index 0c2665b977..8abac80098 100644
> > --- a/tools/virtiofsd/fuse_common.h
> > +++ b/tools/virtiofsd/fuse_common.h
> > @@ -377,6 +377,11 @@ struct fuse_file_info {
> > */
> > #define FUSE_CAP_SETXATTR_EXT (1 << 29)
> >
> > +/**
> > + * Indicates that file server supports extended struct fuse_setxattr_in
> > + */
> > +#define FUSE_CAP_SETXATTR_EXT (1 << 29)
> > +
>
> You already added that in 1/7 - but other than that,
Good catch. Do I need to repost patch/series due to this change or this
is something you can take care of while applying patches.
Vivek
>
>
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
>
> > /**
> > * Ioctl flags
> > *
> > diff --git a/tools/virtiofsd/fuse_lowlevel.c b/tools/virtiofsd/fuse_lowlevel.c
> > index c2b6ff1686..d1e24c013f 100644
> > --- a/tools/virtiofsd/fuse_lowlevel.c
> > +++ b/tools/virtiofsd/fuse_lowlevel.c
> > @@ -1439,7 +1439,9 @@ static void do_setxattr(fuse_req_t req, fuse_ino_t nodeid,
> > }
> >
> > if (req->se->op.setxattr) {
> > - req->se->op.setxattr(req, nodeid, name, value, arg->size, arg->flags);
> > + uint32_t setxattr_flags = setxattr_ext ? arg->setxattr_flags : 0;
> > + req->se->op.setxattr(req, nodeid, name, value, arg->size, arg->flags,
> > + setxattr_flags);
> > } else {
> > fuse_reply_err(req, ENOSYS);
> > }
> > @@ -1986,6 +1988,9 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
> > if (arg->flags & FUSE_HANDLE_KILLPRIV_V2) {
> > se->conn.capable |= FUSE_CAP_HANDLE_KILLPRIV_V2;
> > }
> > + if (arg->flags & FUSE_SETXATTR_EXT) {
> > + se->conn.capable |= FUSE_CAP_SETXATTR_EXT;
> > + }
> > #ifdef HAVE_SPLICE
> > #ifdef HAVE_VMSPLICE
> > se->conn.capable |= FUSE_CAP_SPLICE_WRITE | FUSE_CAP_SPLICE_MOVE;
> > @@ -2121,6 +2126,10 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
> > outarg.flags |= FUSE_HANDLE_KILLPRIV_V2;
> > }
> >
> > + if (se->conn.want & FUSE_CAP_SETXATTR_EXT) {
> > + outarg.flags |= FUSE_SETXATTR_EXT;
> > + }
> > +
> > fuse_log(FUSE_LOG_DEBUG, " INIT: %u.%u\n", outarg.major, outarg.minor);
> > fuse_log(FUSE_LOG_DEBUG, " flags=0x%08x\n", outarg.flags);
> > fuse_log(FUSE_LOG_DEBUG, " max_readahead=0x%08x\n", outarg.max_readahead);
> > diff --git a/tools/virtiofsd/fuse_lowlevel.h b/tools/virtiofsd/fuse_lowlevel.h
> > index 3bf786b034..4b4e8c9724 100644
> > --- a/tools/virtiofsd/fuse_lowlevel.h
> > +++ b/tools/virtiofsd/fuse_lowlevel.h
> > @@ -798,7 +798,8 @@ struct fuse_lowlevel_ops {
> > * fuse_reply_err
> > */
> > void (*setxattr)(fuse_req_t req, fuse_ino_t ino, const char *name,
> > - const char *value, size_t size, int flags);
> > + const char *value, size_t size, int flags,
> > + uint32_t setxattr_flags);
> >
> > /**
> > * Get an extended attribute
> > diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
> > index ec91b3c133..9f5cd98fb5 100644
> > --- a/tools/virtiofsd/passthrough_ll.c
> > +++ b/tools/virtiofsd/passthrough_ll.c
> > @@ -2955,7 +2955,8 @@ out:
> > }
> >
> > static void lo_setxattr(fuse_req_t req, fuse_ino_t ino, const char *in_name,
> > - const char *value, size_t size, int flags)
> > + const char *value, size_t size, int flags,
> > + uint32_t extra_flags)
> > {
> > char procname[64];
> > const char *name;
> > --
> > 2.25.4
> >
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>
next prev parent reply other threads:[~2021-06-28 18:28 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-22 15:08 [Virtio-fs] [PATCH v7 0/7] virtiofsd: Add support to enable/disable posix acls Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-22 15:08 ` [Virtio-fs] [PATCH v7 1/7] virtiofsd: Fix fuse setxattr() API change issue Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-28 14:46 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 14:46 ` Dr. David Alan Gilbert
2021-06-28 14:54 ` [Virtio-fs] " Vivek Goyal
2021-06-29 12:44 ` Greg Kurz
2021-06-30 10:17 ` Dr. David Alan Gilbert
2021-06-22 15:08 ` [Virtio-fs] [PATCH v7 2/7] virtiofsd: Fix xattr operations overwriting errno Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-28 15:31 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 15:31 ` Dr. David Alan Gilbert
2021-06-29 13:03 ` [Virtio-fs] " Greg Kurz
2021-06-29 13:03 ` Greg Kurz
2021-06-29 13:22 ` Vivek Goyal
2021-06-29 13:22 ` Vivek Goyal
2021-06-29 14:35 ` Greg Kurz
2021-06-29 14:35 ` Greg Kurz
2021-06-22 15:08 ` [Virtio-fs] [PATCH v7 3/7] virtiofsd: Add support for extended setxattr Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-28 15:49 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 15:49 ` Dr. David Alan Gilbert
2021-06-28 18:28 ` Vivek Goyal [this message]
2021-06-28 18:28 ` Vivek Goyal
2021-06-28 18:34 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 18:34 ` Dr. David Alan Gilbert
2021-06-22 15:08 ` [Virtio-fs] [PATCH v7 4/7] virtiofsd: Add umask to seccom allow list Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-22 15:08 ` [Virtio-fs] [PATCH v7 5/7] virtiofsd: Add capability to change/restore umask Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-28 16:12 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 16:12 ` Dr. David Alan Gilbert
2021-06-28 18:12 ` [Virtio-fs] " Vivek Goyal
2021-06-28 18:12 ` Vivek Goyal
2021-06-28 18:36 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 18:36 ` Dr. David Alan Gilbert
2021-06-28 18:46 ` [Virtio-fs] " Vivek Goyal
2021-06-28 18:46 ` Vivek Goyal
2021-06-28 18:51 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 18:51 ` Dr. David Alan Gilbert
2021-06-22 15:08 ` [Virtio-fs] [PATCH v7 6/7] virtiofsd: Switch creds, drop FSETID for system.posix_acl_access xattr Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-28 17:37 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 17:37 ` Dr. David Alan Gilbert
2021-06-28 17:55 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 17:55 ` Dr. David Alan Gilbert
2021-06-22 15:08 ` [Virtio-fs] [PATCH v7 7/7] virtiofsd: Add an option to enable/disable posix acls Vivek Goyal
2021-06-22 15:08 ` Vivek Goyal
2021-06-28 18:26 ` [Virtio-fs] " Dr. David Alan Gilbert
2021-06-28 18:26 ` Dr. David Alan Gilbert
2021-06-30 18:53 ` [Virtio-fs] [PATCH v7 0/7] virtiofsd: Add support " Dr. David Alan Gilbert
2021-06-30 18:53 ` Dr. David Alan Gilbert
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=20210628182800.GG1803896@redhat.com \
--to=vgoyal@redhat.com \
--cc=dgilbert@redhat.com \
--cc=miklos@szeredi.hu \
--cc=qemu-devel@nongnu.org \
--cc=virtio-fs@redhat.com \
/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.