]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Coalesce last data move and command status for read commands.
authormav <mav@FreeBSD.org>
Tue, 25 Nov 2014 17:53:35 +0000 (17:53 +0000)
committermav <mav@FreeBSD.org>
Tue, 25 Nov 2014 17:53:35 +0000 (17:53 +0000)
commit115d2f3c0bcc4cd75986c7f6ec8a1e9bd379df14
treea3a596368ccfcff50a172e691d7ebad9c8822de3
parente19a351f252168d092efde4f9a3369deee2ba9bb
Coalesce last data move and command status for read commands.

Make CTL core and block backend set success status before initiating last
data move for read commands.  Make CAM target and iSCSI frontends detect
such condition and send command status together with data.  New I/O flag
allows to skip duplicate status sending on later fe_done() call.

For Fibre Channel this change saves one of three interrupts per read command,
increasing performance from 126K to 160K IOPS.  For iSCSI this change saves
one of three PDUs per read command, increasing performance from 1M to 1.2M
IOPS.

MFC after: 1 month
Sponsored by: iXsystems, Inc.
sys/cam/ctl/ctl.c
sys/cam/ctl/ctl_backend_block.c
sys/cam/ctl/ctl_backend_ramdisk.c
sys/cam/ctl/ctl_frontend_iscsi.c
sys/cam/ctl/ctl_io.h
sys/cam/ctl/ctl_tpc.c
sys/cam/ctl/scsi_ctl.c