On Fri, Jan 19, 2018 at 12:55:35PM +0100, Martin Wilck wrote: > NVMe allows longer strings for the model (product) and firmware rev > than SCSI. Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > --- > libmultipath/config.c | 2 +- > libmultipath/discovery.c | 12 ++++++------ > libmultipath/structs.h | 10 ++++++++-- > 3 files changed, 15 insertions(+), 9 deletions(-) > > diff --git a/libmultipath/config.c b/libmultipath/config.c > index 1461a17cddbe..2592990ecccd 100644 > --- a/libmultipath/config.c > +++ b/libmultipath/config.c > @@ -319,7 +319,7 @@ set_param_str(char * str) > static int > merge_hwe (struct hwentry * dst, struct hwentry * src) > { > - char id[SCSI_VENDOR_SIZE+SCSI_PRODUCT_SIZE]; > + char id[SCSI_VENDOR_SIZE+PATH_PRODUCT_SIZE]; > merge_str(vendor); > merge_str(product); > merge_str(revision); > diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c > index 88fc8d732258..88e9f3b61510 100644 > --- a/libmultipath/discovery.c > +++ b/libmultipath/discovery.c > @@ -1158,12 +1158,12 @@ scsi_sysfs_pathinfo (struct path * pp, vector hwtable) > > condlog(3, "%s: vendor = %s", pp->dev, pp->vendor_id); > > - if (sysfs_get_model(parent, pp->product_id, SCSI_PRODUCT_SIZE) <= 0) > + if (sysfs_get_model(parent, pp->product_id, PATH_PRODUCT_SIZE) <= 0) > return 1; > > condlog(3, "%s: product = %s", pp->dev, pp->product_id); > > - if (sysfs_get_rev(parent, pp->rev, SCSI_REV_SIZE) < 0) > + if (sysfs_get_rev(parent, pp->rev, PATH_REV_SIZE) < 0) > return 1; > > condlog(3, "%s: rev = %s", pp->dev, pp->rev); > @@ -1223,11 +1223,11 @@ nvme_sysfs_pathinfo (struct path * pp, vector hwtable) > pp->sg_id.channel = attr ? atoi(attr) : 0; > > snprintf(pp->vendor_id, SCSI_VENDOR_SIZE, "NVME"); > - snprintf(pp->product_id, SCSI_PRODUCT_SIZE, "%s", > + snprintf(pp->product_id, PATH_PRODUCT_SIZE, "%s", > udev_device_get_sysattr_value(parent, "model")); > snprintf(pp->serial, SERIAL_SIZE, "%s", > udev_device_get_sysattr_value(parent, "serial")); > - snprintf(pp->rev, SCSI_REV_SIZE, "%s", > + snprintf(pp->rev, PATH_REV_SIZE, "%s", > udev_device_get_sysattr_value(parent, "firmware_rev")); > > condlog(3, "%s: vendor = %s", pp->dev, pp->vendor_id); > @@ -1342,12 +1342,12 @@ cciss_sysfs_pathinfo (struct path * pp, vector hwtable) > > condlog(3, "%s: vendor = %s", pp->dev, pp->vendor_id); > > - if (sysfs_get_model(parent, pp->product_id, SCSI_PRODUCT_SIZE) <= 0) > + if (sysfs_get_model(parent, pp->product_id, PATH_PRODUCT_SIZE) <= 0) > return 1; > > condlog(3, "%s: product = %s", pp->dev, pp->product_id); > > - if (sysfs_get_rev(parent, pp->rev, SCSI_REV_SIZE) <= 0) > + if (sysfs_get_rev(parent, pp->rev, PATH_REV_SIZE) <= 0) > return 1; > > condlog(3, "%s: rev = %s", pp->dev, pp->rev); > diff --git a/libmultipath/structs.h b/libmultipath/structs.h > index d132dfcebce4..b951c7b0e157 100644 > --- a/libmultipath/structs.h > +++ b/libmultipath/structs.h > @@ -25,6 +25,12 @@ > #define SCSI_PRODUCT_SIZE 17 > #define SCSI_REV_SIZE 5 > #define SCSI_STATE_SIZE 19 > +#define NVME_MODEL_SIZE 41 > +#define NVME_REV_SIZE 9 > + > +/* This must be the maximum of SCSI and NVME sizes */ > +#define PATH_PRODUCT_SIZE NVME_MODEL_SIZE > +#define PATH_REV_SIZE NVME_REV_SIZE > > #define NO_PATH_RETRY_UNDEF 0 > #define NO_PATH_RETRY_FAIL -1 > @@ -214,8 +220,8 @@ struct path { > struct hd_geometry geom; > char wwid[WWID_SIZE]; > char vendor_id[SCSI_VENDOR_SIZE]; > - char product_id[SCSI_PRODUCT_SIZE]; > - char rev[SCSI_REV_SIZE]; > + char product_id[PATH_PRODUCT_SIZE]; > + char rev[PATH_REV_SIZE]; > char serial[SERIAL_SIZE]; > char tgt_node_name[NODE_NAME_SIZE]; > unsigned long long size; > -- > 2.15.1 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel