On Mon, Dec 21, 2015 at 10:25 AM, Artem S. Tashkinov <t.artem@xxxxxxxxx> wrote: > # cat > /sys/block/sda/queue/{max_hw_sectors_kb,max_sectors_kb,max_segments,max_segment_size} > 32767 > 32767 > 168 > 65536 Looks it is fine, then maybe it is related with BIOVEC_PHYS_MERGEABLE(), BIOVEC_SEG_BOUNDARY() or sort of thing, because dma_addr_t and phys_addr_t turn to 64-bit with PAE, but 'unsigned long' and 'void *' is still 32bit. It was confirmed that there isn't the issue if PAE is disabled. Dumping both sata/ahci hw sg table and bio's bvec might be helpful. On Mon, Dec 21, 2015 at 10:32 AM, Kent Overstreet <kent.overstreet@xxxxxxxxx> wrote: > > oy vey. WTF's been happening in blk-merge.c? > > Theyy're not the same bug. The bug in your thread was introduced by Jens in > 5014c311ba "block: fix bogus compiler warnings in blk-merge.c", where he screwed > up the bvprv handling - but that patch comes after the patch Artem bisected to. > > blk_bio_segment_split() looks correct in b54ffb73ca. Yes, that is why reverting 578270bfb(block: fix segment split) can make the issue disappear, because 5014c311ba "block: fix bogus compiler warnings in blk-merge.c" basically disables sg-merge and prevents the issue from being triggered. Thanks, Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html