]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Coalesce last data move and command status for read commands.
authorAlexander Motin <mav@FreeBSD.org>
Tue, 25 Nov 2014 17:53:35 +0000 (17:53 +0000)
committerAlexander Motin <mav@FreeBSD.org>
Tue, 25 Nov 2014 17:53:35 +0000 (17:53 +0000)
commitf7241cceb02f56add7f4a504021069acb81f4bf6
treea3a596368ccfcff50a172e691d7ebad9c8822de3
parent82e843b93b2ce12c8cf5c1fd5fb88c1d37a54134
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