Re: [PATCH] check bh->b_blocknr only if BH_Mapped is set

From: Nikanth Karthikesan
Date: Wed Feb 11 2009 - 01:03:44 EST


On Wednesday 11 February 2009 02:16:40 Andrew Morton wrote:
> On Mon, 9 Feb 2009 17:48:11 +0530
>
> Nikanth Karthikesan <knikanth@xxxxxxx> wrote:
> > check bh->b_blocknr only if BH_Mapped is set
>
> Why?
>

b_blocknr will have a valid blocknr only when BH_Mapped is set.

> > diff --git a/fs/buffer.c b/fs/buffer.c
> > index 665d446..782c365 100644
> > --- a/fs/buffer.c
> > +++ b/fs/buffer.c
> > @@ -344,13 +344,13 @@ __find_get_block_slow(struct block_device *bdev,
> > sector_t block)
> > head = page_buffers(page);
> > bh = head;
> > do {
> > - if (bh->b_blocknr == block) {
> > + if (!buffer_mapped(bh))
> > + all_mapped = 0;
> > + else if (bh->b_blocknr == block) {
> > ret = bh;
> > get_bh(bh);
> > goto out_unlock;
> > }
> > - if (!buffer_mapped(bh))
> > - all_mapped = 0;
> > bh = bh->b_this_page;
> > } while (bh != head);
>
> Does this fix some user-visible misbehaviour? If so, what was that
> behaviour?
>

No. I was looking at the "Bug 12593 - __find_get_block_slow while using
parted." Even though this may not be the cause of that bug, I think this could
be a potential problem elsewhere.

> Please write good changelogs. This is not some pointless book-keeping
> exercise. People will make decisions about which kernel versions
> patches should be merged into, and they will want to know if a
> particular patch addresses a particular problem which they are
> experiencing. For this, they need information.
>

Sorry for the bad changelog. Thanks for pointing it out.

Thanks
Nikanth
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/