Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
iprutils.558
iprutils.read_intensive_disks_doesnt_show_up.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File iprutils.read_intensive_disks_doesnt_show_up.patch of Package iprutils.558
--- 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;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor