summaryrefslogtreecommitdiffstats
path: root/sys/cam
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2015-01-22 14:49:36 +0000
committermav <mav@FreeBSD.org>2015-01-22 14:49:36 +0000
commit8338b606180e552e36385959efa54801319e7358 (patch)
treeaf1bbba0378d3af08148064cc76e40c2ac741dfe /sys/cam
parentc0aba3b50d494dc9fefa1cd1304481521fa05a36 (diff)
downloadFreeBSD-src-8338b606180e552e36385959efa54801319e7358.zip
FreeBSD-src-8338b606180e552e36385959efa54801319e7358.tar.gz
Don't count requests with status sent as overlapping.
While those requests are still in target OOA queue, for initiator they are already completed, so tags can be reused. MFC after: 1 week
Diffstat (limited to 'sys/cam')
-rw-r--r--sys/cam/ctl/ctl.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c
index e90a029..3565177 100644
--- a/sys/cam/ctl/ctl.c
+++ b/sys/cam/ctl/ctl.c
@@ -10826,7 +10826,8 @@ ctl_check_for_blockage(struct ctl_lun *lun, union ctl_io *pending_io,
ooa_io->io_hdr.nexus.targ_port)
&& (pending_io->io_hdr.nexus.initid.id ==
ooa_io->io_hdr.nexus.initid.id))
- && ((ooa_io->io_hdr.flags & CTL_FLAG_ABORT) == 0))
+ && ((ooa_io->io_hdr.flags & (CTL_FLAG_ABORT |
+ CTL_FLAG_STATUS_SENT)) == 0))
return (CTL_ACTION_OVERLAP);
/*
@@ -10847,7 +10848,8 @@ ctl_check_for_blockage(struct ctl_lun *lun, union ctl_io *pending_io,
ooa_io->io_hdr.nexus.targ_port)
&& (pending_io->io_hdr.nexus.initid.id ==
ooa_io->io_hdr.nexus.initid.id))
- && ((ooa_io->io_hdr.flags & CTL_FLAG_ABORT) == 0))
+ && ((ooa_io->io_hdr.flags & (CTL_FLAG_ABORT |
+ CTL_FLAG_STATUS_SENT)) == 0))
return (CTL_ACTION_OVERLAP_TAG);
/*
OpenPOWER on IntegriCloud