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 - jloeser(a)suse.com
+
+- "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: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org