Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Apr 2014 10:58:52 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r264297 - head/sys/cam/ctl
Message-ID:  <201404091058.s39Awquc082826@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Wed Apr  9 10:58:52 2014
New Revision: 264297
URL: http://svnweb.freebsd.org/changeset/base/264297

Log:
  Introduce new serialization type CTL_SERIDX_UNMAP.
  
  Unfortunately we can't check range collisions for UNMAP commands alike
  to writes, because they include multiple ranges, which are also passed
  in data block, not in CDB.  As result, UNMAP commands have to be treated
  as colliding with any other command accessing the media.
  
  From the other side all UNMAPs are equal (we don't support ANCHOR flag),
  so we can execute several UNMAPs same time.

Modified:
  head/sys/cam/ctl/ctl_cmd_table.c
  head/sys/cam/ctl/ctl_private.h
  head/sys/cam/ctl/ctl_ser_table.c

Modified: head/sys/cam/ctl/ctl_cmd_table.c
==============================================================================
--- head/sys/cam/ctl/ctl_cmd_table.c	Wed Apr  9 10:44:09 2014	(r264296)
+++ head/sys/cam/ctl/ctl_cmd_table.c	Wed Apr  9 10:58:52 2014	(r264297)
@@ -336,7 +336,7 @@ struct ctl_cmd_entry ctl_cmd_table[] =
  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
 
 /* 42 READ SUB-CHANNEL / UNMAP */
-{ctl_unmap, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
+{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
  CTL_LUN_PAT_WRITE},
 
 /* 43 READ TOC/PMA/ATIP */

Modified: head/sys/cam/ctl/ctl_private.h
==============================================================================
--- head/sys/cam/ctl/ctl_private.h	Wed Apr  9 10:44:09 2014	(r264296)
+++ head/sys/cam/ctl/ctl_private.h	Wed Apr  9 10:58:52 2014	(r264297)
@@ -156,6 +156,7 @@ typedef enum {
 	CTL_SERIDX_TUR	= 0,
 	CTL_SERIDX_READ,
 	CTL_SERIDX_WRITE,
+	CTL_SERIDX_UNMAP,
 	CTL_SERIDX_MD_SNS,
 	CTL_SERIDX_MD_SEL,
 	CTL_SERIDX_RQ_SNS,

Modified: head/sys/cam/ctl/ctl_ser_table.c
==============================================================================
--- head/sys/cam/ctl/ctl_ser_table.c	Wed Apr  9 10:44:09 2014	(r264296)
+++ head/sys/cam/ctl/ctl_ser_table.c	Wed Apr  9 10:58:52 2014	(r264297)
@@ -60,22 +60,23 @@
 
 static ctl_serialize_action
 ctl_serialize_table[CTL_SERIDX_COUNT][CTL_SERIDX_COUNT] = {
-/**>IDX_ :: 2nd:TUR RD  WRT  MDSN MDSL RQSN INQ  RDCP RES  REL LSNS FMT STR PRIN PROT MAININ*/
-/*TUR     */{   pS, pS, pS,  bK,  bK,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*READ    */{   pS, pS, xT,  bK,  bK,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*WRITE   */{   pS, xT, xT,  bK,  bK,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*MD_SNS  */{   bK, bK, bK,  pS,  bK,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*MD_SEL  */{   bK, bK, bK,  bK,  bK,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*RQ_SNS  */{   pS, pS, pS,  pS,  pS,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*INQ     */{   pS, pS, pS,  pS,  pS,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*RD_CAP  */{   pS, pS, pS,  pS,  pS,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*RESV    */{   bK, bK, bK,  bK,  bK,  bK,  bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK,  bK},
-/*REL     */{   bK, bK, bK,  bK,  bK,  bK,  bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK,  bK},
-/*LOG_SNS */{   pS, pS, pS,  pS,  bK,  bK,  pS,  pS,  bK,  bK, pS,  bK, bK, bK,  bK,  bK},
-/*FORMAT  */{   pS, bK, bK,  bK,  bK,  pS,  pS,  bK,  bK,  bK, bK,  bK, bK, bK,  bK,  bK},
-/*START   */{   bK, bK, bK,  bK,  bK,  bK,  pS,  bK,  bK,  bK, bK,  bK, bK, bK,  bK,  bK},
-/*PRES_IN */{   bK, bK, bK,  bK,  bK,  bK,  bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK,  bK},
-/*PRES_OUT*/{   bK, bK, bK,  bK,  bK,  bK,  bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK,  bK},
-/*MAIN_IN */{   bK, bK, bK,  bK,  bK,  bK,  pS,  bK,  bK,  bK, bK,  bK, bK, bK,  bK,  pS}
+/**>IDX_ :: 2nd:TUR RD  WRT UNM MDSN MDSL RQSN INQ RDCP RES REL LSNS FMT STR PRIN PROT MAININ*/
+/*TUR     */{   pS, pS, pS, pS, bK,  bK,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*READ    */{   pS, pS, xT, bK, bK,  bK,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*WRITE   */{   pS, xT, xT, bK, bK,  bK,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*UNMAP   */{   pS, bK, bK, pS, bK,  bK,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*MD_SNS  */{   bK, bK, bK, bK, pS,  bK,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*MD_SEL  */{   bK, bK, bK, bK, bK,  bK,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*RQ_SNS  */{   pS, pS, pS, pS, pS,  pS,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*INQ     */{   pS, pS, pS, pS, pS,  pS,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*RD_CAP  */{   pS, pS, pS, pS, pS,  pS,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*RESV    */{   bK, bK, bK, bK, bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK, bK, bK,  bK,  bK},
+/*REL     */{   bK, bK, bK, bK, bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK, bK, bK,  bK,  bK},
+/*LOG_SNS */{   pS, pS, pS, pS, pS,  bK,  bK,  pS, pS,  bK, bK, pS,  bK, bK, bK,  bK,  bK},
+/*FORMAT  */{   pS, bK, bK, bK, bK,  bK,  pS,  pS, bK,  bK, bK, bK,  bK, bK, bK,  bK,  bK},
+/*START   */{   bK, bK, bK, bK, bK,  bK,  bK,  pS, bK,  bK, bK, bK,  bK, bK, bK,  bK,  bK},
+/*PRES_IN */{   bK, bK, bK, bK, bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK, bK, bK,  bK,  bK},
+/*PRES_OUT*/{   bK, bK, bK, bK, bK,  bK,  bK,  bK, bK,  bK, bK, bK,  bK, bK, bK,  bK,  bK},
+/*MAIN_IN */{   bK, bK, bK, bK, bK,  bK,  bK,  pS, bK,  bK, bK, bK,  bK, bK, bK,  bK,  pS}
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404091058.s39Awquc082826>