linux-next: build failure after merge of the block tree

From: Stephen Rothwell
Date: Fri Nov 01 2013 - 00:02:12 EST


Hi Jens,

After merging the block tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

drivers/block/loop.c: In function 'lo_rw_aio':
drivers/block/loop.c:243:28: error: 'struct bio' has no member named 'bi_sector'
loff_t pos = ((loff_t) bio->bi_sector << 9) + lo->lo_offset;
^
drivers/block/loop.c:254:2: error: implicit declaration of function 'bio_iovec_idx' [-Werror=implicit-function-declaration]
bvec = bio_iovec_idx(bio, bio->bi_idx);
^
drivers/block/loop.c:254:31: error: 'struct bio' has no member named 'bi_idx'
bvec = bio_iovec_idx(bio, bio->bi_idx);
^
drivers/block/loop.c: In function 'lo_discard':
drivers/block/loop.c:476:28: error: 'struct bio' has no member named 'bi_sector'
loff_t pos = ((loff_t) bio->bi_sector << 9) + lo->lo_offset;
^
drivers/block/loop.c:489:50: error: 'struct bio' has no member named 'bi_size'
ret = file->f_op->fallocate(file, mode, pos, bio->bi_size);
^

Basically caused by in incomplete merge between the block tree and the
aio-direct tree (see my previous email).

I was going to apply a merge fix patch, but I also got these:

In file included from include/linux/blkdev.h:18:0,
from drivers/block/ps3disk.c:22:
drivers/block/ps3disk.c: In function 'ps3disk_scatter_gather':
include/linux/bio.h:239:9: error: incompatible types when assigning to type 'struct bio_vec *' from type 'struct bio_vec'
((bvl = bio_iter_iovec((bio), (iter))), 1); \
^
include/linux/bio.h:243:2: note: in expansion of macro '__bio_for_each_segment'
__bio_for_each_segment(bvl, bio, iter, (bio)->bi_iter)
^
include/linux/blkdev.h:748:3: note: in expansion of macro 'bio_for_each_segment'
bio_for_each_segment(bvl, _iter.bio, _iter.iter)
^
drivers/block/ps3disk.c:102:2: note: in expansion of macro 'rq_for_each_segment'
rq_for_each_segment(bvec, req, iter) {
^
include/linux/bio.h:239:41: warning: left-hand operand of comma expression has no effect [-Wunused-value]
((bvl = bio_iter_iovec((bio), (iter))), 1); \
^
include/linux/bio.h:243:2: note: in expansion of macro '__bio_for_each_segment'
__bio_for_each_segment(bvl, bio, iter, (bio)->bi_iter)
^
include/linux/blkdev.h:748:3: note: in expansion of macro 'bio_for_each_segment'
bio_for_each_segment(bvl, _iter.bio, _iter.iter)
^
drivers/block/ps3disk.c:102:2: note: in expansion of macro 'rq_for_each_segment'
rq_for_each_segment(bvec, req, iter) {
^
include/linux/bio.h:240:45: error: request for member 'bv_len' in something not a structure or union
bio_advance_iter((bio), &(iter), (bvl).bv_len))
^
include/linux/bio.h:243:2: note: in expansion of macro '__bio_for_each_segment'
__bio_for_each_segment(bvl, bio, iter, (bio)->bi_iter)
^
include/linux/blkdev.h:748:3: note: in expansion of macro 'bio_for_each_segment'
bio_for_each_segment(bvl, _iter.bio, _iter.iter)
^
drivers/block/ps3disk.c:102:2: note: in expansion of macro 'rq_for_each_segment'
rq_for_each_segment(bvec, req, iter) {
^
In file included from block/blk-merge.c:6:0:
block/blk-merge.c: In function '__blk_recalc_rq_segments':
include/linux/bio.h:174:25: warning: 'bvprv.bv_len' may be used uninitialized in this function [-Wmaybe-uninitialized]
((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2)))
^
block/blk-merge.c:15:21: note: 'bvprv.bv_len' was declared here
struct bio_vec bv, bvprv;
^
In file included from block/blk-merge.c:6:0:
include/linux/bio.h:154:55: warning: 'bvprv.bv_offset' may be used uninitialized in this function [-Wmaybe-uninitialized]
#define bvec_to_phys(bv) (page_to_phys((bv)->bv_page) + (unsigned long) (bv)->bv_offset)
^
block/blk-merge.c:15:21: note: 'bvprv.bv_offset' was declared here
struct bio_vec bv, bvprv;
^
In file included from arch/powerpc/include/asm/page.h:412:0,
from arch/powerpc/include/asm/thread_info.h:34,
from include/linux/thread_info.h:54,
from include/linux/preempt.h:9,
from include/linux/spinlock.h:50,
from include/linux/seqlock.h:35,
from include/linux/time.h:5,
from include/linux/stat.h:18,
from include/linux/module.h:10,
from block/blk-merge.c:5:
include/asm-generic/memory_model.h:52:52: warning: 'bvprv.bv_page' may be used uninitialized in this function [-Wmaybe-uninitialized]
#define __page_to_pfn(page) (unsigned long)((page) - vmemmap)
^
block/blk-merge.c:15:21: note: 'bvprv.bv_page' was declared here
struct bio_vec bv, bvprv;
^

Some of this may be incomplete merge resolution on my part (help would
be appreciated), but some seems to maybe need more work.

I have used the block tree from next-20131031 for today.

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

Attachment: pgp00000.pgp
Description: PGP signature