mbox series

[0/8] sg: major cleanup, remove max_queue limit

Message ID 20181019062456.4690-1-dgilbert@interlog.com (mailing list archive)
Headers show
Series sg: major cleanup, remove max_queue limit | expand

Message

Douglas Gilbert Oct. 19, 2018, 6:24 a.m. UTC
The intention is to add two new ioctls as proposed by Linus Torvalds:
SG_IOSUBMIT and SG_IORECEIVE to replace the write()/read() async
interface.

But first, clean up the driver and remove the SG_MAX_QUEUE limit of
no more than 16 queued commands on a file descriptor at a time. A
free list has been added and the de-allocation of sg_request
objects is deferred until the close() of a file. Locking is
extensively reworked, especially at the struct sg_fd and
sg_request level.

A new SG_SET_GET_EXTENDED ioctl has been added. It allows multiple
integer values and booleans to be written to and/or read from the
driver. An example is changing and/or reading the reserved request
data length (there is one of these per fd). An example of a new
feature is changing and/or reading the per-fd upper limit on the
sum of outstanding data buffer sizes (default is 16 MB). An
example of a boolean is a bit to do all following command
timekeeping in nanoseconds rather that the default millseconds.

A later patchset will add implementations for the SG_IOSUBMIT and
SG_IORECEIVE plus handling of the sg v4 interface with the
existing SG_IO ioctl.

This patchset is against Martin Petersen 4.20/scsi-queue branch.

Douglas Gilbert (8):
  sg: types and naming cleanup
  sg: introduce sg_log macro
  sg: split header, expand and correct descriptions
  sg: expand request states
  sg: add free list, rework locking
  sg: complete locking changes on ioctl+debug
  sg: rework ioctl handling
  sg: user control for q_at_head or tail

 drivers/scsi/sg.c      | 2484 ++++++++++++++++++++++++++--------------
 include/scsi/sg.h      |  252 +---
 include/uapi/scsi/sg.h |  416 +++++++
 3 files changed, 2036 insertions(+), 1116 deletions(-)
 create mode 100644 include/uapi/scsi/sg.h