summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2015-01-30 09:04:20 +0000
committermav <mav@FreeBSD.org>2015-01-30 09:04:20 +0000
commitaba44db36efae3127a94fb0a0d3dad03fdd1d29c (patch)
tree6f3296d00f6faed9d8869362998ebee2fb8e8989
parente788b18c4ea45e5cde1a889b6afe1aedc0ea4dbd (diff)
downloadFreeBSD-src-aba44db36efae3127a94fb0a0d3dad03fdd1d29c.zip
FreeBSD-src-aba44db36efae3127a94fb0a0d3dad03fdd1d29c.tar.gz
MFC r277529: 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.
-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 ecebf15..e5f1cbf 100644
--- a/sys/cam/ctl/ctl.c
+++ b/sys/cam/ctl/ctl.c
@@ -10828,7 +10828,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);
/*
@@ -10849,7 +10850,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