Re: [PATCH RFC/RFT 2/4] add scsi helpers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> +struct __scsi_request {
> +	void *data;
> +	void (*done)(void *data, char *sense, int result, int resid);
> +	char sense[SCSI_SENSE_BUFFERSIZE];
> +};

I don't think this is a good structure name.  Just something like
iocontext  or similar?

> +int scsi_execute_async_iov_req(struct scsi_device *sdev,
> +			       const unsigned char *cmd, int data_direction,
> +			       struct kvec *vec, int vec_count, int timeout,
> +			       int retries, void *privdata,
> +			       void (*done)(void *, char *, int, int))

If you passed an request_queue_t instead of th scsi_device this function
would not have any knowledge about scsi internals and could be moved up
to the block layer.  not sure that's actually a good idea.

If we stick to putting it into the scsi layer the done callback could
normalize the sense data, though.

> +	struct request *req;
> +	struct __scsi_request *sreq;
> +	int write = (data_direction == DMA_TO_DEVICE);

What about just passing in a write parameter directly?

> +
> +	sreq = kzalloc(sizeof(*sreq), GFP_ATOMIC);
> +	if (!sreq) {
> +		return DRIVER_ERROR << 24;
> +	}
> +
> +	req = blk_get_request(sdev->request_queue, write, GFP_ATOMIC);

can you add a gfp_mask argument instead of hardcoding GFP_ATOMIC?

-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux