Re: Too big sectors - exceeding fabric_max_sectors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux