On Thu, Feb 25, 2016 at 7:28 AM, John David Anglin <[email protected]> wrote:
> On 2016-02-24, at 4:36 PM, Helge Deller wrote:
>
>> Maybe Dave has more luck, otherwise I'll continue to try to get some info.
>
> I tried your patch on the commit in linux-block which first failed to boot.
> As with Helge, the
> system crashed and no useful data was output on console. I then applied
> following patch
> to give some extra segments and tired again:
>
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index b1a2631..b421f03 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -595,6 +595,11 @@ static int scsi_alloc_sgtable(struct scsi_data_buffer
> *sdb, int nents, bool mq)
>
> BUG_ON(!nents);
>
> + /* Provide extra entries in case of split. */
> + nents += 8;
> + if (nents > SCSI_MAX_SG_SEGMENTS)
> + nents = SCSI_MAX_SG_SEGMENTS;
> +
Yeah, this is needed for sake of safety.
> if (mq) {
> if (nents <= SCSI_MAX_SG_SEGMENTS) {
> sdb->table.nents = nents;
>
> The attached file shows the crash in first boot. The second boot was
> successful and various output
> was generated by your check code.
>From the following log(just select one simple, and looks all are similar) in
2nd boot, the bi_phys_segments is figured out as one by block core
, which is wrong because the max segment size is 64k according to
your investigation in the below link, but the whole req/bio is 192k(4k*48).
http://www.spinics.net/lists/linux-parisc/msg06749.html
Looks weird, it shouldn't have happened because blk_bio_segment_split()
does respect the max segment size limit.
BTW, what is the scsi driver for the device?
blk_rq_map_sg: merge bug: 3 1, extra_len 0, dma_drain 0
check_bvec: dump bvec for 000000007e53c5f0(f:24490000, t:1)
0: 0 4096 245852 000000007e2c4c40
1: 0 4096 245853 000000007e2c4c40
2: 0 4096 245854 000000007e2c4c40
3: 0 4096 245855 000000007e2c4c40
4: 0 4096 245856 000000007e2c4c40
5: 0 4096 245857 000000007e2c4c40
6: 0 4096 245858 000000007e2c4c40
7: 0 4096 245859 000000007e2c4c40
8: 0 4096 245860 000000007e2c4c40
9: 0 4096 245861 000000007e2c4c40
10: 0 4096 245862 000000007e2c4c40
11: 0 4096 245863 000000007e2c4c40
12: 0 4096 245864 000000007e2c4c40
13: 0 4096 245865 000000007e2c4c40
14: 0 4096 245866 000000007e2c4c40
15: 0 4096 245867 000000007e2c4c40
16: 0 4096 245868 000000007e2c4c40
17: 0 4096 245869 000000007e2c4c40
18: 0 4096 245870 000000007e2c4c40
19: 0 4096 245871 000000007e2c4c40
20: 0 4096 245872 000000007e2c4c40
21: 0 4096 245873 000000007e2c4c40
22: 0 4096 245874 000000007e2c4c40
23: 0 4096 245875 000000007e2c4c40
24: 0 4096 245876 000000007e2c4c40
25: 0 4096 245877 000000007e2c4c40
26: 0 4096 245878 000000007e2c4c40
27: 0 4096 245879 000000007e2c4c40
28: 0 4096 245880 000000007e2c4c40
29: 0 4096 245881 000000007e2c4c40
30: 0 4096 245882 000000007e2c4c40
31: 0 4096 245883 000000007e2c4c40
32: 0 4096 245884 000000007e2c4c40
33: 0 4096 245885 000000007e2c4c40
34: 0 4096 245886 000000007e2c4c40
35: 0 4096 245887 000000007e2c4c40
36: 0 4096 245888 000000007e2c4c40
37: 0 4096 245889 000000007e2c4c40
38: 0 4096 245890 000000007e2c4c40
39: 0 4096 245891 000000007e2c4c40
40: 0 4096 245892 000000007e2c4c40
41: 0 4096 245893 000000007e2c4c40
42: 0 4096 245894 000000007e2c4c40
43: 0 4096 245895 000000007e2c4c40
44: 0 4096 245896 000000007e2c4c40
45: 0 4096 245897 000000007e2c4c40
46: 0 4096 245898 000000007e2c4c40
47: 0 4096 245899 000000007e2c4c40
Thanks,
Ming Lei
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html