Hello Kelsey, On Sun, 2012-11-11 at 01:04 +0000, Prantis, Kelsey wrote: > > On 11/9/12 6:59 PM, "Prantis, Kelsey" <kelsey.prantis@xxxxxxxxx> wrote: > >Ok, rebuilt with what I believe is a good patch, and it is still oopsing. > >I will get you the report for that first thing in the morning. > > We've uploaded the report for the latest oops here: > ftp://ftp.whamcloud.com/uploads/lio-debug-3.txt > Thanks for the second set of logs. Your kernel patch to v3.6.3 F17 looks fine as well, and also thanks for verifying the kernel builds on your debug setup. After reviewing the second log, there appears to be two separate issues occurring with F17 iblock+virtio-blk KVM export against a RHEL6 host.. First, the block layer appears to be completing one (or more) outstanding IBLOCK bio(s) with a non zero (exception) status during block + struct bio error completion processing. Once this happens, a separate second double completion callback bug is triggered within iblock_complete_cmd() -> ransport_complete_cmd() -> $FABRIC_MOD->queue_status() code, with what appears to be with a IBLOCK generated struct request exception containing multiple BIOs. (Asias + Jens CC'ed) Unfortunately, I've not yet been able to deduce which part of block is triggering the initial callback exception back into virtio-block/IBLOCK code, but based upon the previous head /sys/block/vdb/queue/* output for your virtio-blk setup, the following values could be having some effect here.. ==> /sys/block/vdb/queue/max_hw_sectors_kb <== 2147483647 ==> /sys/block/vdb/queue/max_segments <== 126 ==> /sys/block/vdb/queue/max_segment_size <== 4294967295 To help better understand the bug, please apply the following patch to dump additional bio + se_cmd + dump_stack() info once an unsuccessful (non zero) bio->bi_end_io() callback has been invoked back up the stack into target_core_iblock:iblock_bio_done() code. Thank You! --nab diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c index 2782fa6..8718b74 100644 --- a/drivers/target/target_core_iblock.c +++ b/drivers/target/target_core_iblock.c @@ -735,8 +735,13 @@ static void iblock_bio_done(struct bio *bio, int err) err = -EIO; if (err != 0) { - pr_err("test_bit(BIO_UPTODATE) failed for bio: %p," - " err: %d\n", bio, err); + printk("test_bit(BIO_UPTODATE) failed for bio: %p sector: %llu, bi_flags: 0x%16x" + " bi_phys_segments: %u bi_vcnt: %hu bi_idx: %hu bi_max_vecs: %u" + " err: %d\n", bio, bio->bi_sector, bio->bi_flags, bi->bi_phys_segments, + bio->bi_vcnt, bio->bi_idx, bio->bi_max_vecs, err); + printk("cmd: %p, CDB: 0x%02x data_length: %u t_data_sg: %p t_data_nents: %u\n", + cmd, cmd->t_task_cdb[0], cmd->data_length, cmd->t_data_sg, cmd->t_data_nents); + dump_stack(); /* * Bump the ib_bio_err_cnt and release bio. */ -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html