Hello community,

here is the log from the commit of package iprutils for openSUSE:Factory 
checked in at 2014-09-03 18:21:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/iprutils (Old)
 and      /work/SRC/openSUSE:Factory/.iprutils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "iprutils"

Changes:
--------
--- /work/SRC/openSUSE:Factory/iprutils/iprutils.changes        2014-07-13 
17:16:26.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.iprutils.new/iprutils.changes   2014-09-03 
20:01:54.000000000 +0200
@@ -1,0 +2,8 @@
+Wed Aug 27 09:37:31 UTC 2014 - [email protected]
+
+- "read intensive" disks are now showing up in iprconfig menu
+  (bnc#890872) 
+
+- added patches:
+  * iprutils.read_intensive_disks_doesnt_show_up.patch
+-------------------------------------------------------------------

New:
----
  iprutils.read_intensive_disks_doesnt_show_up.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ iprutils.spec ++++++
--- /var/tmp/diff_new_pack.c8znpA/_old  2014-09-03 20:01:57.000000000 +0200
+++ /var/tmp/diff_new_pack.c8znpA/_new  2014-09-03 20:01:57.000000000 +0200
@@ -32,6 +32,7 @@
 Patch4:         iprutils-close.diff
 Patch5:         iprutils.redundant_paths_in_GTO.patch 
 Patch6:         iprutils.generate_ipr_dump_file.patch
+Patch7:         iprutils.read_intensive_disks_doesnt_show_up.patch 
 Source1:        iprdump.service
 Source2:        iprinit.service
 Source3:        iprupdate.service
@@ -56,6 +57,7 @@
 %patch4 -p1
 %patch5 -p2
 %patch6 -p2
+%patch7 -p2
 
 %build
 make %{?_smp_mflags} CFLAGS="%{optflags} -I/usr/include/ncurses 
\$(IPR_DEFINES)" CC="gcc"

++++++ iprutils.read_intensive_disks_doesnt_show_up.patch ++++++
---
 iprutils/iprconfig.c |  172 +++++++++++++++++++++++++++++----------------------
 iprutils/iprconfig.h |    2 
 iprutils/iprlib.c    |   10 ++
 iprutils/iprlib.h    |   43 +++++++++---
 4 files changed, 144 insertions(+), 83 deletions(-)

Index: b/iprutils/iprconfig.c
===================================================================
--- a/iprutils/iprconfig.c      2014-04-08 12:19:49.000000000 -0500
+++ b/iprutils/iprconfig.c      2014-08-25 11:18:45.379667075 -0500
@@ -269,7 +269,7 @@ static i_container *free_i_con(i_contain
  * @d:                 data buffer
  *
  * Returns:
- *   i_container pointer
+ *   i_container pointen
  **/
 static i_container *add_i_con(i_container *i_con, char *f, void *d)
 {  
@@ -282,7 +282,7 @@ static i_container *add_i_con(i_containe
        strncpy(new_i_con->field_data, f, MAX_FIELD_SIZE+1); 
        new_i_con->field_data[strlen(f)+1] = '\0';
 
-       /* a pointer to the device information represented by the i_con */
+       /* a pointen to the device information represented by the i_con */
        new_i_con->data = d;
 
        if (i_con)
@@ -465,7 +465,7 @@ static void cmdline_exit_func()
  * @list_str:          
  *
  * Returns:
- *   pointer to body string
+ *   pointen to body string
  **/
 static char *ipr_list_opts(char *body, char *key, char *list_str)
 {
@@ -489,7 +489,7 @@ static char *ipr_list_opts(char *body, c
  * @body:              
  *
  * Returns:
- *   pointer to body string
+ *   pointen to body string
  **/
 static char *ipr_end_list(char *body)
 {
@@ -888,7 +888,7 @@ static struct screen_output *screen_driv
                                                if ((temp->key[0] == '\n') && 
(num_fields > 0)) {
 
                                                        /* store field data to 
existing i_con (which should already
-                                                        contain pointers) */
+                                                        contain pointens) */
                                                        i_container *temp_i_con 
= i_con_head;
                                                        
form_driver(form,REQ_VALIDATION);
 
@@ -1108,35 +1108,35 @@ leave:
 static char *status_hdr[] = {
                /*   .        .                  .            .                 
          .          */
                
/*012345678901234567890123456789012345678901234567890123456789012345678901234567890
 */
-               "OPT Name   Resource Path/Address      Vendor   Product ID      
 Status",
-               "OPT Name   PCI/SCSI Location          Description              
 Status",
+               "OPT Name   Resource Path/Address      Vendor   Product ID      
    Status",
+               "OPT Name   PCI/SCSI Location          Description              
    Status",
                "Name   Resource Path/Address      Vendor   Product ID       
Status",
                "Name   PCI/SCSI Location          Description               
Status",
                "OPT SAS Port/SAS Address   Description        Active Status    
        Info",
                "OPT SAS Port/SAS Address   Description        Active Status    
        Info",
                "SAS Port/SAS Address   Description        Active Status        
    Info",
                "SAS Port/SAS Address   Description        Active Status        
    Info",
-               "OPT Name   Platform Location          Description              
 Status",
-               "OPT Name   SCSI Host/Resource Path      Vendor   Product ID    
   Status",
-               "OPT Name   SCSI Host/Resource Path      Vendor   Product ID    
   Status",
-               "Name   Platform Location          Description               
Status",
+               "OPT Name   Platform Location          Description              
    Status",
+               "OPT Name   SCSI Host/Resource Path      Vendor   Product ID    
      Status",
+               "OPT Name   SCSI Host/Resource Path      Vendor   Product ID    
      Status",
+               "Name   Platform Location          Description                  
Status",
                "OPT Name   PCI/Host/Resource Path                   Serial 
Number Status",
                "OPT Name   Physical Location                        Production 
ID    Status",
                "Name   Physical Location                        Serial Number 
Status"};
 
 static char *status_sep[] = {
-               "--- ------ -------------------------- -------- 
---------------- -----------------",
-               "--- ------ -------------------------  
------------------------- -----------------",
+               "--- ------ -------------------------- -------- 
------------------- -----------------",
+               "--- ------ -------------------------  
---------------------------- -----------------",
                "------ -------------------------- -------- ---------------- 
-----------------",
                "------ -------------------------  ------------------------- 
-----------------",
                "--- --------------------- ------------------ ------ 
----------------- ----------",
                "--- ---------------------- ------------------ ------ 
----------------- ----------",
                "---------------------- ------------------ ------ 
----------------- ----------",
                "---------------------- ------------------ ------ 
----------------- ----------",
-               "--- ------ -------------------------- 
------------------------- -----------------",
-               "--- ------ ---------------------------- -------- 
---------------- --------------",
-               "--- ------ ---------------------------- -------- 
---------------- --------------",
-               "------ -------------------------- ------------------------- 
------------",
+               "--- ------ -------------------------- 
---------------------------- -----------------",
+               "--- ------ ---------------------------- -------- 
------------------- --------------",
+               "--- ------ ---------------------------- -------- 
------------------- --------------",
+               "------ -------------------------- ---------------------------- 
------------",
                "--- ------ ---------------------------------------- 
------------- ------------",
                "--- ------ ---------------------------------------- 
---------------- ------------",
                "------ ---------------------------------------- ------------- 
------------",
@@ -2872,7 +2872,7 @@ int raid_stop(i_container *i_con)
 
        processing();
 
-       /* empty the linked list that contains field pointers */
+       /* empty the linked list that contains field pointens */
        i_con = free_i_con(i_con);
 
        rc = RC_SUCCESS;
@@ -3166,7 +3166,7 @@ int raid_start(i_container *i_con)
 
        processing();
 
-       /* empty the linked list that contains field pointers */
+       /* empty the linked list that contains field pointens */
        i_con = free_i_con(i_con);
 
        rc = RC_SUCCESS;
@@ -3646,7 +3646,7 @@ int configure_raid_parameters(i_containe
 
                                /* get appropriate memory, the text portion 
needs to be
                                 done up front as the new_item() function uses 
the
-                                passed pointer to display data */
+                                passed pointen to display data */
                                raid_item = realloc(raid_item, sizeof(ITEM **) 
* (index + 1));
                                raid_menu_str = realloc(raid_menu_str, 
sizeof(struct text_str) * (index));
                                userptr = realloc(userptr, sizeof(int) * (index 
+ 1));
@@ -3686,7 +3686,7 @@ int configure_raid_parameters(i_containe
 
                                /* get appropriate memory, the text portion 
needs to be
                                 done up front as the new_item() function uses 
the
-                                passed pointer to display data */
+                                passed pointen to display data */
                                raid_item = realloc(raid_item, sizeof(ITEM **) 
* (index + 1));
                                stripe_menu_str = realloc(stripe_menu_str, 
sizeof(struct text_str) * (index));
                                userptr = realloc(userptr, sizeof(int) * (index 
+ 1));
@@ -3972,6 +3972,11 @@ int raid_start_complete()
                                                                  "non 4K disks 
and 4K disks can not be mixed in an array.\n"),
                                                       ioa->ioa.gen_name);
                                                rc = 
RC_91_Mixed_Logical_Blk_Size;
+                                       } else  if (status_record->status == 
IPR_CMD_STATUS_UNSUPT_REQ_BLK_DEV_CLASS) {
+                                                syslog(LOG_ERR, _("Start 
parity protect to %s failed.  "
+                                                                 "These device 
contained a conmination of block device class filed that was not supported in 
an array.\n"),
+                                                      ioa->ioa.gen_name);
+                                               rc = 
RC_92_UNSUPT_REQ_BLK_DEV_CLASS;
                                        } else {
 
                                                syslog(LOG_ERR, _("Start parity 
protect to %s failed.  "
@@ -3999,6 +4004,11 @@ int raid_start_complete()
                        if (done_bad) {
                                if (status_record->status == 
IPR_CMD_STATUS_MIXED_BLK_DEV_CLASESS)
                                        return RC_22_Mixed_Block_Dev_Classes;
+                               if (status_record->status == 
IPR_CMD_STATUS_MIXED_LOG_BLK_SIZE)
+                                       return  RC_91_Mixed_Logical_Blk_Size;
+                               if (status_record->status == 
IPR_CMD_STATUS_UNSUPT_REQ_BLK_DEV_CLASS)
+                                       return RC_92_UNSUPT_REQ_BLK_DEV_CLASS;
+
                                /* Start Parity Protection failed. */
                                return RC_19_Create_Fail;
                        }
@@ -5129,7 +5139,7 @@ int configure_raid_migrate(i_container *
 
                                /* get appropriate memory, the text portion
                                   needs to be done up front as the new_item()
-                                  function uses the passed pointer to display 
data */
+                                  function uses the passed pointen to display 
data */
                                raid_item = realloc(raid_item, sizeof(ITEM **) 
* (index + 1));
                                raid_menu_str = realloc(raid_menu_str, 
sizeof(struct text_str) * (index));
                                userptr = realloc(userptr, sizeof(int) * (index 
+ 1));
@@ -8817,7 +8827,7 @@ int reclaim_cache(i_container* i_con)
        int k;
 
        processing();
-       /* empty the linked list that contains field pointers */
+       /* empty the linked list that contains field pointens */
        i_con = free_i_con(i_con);
 
        check_current_config(false);
@@ -10389,7 +10399,7 @@ int driver_config(i_container *i_con)
        int toggle = 0;
 
        processing();
-       /* empty the linked list that contains field pointers */
+       /* empty the linked list that contains field pointens */
        i_con = free_i_con(i_con);
 
        rc = RC_SUCCESS;
@@ -12278,9 +12288,9 @@ static void get_status(struct ipr_dev *d
                        sprintf(buf, "Unknown");
                else if (path_status && !rc) {
                        if (info.healthy_paths > 1)
-                               sprintf(buf, "Redundant Paths");
+                               sprintf(buf, "Redundant");
                        else if (info.healthy_paths)
-                               sprintf(buf, "Single Path");
+                               sprintf(buf, "Single");
                        else
                                sprintf(buf, "No Paths");
                } else if (format_in_progress)
@@ -12656,7 +12666,7 @@ char *__print_device(struct ipr_dev *dev
        char vendor_id[IPR_VENDOR_ID_LEN + 1];
        char product_id[IPR_PROD_ID_LEN + 1];
        struct ipr_ioa *ioa = dev->ioa, *ioa_phy_loc;
-       bool is4k = false;
+       bool is4k = false, isri = false;
 
        /* In cases where we're having problems with the device */
        if (!ioa)
@@ -12775,7 +12785,7 @@ char *__print_device(struct ipr_dev *dev
 
                                        len += 40-loc_len;
                                }
-                               len += sprintf(body + len,"%-16s ",
+                               len += sprintf(body + len,"%-19s ",
                                       scsi_dev_data->product_id);
                        }
                else { 
@@ -12792,12 +12802,12 @@ char *__print_device(struct ipr_dev *dev
 
                                len += tab_stop;
 
-                               for (i = 0; i < 26-tab_stop; i++)
+                               for (i = 0; i < 29-tab_stop; i++)
                                        body[len+i] = ' ';
 
-                               len += 26-tab_stop;
+                               len += 29-tab_stop;
                        } else 
-                               len += sprintf(body + len,"%-8s %-16s ",
+                               len += sprintf(body + len,"%-8s %-19s ",
                                               scsi_dev_data->vendor_id,
                                               scsi_dev_data->product_id);
                }
@@ -12823,7 +12833,7 @@ char *__print_device(struct ipr_dev *dev
                                len += 29-loc_len;
                        }
                }
-               len += sprintf(body + len, "%-8s %-16s ", " ", " ");
+               len += sprintf(body + len, "%-8s %-19s ", " ", " ");
        } else {
                if (serial_num) {
                        if (!res_path || !ioa->sis64) {
@@ -12882,11 +12892,11 @@ char *__print_device(struct ipr_dev *dev
                                }
                        }
                        if (hw_loc) {
-                               len += sprintf(body + len, "%-16s ",
+                               len += sprintf(body + len, "%-19s ",
                                                product_id);
                        }
                        else {
-                               len += sprintf(body + len, "%-8s %-16s ",
+                               len += sprintf(body + len, "%-8s %-19s ",
                                               vendor_id, product_id);
                        }
 
@@ -12897,63 +12907,83 @@ char *__print_device(struct ipr_dev *dev
                                is4k = false;
 
                        if (ipr_is_hot_spare(dev)) {
-                               if (dev->block_dev_class & IPR_SSD)
-                                       sprintf(buf, "%s%s", is4k ? "4K " : "", 
"SSD Hot Spare");
-                               else
-                                       sprintf(buf, "%s%s", is4k ? "4K " : "", 
"Hot Spare");
-                               len += sprintf(body + len, "%-25s ", buf);
+                               if (dev->block_dev_class & IPR_SSD) {
+                                       if (dev->read_intensive & IPR_RI)
+                                               isri = true;
+                                       else
+                                               isri = false;
+                                       sprintf(buf, "%s%sSSD Hot Spare", is4k 
? "4K " : "", isri ? "RI " : "");
+                               } else
+                                       sprintf(buf, "%s Hot Spare", is4k ? "4K 
" : "");
+                               len += sprintf(body + len, "%-28s ", buf);
                        } else if (ipr_is_volume_set(dev) || ipr_is_array(dev)) 
{
-                               if (dev->block_dev_class & IPR_SSD)
-                                       sprintf(buf, "RAID %s %s SSD Disk 
Array",
+                               if (dev->block_dev_class & IPR_SSD) {
+                                       if (dev->read_intensive & IPR_RI)
+                                               isri = true;
+                                       else
+                                               isri = false;
+                                       sprintf(buf, "RAID %s%s%s SSD Array",
                                                
get_prot_level_str(ioa->supported_arrays, dev->raid_level),
-                                               is4k ? "4K" : "");
-                               else
-                                       sprintf(buf, "RAID %s %s Disk Array",
+                                               is4k ? " 4K" : "", isri ? " RI" 
: "");
+                               } else
+                                       sprintf(buf, "RAID %s%s Array",
                                                
get_prot_level_str(ioa->supported_arrays, dev->raid_level),
                                                is4k ? "4K" : "");
-                               len += sprintf(body + len, "%-25s ", buf);
+                               len += sprintf(body + len, "%-28s ", buf);
                        } else if (ipr_is_array_member(dev)) {
                                if (indent)
-                                       if (dev->block_dev_class & IPR_SSD)
-                                               sprintf(raid_str,"  RAID %s %s 
SSD Member",
-                                                       dev->prot_level_str, 
is4k ? "4K" : "");
-                                       else
+                                       if (dev->block_dev_class & IPR_SSD) {
+                                               if (dev->read_intensive & 
IPR_RI)
+                                                       isri = true;
+                                               else
+                                                       isri = false;
+                                               sprintf(raid_str,"  RAID %s%s%s 
SSD Member",
+                                                       dev->prot_level_str, 
is4k ? " 4K" : "", isri ? " RI" : "");
+                                       } else
                                                sprintf(raid_str,"  RAID %s %s 
Array Member",
                                                        dev->prot_level_str, 
is4k ? "4K" : "");
                                else
-                                       if (dev->block_dev_class & IPR_SSD)
-                                               sprintf(raid_str,"RAID %s %sSSD 
Member",
-                                                       dev->prot_level_str, 
is4k ? "4K" : "");
-                                       else
+                                       if (dev->block_dev_class & IPR_SSD) {
+                                               if (dev->read_intensive & 
IPR_RI)
+                                                       isri = true;
+                                               else
+                                                       isri = false;
+                                               sprintf(raid_str,"RAID %s%s SSD 
%s Member",
+                                                       dev->prot_level_str, 
is4k ? " 4K" : "", isri ? " RI" : "");
+                                       } else
                                                sprintf(raid_str,"RAID %s %s 
Array Member",
                                                        dev->prot_level_str, 
is4k ? "4K" : "");
 
-                               len += sprintf(body + len, "%-25s ", raid_str);
+                               len += sprintf(body + len, "%-28s ", raid_str);
                        } else if (ipr_is_af_dasd_device(dev))
-                               if (dev->block_dev_class & IPR_SSD)
-                                       len += sprintf(body + len, "%-25s ", 
is4k ? "Advanced Function 4K SSD" :
-                                                       "Advanced Function 
SSD");
-                               else
-                                       len += sprintf(body + len, "%-25s ", 
is4k ? "Advanced Function 4K Disk" :
+                               if (dev->block_dev_class & IPR_SSD) {
+                                       if (dev->read_intensive & IPR_RI)
+                                               len += sprintf(body + len, 
"%-28s ", is4k ? "Advanced Function 4K RI SSD" :
+                                                               "Advanced 
Function RI SSD");
+                                       else
+                                               len += sprintf(body + len, 
"%-28s ", is4k ? "Advanced Function 4K SSD" :
+                                                               "Advanced 
Function SSD");
+                               } else
+                                       len += sprintf(body + len, "%-28s ", 
is4k ? "Advanced Function 4K Disk" :
                                                        "Advanced Function 
Disk");
                        else if (scsi_dev_data && scsi_dev_data->type == 
TYPE_ENCLOSURE) {
                                if (serial_num == 1)
                                        len += sprintf(body + len, "%-13s ", 
(char *)&dev->serial_number);
                                else
-                                       len += sprintf(body + len, "%-25s ", 
"Enclosure");
+                                       len += sprintf(body + len, "%-28s ", 
"Enclosure");
                
                        } else if (scsi_dev_data && scsi_dev_data->type == 
TYPE_PROCESSOR)
-                               len += sprintf(body + len, "%-25s ", 
"Processor");
+                               len += sprintf(body + len, "%-28s ", 
"Processor");
                        else if (scsi_dev_data && scsi_dev_data->type == 
TYPE_ROM)
-                               len += sprintf(body + len, "%-25s ", "CD/DVD");
+                               len += sprintf(body + len, "%-28s ", "CD/DVD");
 
                        else if (scsi_dev_data && scsi_dev_data->type == 
TYPE_TAPE)
-                               len += sprintf(body + len, "%-25s ", "Tape");
+                               len += sprintf(body + len, "%-28s ", "Tape");
 
                        else if (ioa->ioa_dead)
-                               len += sprintf(body + len, "%-25s ", 
"Unavailable Device");
+                               len += sprintf(body + len, "%-28s ", 
"Unavailable Device");
                        else {
-                               len += sprintf(body + len, "%-25s ",
+                               len += sprintf(body + len, "%-29s ",
                                                is4k ? "Physical 4K Disk" : 
"Physical Disk");
                        }
                }
@@ -17593,7 +17623,7 @@ static const struct {
 };
 
 /**
- * non_interactive_cmd - process a command line command
+ * non_intenactive_cmd - process a command line command
  * @cmd:               command string
  * @args:              argument vector
  * @num_args:          number of arguments
@@ -17601,7 +17631,7 @@ static const struct {
  * Returns:
  *   0 if success / non-zero on failure
  **/
-static int non_interactive_cmd(char *cmd, char **args, int num_args)
+static int non_intenactive_cmd(char *cmd, char **args, int num_args)
 {
        int rc, i;
 
@@ -17669,7 +17699,7 @@ int main(int argc, char *argv[])
 {
        int  next_editor, next_dir, next_cmd, next_args, i, rc = 0;
        char parm_editor[200], parm_dir[200], cmd[200];
-       int non_interactive = 0;
+       int non_intenactive = 0;
 
        strcpy(parm_dir, DEFAULT_LOG_DIR);
        strcpy(parm_editor, DEFAULT_EDITOR);
@@ -17702,7 +17732,7 @@ int main(int argc, char *argv[])
                                next_dir = 0;
                        } else if (next_cmd) {
                                strcpy(cmd, argv[i]);
-                               non_interactive = 1;
+                               non_intenactive = 1;
                                next_cmd = 0;
                                next_args = 1;
                        } else if (next_args) {
@@ -17725,8 +17755,8 @@ int main(int argc, char *argv[])
        exit_func = tool_exit_func;
        tool_init(0);
 
-       if (non_interactive)
-               return non_interactive_cmd(cmd, add_args, num_add_args);
+       if (non_intenactive)
+               return non_intenactive_cmd(cmd, add_args, num_add_args);
 
        use_curses = 1;
        curses_init();
Index: b/iprutils/iprconfig.h
===================================================================
--- a/iprutils/iprconfig.h      2014-04-08 12:19:49.000000000 -0500
+++ b/iprutils/iprconfig.h      2014-08-25 10:30:23.379666781 -0500
@@ -1648,6 +1648,7 @@ const char *screen_status[] = {
        /* 89 */ __("Incorrect device type specified. Please specify a valid 
disk enclosure to resume"),
        /* 90 */ __("Selected disk enclosure is in Unknown state. Please check 
your hardware support"),
        /* 91 */ __("Create disk array failed - can not mix 5XX and 4K disks."),
+       /* 92 */ __("Create disk array failed - can not build with read 
intensive disks only."),
 
       /* NOTE:  127 maximum limit */
 };
@@ -1746,6 +1747,7 @@ enum {
        RC_89_Invalid_Dev_For_Resume,
        RC_90_Enclosure_Is_Unknown,
        RC_91_Mixed_Logical_Blk_Size,
+       RC_92_UNSUPT_REQ_BLK_DEV_CLASS,
 
        /* NOTE:  127 maximum limit */
 };
Index: b/iprutils/iprlib.c
===================================================================
--- a/iprutils/iprlib.c 2014-08-17 13:09:33.000000000 -0500
+++ b/iprutils/iprlib.c 2014-08-25 10:30:23.409667166 -0500
@@ -6293,6 +6293,8 @@ void check_current_config(bool allow_reb
                                dev->array_id = dev->dev_rcd->type2.array_id;
                                dev->resource_handle = 
dev->dev_rcd->type2.resource_handle;
                                dev->block_dev_class = 
dev->dev_rcd->type2.block_dev_class;
+                               if (dev->block_dev_class & IPR_SSD)
+                                       dev->read_intensive = 
dev->dev_rcd->type2.read_intensive;
                        } else if (dev->qac_entry->record_id == 
IPR_RECORD_ID_DEVICE_RECORD_3) {
                                dev->vendor_id = dev->dev_rcd->type3.vendor_id;
                                dev->product_id = 
dev->dev_rcd->type3.product_id;
@@ -6300,6 +6302,8 @@ void check_current_config(bool allow_reb
                                dev->array_id = dev->dev_rcd->type3.array_id;
                                dev->resource_handle = 
dev->dev_rcd->type3.resource_handle;
                                dev->block_dev_class = 
dev->dev_rcd->type3.block_dev_class;
+                               if (dev->block_dev_class & IPR_SSD)
+                                       dev->read_intensive = 
dev->dev_rcd->type3.read_intensive;
                        } else if (dev->qac_entry->record_id == 
IPR_RECORD_ID_ARRAY_RECORD) {
                                dev->vendor_id = 
dev->array_rcd->type2.vendor_id;
                                dev->product_id = 
dev->array_rcd->type2.product_id;
@@ -6309,6 +6313,8 @@ void check_current_config(bool allow_reb
                                dev->stripe_size = 
dev->array_rcd->type2.stripe_size;
                                dev->resource_handle = 
dev->array_rcd->type2.resource_handle;
                                dev->block_dev_class = 
dev->array_rcd->type2.block_dev_class;
+                               if (dev->block_dev_class & IPR_SSD)
+                                       dev->read_intensive = 
dev->dev_rcd->type2.read_intensive;
                        } else if (dev->qac_entry->record_id == 
IPR_RECORD_ID_VSET_RECORD_3) {
                                dev->vendor_id = 
dev->array_rcd->type3.vendor_id;
                                dev->product_id = 
dev->array_rcd->type3.product_id;
@@ -6318,6 +6324,8 @@ void check_current_config(bool allow_reb
                                dev->stripe_size = 
dev->array_rcd->type3.stripe_size;
                                dev->resource_handle = 
dev->array_rcd->type3.resource_handle;
                                dev->block_dev_class = 
dev->array_rcd->type3.block_dev_class;
+                               if (dev->block_dev_class & IPR_SSD)
+                                       dev->read_intensive = 
dev->dev_rcd->type3.read_intensive;
                        } else if (dev->qac_entry->record_id == 
IPR_RECORD_ID_ARRAY_RECORD_3) {
                                dev->vendor_id = 
dev->array_rcd->type3.vendor_id;
                                dev->product_id = 
dev->array_rcd->type3.product_id;
@@ -6327,6 +6335,8 @@ void check_current_config(bool allow_reb
                                dev->stripe_size = 
dev->array_rcd->type3.stripe_size;
                                dev->resource_handle = 
dev->array_rcd->type3.resource_handle;
                                dev->block_dev_class = 
dev->array_rcd->type3.block_dev_class;
+                               if (dev->block_dev_class & IPR_SSD)
+                                       dev->read_intensive = 
dev->dev_rcd->type3.read_intensive;
                        }
                }
                get_prot_levels(ioa);
Index: b/iprutils/iprlib.h
===================================================================
--- a/iprutils/iprlib.h 2014-04-08 12:19:49.000000000 -0500
+++ b/iprutils/iprlib.h 2014-08-25 10:30:23.459666948 -0500
@@ -226,6 +226,7 @@ typedef uint64_t u64;
 #define IPR_HDD                              0x0
 #define IPR_SSD                              0x1
 #define IPR_BLK_DEV_CLASS_4K                 0x4
+#define IPR_RI                              0x1
 
 #define IPR_ARRAY_VIRTUAL_BUS                  0x1
 #define IPR_VSET_VIRTUAL_BUS                   0x2
@@ -824,9 +825,13 @@ struct ipr_array_record {
                        u8  serial_number[8];
 #if defined (__BIG_ENDIAN_BITFIELD)
                        u8  block_dev_class:3;
-                       u8  reserved5:5;
-#elif defined (__LITTLE_ENDIAN_BITFIELD)
-                       u8  reserved5:5;
+                       u8  reserved51:1;
+                       u8  read_intensive:1;
+                       u8  reserved5:3;
+#elif defined (__LITTLE_ENDIAN_BITFIELD)
+                       u8  reserved5:3;
+                       u8  read_intensive:1;
+                       u8  reserved51:1;
                        u8  block_dev_class:3;
 #endif
                        u8  reserved6;
@@ -848,9 +853,13 @@ struct ipr_array_record {
                        u8  array_id;
 #if defined (__BIG_ENDIAN_BITFIELD)
                        u8  block_dev_class:3;
-                       u8  reserved9:5;
-#elif defined (__LITTLE_ENDIAN_BITFIELD)
-                       u8  reserved9:5;
+                       u8  reserved91:1;
+                       u8  read_intensive:1;
+                       u8  reserved9:3;
+#elif defined (__LITTLE_ENDIAN_BITFIELD)
+                       u8  reserved9:3;
+                       u8  read_intensive:1;
+                       u8  reserved91:1;
                        u8  block_dev_class:3;
 #endif
                        u32 resource_handle;
@@ -951,9 +960,13 @@ struct ipr_dev_record {
 
 #if defined (__BIG_ENDIAN_BITFIELD)
                        u8  block_dev_class:3;
-                       u8  reserved5:5;
-#elif defined (__LITTLE_ENDIAN_BITFIELD)
-                       u8  reserved5:5;
+                       u8  reserved51:1;
+                       u8  read_intensive:1;
+                       u8  reserved5:3;
+#elif defined (__LITTLE_ENDIAN_BITFIELD)
+                       u8  reserved5:3;
+                       u8  read_intensive:1;
+                       u8  reserved51:1;
                        u8  block_dev_class:3;
 #endif
                        u8  reserved6;
@@ -970,9 +983,13 @@ struct ipr_dev_record {
 
 #if defined (__BIG_ENDIAN_BITFIELD)
                        u8  block_dev_class:3;
-                       u8  reserved8:5;
-#elif defined (__LITTLE_ENDIAN_BITFIELD)
-                       u8  reserved8:5;
+                       u8  reserved81:1;
+                       u8  read_intensive:1;
+                       u8  reserved8:3;
+#elif defined (__LITTLE_ENDIAN_BITFIELD)
+                       u8  reserved8:3;
+                       u8  read_intensive:1;
+                       u8  reserved81:1;
                        u8  block_dev_class:3;
 #endif
                        u32 resource_handle;
@@ -1330,6 +1347,7 @@ struct ipr_dev {
        u16 stripe_size;
        u32 resource_handle;
        u8  block_dev_class;
+       u8  read_intensive;
        u32 is_reclaim_cand:1;
        u32 should_init:1;
        u32 init_not_allowed:1;
@@ -1709,6 +1727,7 @@ struct ipr_cmd_status_record {
 #define IPR_CMD_STATUS_INSUFF_DATA_MOVED     5
 #define IPR_CMD_STATUS_MIXED_BLK_DEV_CLASESS 6
 #define IPR_CMD_STATUS_MIXED_LOG_BLK_SIZE    7
+#define IPR_CMD_STATUS_UNSUPT_REQ_BLK_DEV_CLASS    8
 
        u8 percent_complete;
        struct ipr_res_addr failing_dev_res_addr;
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to