Re: [RFC] weird semantics of SG_DXFER_TO_FROM_DEV in BLK_DEV_SKD (drivers/block/skd*)

From: Christoph Hellwig
Date: Mon Apr 04 2016 - 02:52:27 EST


On Mon, Apr 04, 2016 at 04:38:45AM +0100, Al Viro wrote:
> I've no idea if anything is still using SG_DXFER_TO_FROM_DEV, but this
> behaviour AFAICS doesn't match that of write() on /dev/sg* (both
> in and out are done) or normal SG_IO (either both in and out, in case if it
> hits bio_map_user_iov(), or only out if it hits bio_copy_user_iov()). In
> all cases the out part is done. Here it is skipped.
>
> Not sure who (if anybody) maintains it these days, but that behaviour looks
> wrong...

The right fix is to kill the duplicate SG_IO implementation and use
the block layer one. The driver actually is a pretty straight SCSI
implementation, so making it a block driver has been a mistake from the
start. I'll see if I can maybe get hold of hardware for the driver - it
seems pretty much unmaintained unfortunately.