From: Liu Bo <bo.li.liu@oracle.com>
To: dsterba@suse.cz, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] Btrfs: fix unexpected return value of fiemap
Date: Wed, 18 May 2016 10:52:25 -0700 [thread overview]
Message-ID: <20160518175225.GA7227@localhost.localdomain> (raw)
In-Reply-To: <20160518094105.GY511@twin.jikos.cz>
On Wed, May 18, 2016 at 11:41:05AM +0200, David Sterba wrote:
> On Tue, May 17, 2016 at 05:21:48PM -0700, Liu Bo wrote:
> > btrfs's fiemap is supposed to return 0 on success and
> > return < 0 on error, however, ret becomes 1 after looking
> > up the last file extent, and if the offset is beyond EOF,
> > we can return 1.
> >
> > This may confuse applications using ioctl(FIEL_IOC_FIEMAP).
> >
> > Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
>
> Reviewed-by: David Sterba <dsterba@suse.com>
>
> > ---
> > fs/btrfs/extent_io.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
> > index d247fc0..16ece52 100644
> > --- a/fs/btrfs/extent_io.c
> > +++ b/fs/btrfs/extent_io.c
> > @@ -4379,8 +4379,12 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
> > if (ret < 0) {
> > btrfs_free_path(path);
> > return ret;
> > + } else {
> > + WARN_ON(!ret);
> > + if (ret == 1)
> > + ret = 0;
> > }
>
> So, ret == 1 can end up here from btrfs_lookup_file_extent ->
> btrfs_search_slot(..., ins_len=0, cow=0) and the offset does not exist,
> we'll get path pointed to the slot where it would be inserted and ret is 1.
Sounds better than the commit log, would you like me to update it?
Thanks,
-liubo
next prev parent reply other threads:[~2016-05-18 17:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-18 0:21 [PATCH] Btrfs: fix unexpected return value of fiemap Liu Bo
2016-05-18 9:41 ` David Sterba
2016-05-18 17:52 ` Liu Bo [this message]
2016-05-23 12:11 ` David Sterba
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=20160518175225.GA7227@localhost.localdomain \
--to=bo.li.liu@oracle.com \
--cc=dsterba@suse.cz \
--cc=linux-btrfs@vger.kernel.org \
/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.