From: Chris Mason <chris.mason@oracle.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Balaji Rao <balajirrao@gmail.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] NFS support for btrfs - v2
Date: Tue, 19 Aug 2008 07:54:44 -0400 [thread overview]
Message-ID: <1219146885.14063.54.camel@think.oraclecorp.com> (raw)
In-Reply-To: <1219096342.3184.453.camel@pmac.infradead.org>
On Mon, 2008-08-18 at 22:52 +0100, David Woodhouse wrote:
> On Mon, 2008-08-18 at 16:32 -0400, Chris Mason wrote:
> > On Mon, 2008-08-18 at 21:20 +0100, David Woodhouse wrote:
> > > On Mon, 2008-08-18 at 15:47 -0400, Chris Mason wrote:
> > > > Lets pretend I had put in commments something like the code below.
> > > > The important part is that directories have only one link, so they
> > > > have only one backref.
> > >
> > > OK. Now can I rip that code out anyway? The VFS will never call
> > > btrfs_lookup() for ".." -- not since the 2.2 kernel :)
> > >
> > > I'm still a little confused about precisely what btrfs_search_slot()
> > > returns when it doesn't find a match -- that's probably where the
> > > documentation would be more useful.
> > >
> >
> > if btrfs_search_slot returns < 0, there was an error
> > if btrfs_search_slot returns > 1, path->slots[0] is the spot in the tree
> > where you'd want to insert the item.
>
> What if the parent inode actually _is_ inode #0xffffffffffffffff? Can
> that happen? In that case it would return zero, and I shouldn't subtract
> 1 from the slot number -- I've actually found what I'm looking for?
>
The max inode will be 2^64 - 1
> > In this case, if path->slots[0] == 0, there are no keys in the tree
> > smaller than your search key. ^^^^
>
> OK... what if the place I'd want to insert the item is the first slot in
> some node? There are keys in the _tree_ which are smaller, but just not
> in this node? I think that's where the root of my confusion lies.
In this case, you'll always end up in the last slot of the previous node
(which is what you were seeing when you put in the fix).
>
> > If path->slots[0] == btrfs_header_nritems(path->nodes[0]), there are
> > no items in this node that have a key > than your search key.
> ^^^^
> Not in this node, but maybe in the next one? That's why my own fix for
> the bug involved using btrfs_next_leaf() and using the first item from
> that one?
Correct.
>
> > > + if (ret < 0 && slot == 0) {
> >
> > ^^^^^^^^^^^^^ should be ||, and should set ret to
> > something bad if slot == 0
>
> Er, yes. Moment of stupidity there :)
>
> We were ignoring 'ret' anyway -- none of this stuff should ever happen,
> and it's all just 'return ERR_PTR(-EINVAL)' at the out: label.
>
> I've tested this, and added it to my tree:
>
Looks good, thanks.
-chris
next prev parent reply other threads:[~2008-08-19 11:54 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-20 20:31 [PATCH] NFS support for btrfs - v2 Balaji Rao
2008-08-17 11:53 ` David Woodhouse
2008-08-17 12:51 ` Balaji Rao
2008-08-17 12:56 ` David Woodhouse
2008-08-17 13:24 ` Balaji Rao
2008-08-17 13:30 ` David Woodhouse
2008-08-17 14:17 ` David Woodhouse
2008-08-17 16:10 ` [PATCH] rewrite btrfs_readdir() David Woodhouse
2008-08-18 18:46 ` Chris Mason
2008-08-18 19:08 ` David Woodhouse
2008-08-18 19:24 ` Chris Mason
2008-08-18 19:32 ` David Woodhouse
2008-08-17 13:40 ` [PATCH] NFS support for btrfs - v2 David Woodhouse
2008-08-18 19:23 ` Chris Mason
2008-08-18 19:33 ` David Woodhouse
2008-08-18 19:47 ` Chris Mason
2008-08-18 20:20 ` David Woodhouse
2008-08-18 20:32 ` Chris Mason
2008-08-18 21:52 ` David Woodhouse
2008-08-19 11:54 ` Chris Mason [this message]
2008-08-19 14:49 ` David Woodhouse
2008-08-19 21:34 ` David Woodhouse
2008-08-19 0:16 ` Christoph Hellwig
2008-08-19 0:21 ` David Woodhouse
2008-08-18 11:51 ` David Woodhouse
2008-08-18 12:10 ` David Woodhouse
2008-08-18 19:15 ` Chris Mason
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=1219146885.14063.54.camel@think.oraclecorp.com \
--to=chris.mason@oracle.com \
--cc=balajirrao@gmail.com \
--cc=dwmw2@infradead.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox