<html><body><div><div><div>Sorry for top post but:</div><div><br/></div><div>You'll likely fix this if you establish the cloned request's rq_disk member in the blk-mq branch of dm-mpath.c:__multipath_map()</div><div><br/></div><div>Mike</div><div><br/></div></div><br><br>Bart Van Assche <bvanassche@acm.org> wrote:<br><br></div><br><div>On 12/22/14 19:49, Mike Snitzer wrote:
<br>> On Mon, Dec 22 2014 at 10:28am -0500,
<br>> Bart Van Assche <bvanassche@acm.org> wrote:
<br>>> Good news: with this patch my standard SRP multipath test ran fine for
<br>>> several hours, after which I stopped the test.
<br>> 
<br>> Great, thanks for testing!  Did you happen to look at the performance of
<br>> your testing?  If so, is it comparable/better/worse?
<br>
<br>Hello Mike,
<br>
<br>I have tried to run a performance comparison but after I had finished
<br>the measurements without multipath and when I started multipathd I ran
<br>into the following (typed over from the console):
<br>
<br>BUG: unable to handle kernel NULL pointer dereference at 0000318
<br>IP: scsi_setup_cmnd+0xe8 [scsi_mod]
<br>Workqueue: kblockd blk_mq_run_work_fn
<br>Call Trace:
<br>scsi_queue_rq+0x5a5
<br>__blk_mq_run_hw_queue+0x1cb
<br>blk_mq_run_work_fn+0xd
<br>process_one_work+0x133
<br>worker_thread+0x11b
<br>kthread+0xcd
<br>
<br>gdb translates the above address as follows:
<br>
<br>(gdb) list *(scsi_setup_cmnd+0xe8)
<br>0x9568 is in scsi_setup_cmnd (include/scsi/scsi_cmnd.h:155).
<br>150     }
<br>151
<br>152     /* make sure not to use it with REQ_TYPE_BLOCK_PC commands */
<br>153     static inline struct scsi_driver *scsi_cmd_to_driver(struct scsi_cmnd *cmd)
<br>154     {
<br>155             return *(struct scsi_driver **)cmd->request->rq_disk->private_data;
<br>156     }
<br>157
<br>158     extern struct scsi_cmnd *scsi_get_command(struct scsi_device *, gfp_t);
<br>159     extern void scsi_put_command(struct scsi_cmnd *);
<br>
<br>Bart.
<br></div></body></html>