Hello community, here is the log from the commit of package iprutils for openSUSE:Factory checked in at 2014-01-17 11:04:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2013-12-10 17:42:45.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.iprutils.new/iprutils.changes 2014-01-23 15:45:32.000000000 +0100 @@ -1,0 +2,8 @@ +Fri Jan 10 16:28:38 UTC 2014 - [email protected] + +- version update to 2.3.16 (FATE#315573) + - Support for SAS concurrent maintenance + - Adds support for new Crocodile based SAS adapters on x86 + - Latest Fixes + +------------------------------------------------------------------- Old: ---- iprutils-2.3.15-src.tgz New: ---- iprutils-2.3.16-src.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ iprutils.spec ++++++ --- /var/tmp/diff_new_pack.2BG4dI/_old 2014-01-23 15:45:33.000000000 +0100 +++ /var/tmp/diff_new_pack.2BG4dI/_new 2014-01-23 15:45:33.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package iprutils # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ Name: iprutils # NOTE: package's changelog is hidden in % changelog section # in file iprutils/spec/iprutils.spec -Version: 2.3.15 +Version: 2.3.16 Release: 0 Summary: Utilities for the IBM Power Linux RAID Adapters License: CPL-1.0 ++++++ iprutils-2.3.15-src.tgz -> iprutils-2.3.16-src.tgz ++++++ Files old/iprutils/.git/index and new/iprutils/.git/index differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/.git/logs/HEAD new/iprutils/.git/logs/HEAD --- old/iprutils/.git/logs/HEAD 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/.git/logs/HEAD 2013-11-05 20:52:17.000000000 +0100 @@ -1 +1 @@ -0000000000000000000000000000000000000000 363a09754976f954d1d0d8576adddea4c5497b14 root <[email protected]> 1372867197 -0500 clone: from ssh://[email protected]/p/iprdd/iprutils +0000000000000000000000000000000000000000 540af6c0f2d70b16080be51ba8954f2c38d7ab45 root <[email protected]> 1383681137 -0600 clone: from ssh://[email protected]/p/iprdd/iprutils diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/.git/logs/refs/heads/master new/iprutils/.git/logs/refs/heads/master --- old/iprutils/.git/logs/refs/heads/master 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/.git/logs/refs/heads/master 2013-11-05 20:52:17.000000000 +0100 @@ -1 +1 @@ -0000000000000000000000000000000000000000 363a09754976f954d1d0d8576adddea4c5497b14 root <[email protected]> 1372867197 -0500 clone: from ssh://[email protected]/p/iprdd/iprutils +0000000000000000000000000000000000000000 540af6c0f2d70b16080be51ba8954f2c38d7ab45 root <[email protected]> 1383681137 -0600 clone: from ssh://[email protected]/p/iprdd/iprutils Files old/iprutils/.git/objects/pack/pack-2328e24b0e805ffb64ed84e0c778935609df82ed.idx and new/iprutils/.git/objects/pack/pack-2328e24b0e805ffb64ed84e0c778935609df82ed.idx differ Files old/iprutils/.git/objects/pack/pack-2328e24b0e805ffb64ed84e0c778935609df82ed.pack and new/iprutils/.git/objects/pack/pack-2328e24b0e805ffb64ed84e0c778935609df82ed.pack differ Files old/iprutils/.git/objects/pack/pack-45efb5fc99e7e2299698c9eb6ad13e719410e681.idx and new/iprutils/.git/objects/pack/pack-45efb5fc99e7e2299698c9eb6ad13e719410e681.idx differ Files old/iprutils/.git/objects/pack/pack-45efb5fc99e7e2299698c9eb6ad13e719410e681.pack and new/iprutils/.git/objects/pack/pack-45efb5fc99e7e2299698c9eb6ad13e719410e681.pack differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/.git/packed-refs new/iprutils/.git/packed-refs --- old/iprutils/.git/packed-refs 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/.git/packed-refs 2013-11-05 20:52:17.000000000 +0100 @@ -96,5 +96,5 @@ 5dd3d9ac1749c70d9df5d929337a366057bacfe3 refs/remotes/origin/rel-2-0-14-stable 47a9abf270ff65e8b4f3cdeb43f7fb2d0817f242 refs/remotes/origin/rel-1-0-stable 1ba7fa46c301dc81a557f5a0ffe315dd0e7df61b refs/remotes/origin/origin -363a09754976f954d1d0d8576adddea4c5497b14 refs/remotes/origin/master +540af6c0f2d70b16080be51ba8954f2c38d7ab45 refs/remotes/origin/master 17692fd5a13e35a6d3a283fc2334a53ea07f342c refs/remotes/origin/iprutils diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/.git/refs/heads/master new/iprutils/.git/refs/heads/master --- old/iprutils/.git/refs/heads/master 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/.git/refs/heads/master 2013-11-05 20:52:17.000000000 +0100 @@ -1 +1 @@ -363a09754976f954d1d0d8576adddea4c5497b14 +540af6c0f2d70b16080be51ba8954f2c38d7ab45 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/iprconfig.c new/iprutils/iprconfig.c --- old/iprutils/iprconfig.c 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/iprconfig.c 2013-11-05 20:52:17.000000000 +0100 @@ -1109,9 +1109,9 @@ /* . . . . . */ /*012345678901234567890123456789012345678901234567890123456789012345678901234567890 */ "OPT Name Resource Path/Address Vendor Product ID Status", - "OPT Name PCI/SCSI Location Description Status", + "OPT Name PCI/SCSI Location Description Status", "Name Resource Path/Address Vendor Product ID Status", - "Name PCI/SCSI Location Description 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", @@ -1126,9 +1126,9 @@ static char *status_sep[] = { "--- ------ -------------------------- -------- ---------------- -----------------", - "--- ------ ------------------------- ------------------------- -----------------", + "--- ------ ------------------------- ------------------------- -----------------", "------ -------------------------- -------- ---------------- -----------------", - "------ ------------------------- ------------------------- -----------------", + "------ ------------------------- ------------------------- -----------------", "--- --------------------- ------------------ ------ ----------------- ----------", "--- ---------------------- ------------------ ------ ----------------- ----------", "---------------------- ------------------ ------ ----------------- ----------", @@ -1635,16 +1635,22 @@ cmd_status.record->status == IPR_CMD_STATUS_SUCCESSFUL) { if (ipr_get_blk_size(dev) == 512) evaluate_device(dev, dev->ioa, IPR_JBOD_BLOCK_SIZE); + else if (dev->ioa->support_4k && ipr_get_blk_size(dev) == IPR_JBOD_4K_BLOCK_SIZE) + evaluate_device(dev, dev->ioa, IPR_JBOD_4K_BLOCK_SIZE); } } else if (dev->scsi_dev_data->type == TYPE_DISK) { rc = ipr_test_unit_ready(dev, &sense_data); - if (!rc) { if (ipr_get_blk_size(dev) == dev->ioa->af_block_size && dev->ioa->qac_data->num_records != 0) { enable_af(dev); evaluate_device(dev, dev->ioa, dev->ioa->af_block_size); } + else if (dev->ioa->support_4k && ipr_get_blk_size(dev) == IPR_AF_4K_BLOCK_SIZE && + dev->ioa->qac_data->num_records != 0) { + enable_af(dev); + evaluate_device(dev, dev->ioa, IPR_AF_4K_BLOCK_SIZE); + } } } } @@ -2512,10 +2518,13 @@ sprintf(buf, "%s", "\0"); } else if (strlen(buffer)) { - ipr_strncpy_0(unit_phy_loc, ses->ioa->physical_location, PHYSICAL_LOCATION_LENGTH); - first_hyphen = strchr(unit_phy_loc, '-'); - *first_hyphen = '\0'; - sprintf(buf, "%s-%s", unit_phy_loc, buffer); + if (strlen(ses->ioa->physical_location)) { + ipr_strncpy_0(unit_phy_loc, ses->ioa->physical_location, PHYSICAL_LOCATION_LENGTH); + first_hyphen = strchr(unit_phy_loc, '-'); + *first_hyphen = '\0'; + sprintf(buf, "%s-%s", unit_phy_loc, buffer); + } else + sprintf(buf, "%s", "\0"); } else sprintf(buf, "%s", "\0"); @@ -7808,12 +7817,19 @@ { struct ipr_res_path *first_rp; struct ipr_res_path *second_rp; + struct ipr_res_path no_exist_rp; if (first->ioa != second->ioa) return 0; + memset(&no_exist_rp, 0xff, sizeof(struct ipr_res_path)); + for_each_rp(first_rp, first) { for_each_rp(second_rp, second) { + if (!memcmp(first_rp, &no_exist_rp, sizeof(*first_rp)) + || !memcmp(second_rp, &no_exist_rp, sizeof(*second_rp))) + continue; + if (!memcmp(first_rp, second_rp, sizeof(*first_rp))) return 1; } @@ -8541,20 +8557,20 @@ rc = ipr_test_unit_ready(dev->dev, &sense_data); if (rc) { done_bad = 1; - } else if (dev->new_block_size != ioa->af_block_size) { + } else if (!ipr_is_af_blk_size(ioa, dev->new_block_size)) { ipr_write_dev_attr(dev->dev, "rescan", "1"); ipr_init_dev(dev->dev); } } if (dev->new_block_size != 0) { - if (dev->new_block_size == ioa->af_block_size) + if (ipr_is_af_blk_size(ioa, dev->new_block_size)) enable_af(dev->dev); evaluate_device(dev->dev, ioa, dev->new_block_size); } - if (dev->new_block_size == ioa->af_block_size || ipr_is_af_dasd_device(dev->dev)) + if (ipr_is_af_blk_size(ioa, dev->new_block_size) || ipr_is_af_dasd_device(dev->dev)) ipr_add_zeroed_dev(dev->dev); } @@ -8613,7 +8629,6 @@ for_each_dev_to_init(cur_dev_init) { if (cur_dev_init->do_init && cur_dev_init->dev_type == IPR_AF_DASD_DEVICE) { - num_devs++; ioa = cur_dev_init->ioa; @@ -8683,7 +8698,6 @@ cur_dev_init->dev_type == IPR_JBOD_DASD_DEVICE) { num_devs++; ioa = cur_dev_init->ioa; - scsi_dev_data = cur_dev_init->dev->scsi_dev_data; if (!scsi_dev_data) { cur_dev_init->do_init = 0; @@ -8716,7 +8730,6 @@ mode_parm_hdr->block_desc_len = sizeof(struct ipr_block_desc); block_desc = (struct ipr_block_desc *)(mode_parm_hdr + 1); - /* xxx Setup block size */ if (cur_dev_init->new_block_size == ioa->af_block_size) { block_desc->block_length[0] = 0x00; @@ -8734,7 +8747,7 @@ status = ipr_mode_select(cur_dev_init->dev, &ioctl_buffer, length); - if (status && cur_dev_init->new_block_size == ioa->af_block_size) { + if (status && ipr_is_af_blk_size(ioa, cur_dev_init->new_block_size)) { cur_dev_init->do_init = 0; num_devs--; failure++; @@ -13095,7 +13108,10 @@ return -EINVAL; if (!is_format_allowed(dev)) return -EIO; - add_format_device(dev, dev->ioa->af_block_size); + if (dev->ioa->support_4k && dev->block_dev_class & IPR_BLK_DEV_CLASS_4K) + add_format_device(dev, IPR_AF_4K_BLOCK_SIZE); + else + add_format_device(dev, dev->ioa->af_block_size); dev_init_tail->do_init = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/iprlib.c new/iprutils/iprlib.c --- old/iprutils/iprlib.c 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/iprlib.c 2013-11-05 20:52:17.000000000 +0100 @@ -856,6 +856,16 @@ return NULL; } +bool ipr_is_af_blk_size(struct ipr_ioa *ioa, int blk_sz) +{ + + if (blk_sz == ioa->af_block_size || + (ioa->support_4k && blk_sz == IPR_AF_4K_BLOCK_SIZE)) + return true; + else + return false; +} + /** * ipr_improper_device_type - * @dev: ipr dev struct @@ -872,10 +882,10 @@ if (!dev->ioa->qac_data || !dev->ioa->qac_data->num_records) return 0; if (dev->scsi_dev_data->type == IPR_TYPE_AF_DISK && !dev->qac_entry && - ipr_get_blk_size(dev) == IPR_JBOD_BLOCK_SIZE) + (ipr_get_blk_size(dev) == IPR_JBOD_BLOCK_SIZE || + (dev->ioa->support_4k && ipr_get_blk_size(dev) == IPR_JBOD_4K_BLOCK_SIZE))) return 1; - if (dev->scsi_dev_data->type == TYPE_DISK && dev->qac_entry && - ipr_get_blk_size(dev) == dev->ioa->af_block_size) + if (dev->scsi_dev_data->type == TYPE_DISK && dev->qac_entry && ipr_is_af_blk_size(dev->ioa, ipr_get_blk_size(dev))) return 1; return 0; } @@ -898,9 +908,6 @@ u8 length = IPR_MODE_SENSE_LENGTH; /* xxx FIXME? */ char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -2738,9 +2745,6 @@ int length = sizeof(struct ipr_cmd_status); char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -2784,9 +2788,6 @@ int length = sizeof(struct ipr_query_res_state); char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -2861,9 +2862,6 @@ memset(&sense_data, 0, sizeof(sense_data)); - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -2959,9 +2957,6 @@ int rc; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -3138,9 +3133,6 @@ int length = sizeof(struct ipr_read_cap); char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -3182,9 +3174,6 @@ int length = sizeof(struct ipr_read_cap16); char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -3282,9 +3271,6 @@ struct sense_data_t sense_data; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -3421,9 +3407,6 @@ int length = 0, allow_restart = 0; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -3476,6 +3459,24 @@ return rc; } +static struct ipr_dev *find_multipath_jbod(struct ipr_dev *dev) +{ + struct ipr_ioa *ioa; + struct ipr_dev *multipath_dev; + + for_each_sas_ioa(ioa) { + if (ioa == dev->ioa) + continue; + + for_each_dev(ioa, multipath_dev) { + if (dev->scsi_dev_data->device_id == multipath_dev->scsi_dev_data->device_id) + return multipath_dev; + } + } + + return NULL; +} + /** * ipr_format_unit - * @dev: ipr dev struct @@ -3491,9 +3492,24 @@ u8 *defect_list_hdr; int length = IPR_DEFECT_LIST_HDR_LEN; char *name = dev->gen_name; + char cmnd[1000]; + struct ipr_dev *multipath_dev; - if (strlen(dev->dev_name)) - name = dev->dev_name; + if (strlen(dev->dev_name) && dev->scsi_dev_data->device_id) { + sprintf(cmnd, "/sbin/multipathd -k\"del path %s\" &> /dev/null", strrchr(dev->dev_name, '/') + 1); + system(cmnd); + sprintf(cmnd, "/bin/rm -rf %s %s%s", dev->dev_name, dev->dev_name, "[0-9]*"); + system(cmnd); + + multipath_dev = find_multipath_jbod(dev); + if (multipath_dev) { + sprintf(cmnd, "/sbin/multipathd -k\"del path %s\" &> /dev/null", strrchr(multipath_dev->dev_name, '/') + 1); + system(cmnd); + sprintf(cmnd, "/bin/rm -rf %s %s%s", multipath_dev->dev_name, multipath_dev->dev_name , "[0-9]*"); + system(cmnd); + } + system("/sbin/multipath -F &> /dev/null"); + } if (strlen(name) == 0) return -ENOENT; @@ -3525,6 +3541,7 @@ scsi_cmd_err(dev, &sense_data, "Format Unit", rc); close(fd); + return rc; } @@ -3545,9 +3562,6 @@ int length = 0; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -3650,9 +3664,6 @@ struct sense_data_t sense_data; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -4661,9 +4672,6 @@ int rc; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -4710,9 +4718,6 @@ int rc; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - if (strlen(name) == 0) return -ENOENT; @@ -5431,6 +5436,10 @@ if (sysfs_attr) ipr_strncpy_0n(scsi_dev_data->res_path, sysfs_attr->value, IPR_MAX_RES_PATH_LEN); + sysfs_attr = sysfs_get_device_attr(sysfs_device_device, "device_id"); + if (sysfs_attr) + sscanf(sysfs_attr->value, "%lX", &scsi_dev_data->device_id); + strcpy(scsi_dev_data->dev_name,""); strcpy(scsi_dev_data->gen_name,""); num_devs++; @@ -6856,9 +6865,6 @@ struct ipr_disk_attr attr; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - fd = open(name, O_RDWR); if (fd <= 1) { @@ -7204,9 +7210,6 @@ struct sense_data_t sense_data; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - fd = open(name, O_RDWR); if (fd <= 1) { @@ -8567,9 +8570,6 @@ int rc; char *name = dev->gen_name; - if (strlen(dev->dev_name)) - name = dev->dev_name; - fd = open(name, O_RDWR); if (fd <= 1) { if (!strcmp(tool_name, "iprconfig") || ipr_debug) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/iprlib.h new/iprutils/iprlib.h --- old/iprutils/iprlib.h 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/iprlib.h 2013-11-05 20:52:17.000000000 +0100 @@ -1216,6 +1216,7 @@ char gen_name[64]; #define IPR_MAX_RES_PATH_LEN 24 char res_path[IPR_MAX_RES_PATH_LEN]; + u64 device_id; }; struct ipr_path_entry { @@ -2477,6 +2478,7 @@ int ipr_query_resource_state(struct ipr_dev *, void *); void ipr_allow_restart(struct ipr_dev *, int); int ipr_get_logical_block_size(struct ipr_dev *); +bool ipr_is_af_blk_size(struct ipr_ioa *, int); void ipr_set_manage_start_stop(struct ipr_dev *); int ipr_start_stop_start(struct ipr_dev *); int ipr_start_stop_stop(struct ipr_dev *); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/spec/iprutils.spec new/iprutils/spec/iprutils.spec --- old/iprutils/spec/iprutils.spec 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/spec/iprutils.spec 2013-11-05 20:52:17.000000000 +0100 @@ -1,6 +1,6 @@ Summary: Utilities for the IBM Power Linux RAID adapters Name: iprutils -Version: 2.3.15 +Version: 2.3.16 Release: 1 License: CPL Group: System Environment/Base @@ -81,7 +81,10 @@ %{_sysconfdir}/ha.d/resource.d/iprha %changelog -* Tue Jul 03 2013 Wen Xiong<wenxionglinux.vnet.ibm.com> 2.3.15 +* Tue Nov 05 2013 Wen Xiong<wenxionglinux.vnet.ibm.com> 2.3.16 +- Release 2.3.16 +- Fixes a bug for 4K bytes/sector disks in iprutils +- Fixes a bug for disk hot swap in VSES on P8 - Release 2.3.15 - Add support for 4K bytes/sector disks in iprutils - Release 2.3.14 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iprutils/version.mk new/iprutils/version.mk --- old/iprutils/version.mk 2013-07-03 17:59:57.000000000 +0200 +++ new/iprutils/version.mk 2013-11-05 20:52:17.000000000 +0100 @@ -6,9 +6,9 @@ IPR_MAJOR_RELEASE=2 IPR_MINOR_RELEASE=3 -IPR_FIX_LEVEL=15 +IPR_FIX_LEVEL=16 IPR_RELEASE=1 -IPR_FIX_DATE=(Jul 03, 2013) +IPR_FIX_DATE=(Nov 05, 2013) IPR_VERSION_STR=$(IPR_MAJOR_RELEASE).$(IPR_MINOR_RELEASE).$(IPR_FIX_LEVEL) $(IPR_FIX_DATE) -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
