target: Implement mode page 0x1c, "Informational Exceptions"
authorRoland Dreier <roland@purestorage.com>
Wed, 31 Oct 2012 16:16:49 +0000 (09:16 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 7 Nov 2012 04:55:46 +0000 (20:55 -0800)
The Windows SCSI compliance test asks for this mode page, and it's
easy to implement: we can just return all 0s to show we don't support
any of these features.

Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_spc.c

index 8ccfe00c51d7d04a931926679482426ac1f81739..6c10fce9ef0936dd8d3e6ee3855d4d5eabd6dcbb 100644 (file)
@@ -760,6 +760,19 @@ out:
        return 20;
 }
 
+static int spc_modesense_informational_exceptions(struct se_device *dev, u8 pc, unsigned char *p)
+{
+       p[0] = 0x1c;
+       p[1] = 0x0a;
+
+       /* No changeable values for now */
+       if (pc == 1)
+               goto out;
+
+out:
+       return 12;
+}
+
 static struct {
        uint8_t         page;
        uint8_t         subpage;
@@ -768,6 +781,7 @@ static struct {
        { .page = 0x01, .subpage = 0x00, .emulate = spc_modesense_rwrecovery },
        { .page = 0x08, .subpage = 0x00, .emulate = spc_modesense_caching },
        { .page = 0x0a, .subpage = 0x00, .emulate = spc_modesense_control },
+       { .page = 0x1c, .subpage = 0x00, .emulate = spc_modesense_informational_exceptions },
 };
 
 static void spc_modesense_write_protect(unsigned char *buf, int type)