set-write-cache-policy command in iprconfig was designed to
enable/disable write cache of JBOD disks only.  Now, the same interface
can be used to configure vset write Cache. This patch modifies
set-write-cache-policy to also support vset devices.

Signed-off-by: Gabriel Krisman Bertazi <kris...@linux.vnet.ibm.com>
Acked-by: Brian King <brk...@linux.vnet.ibm.com>
---
 iprconfig.8 | 4 ++--
 iprconfig.c | 8 +++++---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/iprconfig.8 b/iprconfig.8
index f6e1643..ee034ca 100644
--- a/iprconfig.8
+++ b/iprconfig.8
@@ -601,8 +601,8 @@ Default is 2.
 .B set-write-cache-policy [device] [writeback|writethrough]
 .br
 Set the write cache policy for [device]. Available policies are
-writeback and writethrough.  This feature is only supported by JBOD
-disks.  Example:
+writeback and writethrough.  This command supports JBOD disk (write
+cache) and Volume Sets (vset write cache).  Example:
 .br
 .B iprconfig -c set-write-cache-policy sdp writeback
 .TP
diff --git a/iprconfig.c b/iprconfig.c
index 04ff837..8ca1484 100644
--- a/iprconfig.c
+++ b/iprconfig.c
@@ -10950,7 +10950,8 @@ int change_disk_config(i_container * i_con)
                        i_con = add_i_con(i_con,_("No"),&disk_config_attr[2]);
        }
 
-       if (ipr_is_gscsi(dev)) {
+       if (ipr_is_gscsi(dev) ||
+           (dev->ioa->vset_write_cache && ipr_is_volume_set(dev))) {
                disk_config_attr[3].option = 4;
                disk_config_attr[3].write_cache_policy =
                                                disk_attr.write_cache_policy;
@@ -15102,7 +15103,8 @@ static int set_device_write_cache_policy(char **args, 
int num_args)
                return -EINVAL;
        }
 
-       if (!ipr_is_gscsi(dev)) {
+       if (!ipr_is_gscsi(dev) &&
+           (!ipr_is_volume_set(dev) || !dev->ioa->vset_write_cache)) {
                scsi_err(dev, "Unable to set cache policy.\n");
                return -EINVAL;
        }
@@ -15153,7 +15155,7 @@ static int query_device_write_cache_policy(char **args, 
int num_args)
                fprintf(stderr, "Cannot find %s\n", args[0]);
                return -EINVAL;
        }
-       if (dev->scsi_dev_data->type != TYPE_DISK) {
+       if (!ipr_is_gscsi(dev) && !ipr_is_volume_set(dev)) {
                scsi_err(dev, "Cannot query write back policy.\n");
                return -EINVAL;
        }
-- 
2.1.0


------------------------------------------------------------------------------
_______________________________________________
Iprdd-devel mailing list
Iprdd-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iprdd-devel

Reply via email to