On Wed, 30 May 2018 00:41:30 -0700 Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: > > - req->completion_data = cqr; > > + *((struct dasd_ccw_req **) blk_mq_rq_to_pdu(req)) = cqr; > > + > > Please don't play such tricks. In general your driver structure > should have struct request embedded. If for some reason > struct dasd_ccw_req has a different life time please create a new > structure instead of these hacks. Why do you consider this to be a 'trick'? The blk_mq_rq_to_pdu is meant to be used to access a block of data that is is associated with a request, no? With the change we store a single value, the pointer to a struct dasd_ccw_req. The struct request comes first, later do_dasd_request creates the struct dasd_ccw_req with the CCW chain for the request. And for the blk timeout handler we need a way to find the dasd_ccw_req again. > In either way this really doesn't look like a post-rc7 change. You think so? It fixes a crash for s390 with a minimal number of changed lines: drivers/s390/block/dasd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -- blue skies, Martin. "Reality continues to ruin my life." - Calvin. -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html