From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Niels de Vos <ndevos@redhat.com>
Cc: virtio-fs@redhat.com
Subject: Re: [Virtio-fs] [PATCH] virtiofsd/passthrough_ll: Pass errno to fuse_reply_err()
Date: Mon, 6 Jan 2020 11:24:22 +0000 [thread overview]
Message-ID: <20200106112422.GE2798@work-vm> (raw)
In-Reply-To: <20200106112154.GC3163@ndevos-x270.lan.nixpanic.net>
* Niels de Vos (ndevos@redhat.com) wrote:
> On Thu, Jan 02, 2020 at 06:55:40PM +0000, Dr. David Alan Gilbert wrote:
> > * Xiao Yang (yangx.jy@cn.fujitsu.com) wrote:
> > > lo_copy_file_range() passes -errno to fuse_reply_err() and then fuse_reply_err()
> > > changes it to errno again, so that subsequent fuse_send_reply_iov_nofree() catches
> > > the wrong errno.(i.e. reports "fuse: bad error value: ...").
> > >
> > > Make fuse_send_reply_iov_nofree() accept the correct -errno by passing errno
> > > directly in lo_copy_file_range().
> > >
> > > Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
> >
> > Yes, I think you're right - FUSE does use +ve errno's for some things,
> > normally the failure of the fuse channel itself; but in this case it
> > looks like 'errno' is consistent with the other calls; this comes
> > straight from upstream libfuse commit 2548c4b8, so lets cc in Niels.
>
> Indeed, setting a negative errno is a mistake. Could you send the fix to
> https://github.com/libfuse/libfuse (example/passthrough_ll.c) as well? I
> am happy to do so if you prefer, just let me know.
I'll do a pull with Xiao Yang's fix.
Dave
> Thanks,
> Niels
>
> >
> > I'll take it into virtiofsd for the moment; thanks!
> >
> > Dave
> >
> > > ---
> > > tools/virtiofsd/passthrough_ll.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
> > > index 83dd0084b4..a77bed655e 100644
> > > --- a/tools/virtiofsd/passthrough_ll.c
> > > +++ b/tools/virtiofsd/passthrough_ll.c
> > > @@ -2615,7 +2615,7 @@ static void lo_copy_file_range(fuse_req_t req, fuse_ino_t ino_in, off_t off_in,
> > >
> > > res = copy_file_range(in_fd, &off_in, out_fd, &off_out, len, flags);
> > > if (res < 0) {
> > > - fuse_reply_err(req, -errno);
> > > + fuse_reply_err(req, errno);
> > > } else {
> > > fuse_reply_write(req, res);
> > > }
> > > --
> > > 2.21.0
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Virtio-fs mailing list
> > > Virtio-fs@redhat.com
> > > https://www.redhat.com/mailman/listinfo/virtio-fs
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2020-01-06 11:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-02 3:53 [Virtio-fs] [PATCH] virtiofsd/passthrough_ll: Pass errno to fuse_reply_err() Xiao Yang
2020-01-02 4:50 ` Eryu Guan
2020-01-02 5:32 ` Xiao Yang
2020-01-02 18:55 ` Dr. David Alan Gilbert
2020-01-06 11:21 ` Niels de Vos
2020-01-06 11:24 ` Dr. David Alan Gilbert [this message]
2020-01-06 11:43 ` Dr. David Alan Gilbert
2020-01-03 15:23 ` Stefan Hajnoczi
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=20200106112422.GE2798@work-vm \
--to=dgilbert@redhat.com \
--cc=ndevos@redhat.com \
--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.