SCSI io_request_lock patch

Jonathan Lahr
2001-11-12T21:13:01Z

This is a request for comments on the patch described below which
implements a revised approach to reducing io_request_lock contention
in 2.4.

This new version of the io_request_lock patch (siorl-v0) is available
at http://sourceforge.net/projects/lse/. It employs the same
concurrent request queueing scheme as the iorlv0 patch but isolates
code changes to the SCSI subsystem and engages the new locking scheme
only for SCSI drivers which explicitly request it. I took this more
restricted approach after additional development based on comments from
Jens and others indicated that iorlv0 impacted the IDE subsystem and
was unnecessarily broad in general.

The siorl-v0 patch allows drivers to enable concurrent queueing through
the concurrent_queue field in the Scsi_Host_Template which is copied to
the request queue. It creates SCSI-specific versions of generic block
i/o functions used by the SCSI subsystem and modifies them to conditionally
engage the new locking scheme based on this field. It allows control over
which drivers use concurrent queueing and preserves original block i/o
behavior by default.

I tested this patch with aic7xxx and lpfc drivers, and regression tested
it with IDE disk and CDROM drivers. Any feedback would be appreciated.

Thanks,
Jonathan