Re: 2.6.23-rc7-mm1

Jens Axboe
2007-09-25T10:30:13Z

On Tue, Sep 25 2007, Mel Gorman wrote:
> On (25/09/07 01:11), Kamalesh Babulal didst pronounce:
>
> Hi Kamalesh,
>
> > The build fails with following error
> >
> > CC drivers/block/ps3disk.o
> > drivers/block/ps3disk.c: In function ???ps3disk_scatter_gather???:
> > drivers/block/ps3disk.c:115: error: ???bio??? undeclared (first use in this
> > function)
> > drivers/block/ps3disk.c:115: error: (Each undeclared identifier is
> > reported only once
> > drivers/block/ps3disk.c:115: error: for each function it appears in.)
> > drivers/block/ps3disk.c:115: error: ???j??? undeclared (first use in this
> > function)
> > drivers/block/ps3disk.c:116: error: implicit declaration of function
> > ???bio_kunmap_bvec???
> > make[2]: *** [drivers/block/ps3disk.o] Error 1
> > make[1]: *** [drivers/block] Error 2
> > make: *** [drivers] Error 2
> >
> > The function bio_kunmap_bvec is missing.I tried checking the git-block.patch
> > as well as the linux/kernel/git/axboe/linux-2.6-block.git and did not
> > find this function.
> >
> > Previously this function was replaced by __bio_kunmap_atomic();
> > This patch does not solves the implicit "declaration of function
> > ???bio_kunmap_bvec???"
> >
> > Signed-off-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com
> > <mailto:kamalesh@linux.vnet.ibm.com>>
>
> Your mailer appears to have mangled both your signoff and the whitespace in
> the patch and it does not apply. However, fixing it does not solve the problem
> because of this mysterious bio_kunmap_bvec() that is only referenced by this
> driver. Was it accidently added during the addition of sg chaining support?

This should fix things up.

diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c
index 8e05ba7..a7fd66a 100644
--- a/drivers/block/ps3disk.c
+++ b/drivers/block/ps3disk.c
@@ -106,14 +106,14 @@ static void ps3disk_scatter_gather(struct ps3_storage_device *dev,
(unsigned long)iter.bio->bi_sector);

size = bvec->bv_len;
- buf = bvec_kmap_irq(bvec, flags);
+ buf = bvec_kmap_irq(bvec, &flags);
if (gather)
memcpy(dev->bounce_buf+offset, buf, size);
else
memcpy(buf, dev->bounce_buf+offset, size);
offset += size;
- flush_kernel_dcache_page(bio_iovec_idx(bio, j)->bv_page);
- bio_kunmap_bvec(bvec, flags);
+ flush_kernel_dcache_page(bvec->bv_page);
+ bvec_kunmap_irq(buf, &flags);
i++;
}
}

--
Jens Axboe