Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-30 Thread James Smart


On 12/29/2016 3:31 PM, Sebastian Herbszt wrote:

"not portable" might not be the term I actually meant. Let's call it
server vendor dependent.
Can you please elaborate on the oem platforms and side-band management
you mean? I know of a solution called "ServerView Virtual-IO Manager"
by Fujitsu which might fit. AFAIK it is a piece of software which
communicates with the BMC and allows to change the MAC address and WWN.
Of course it only works with Fujitsu servers and supported cards.
I think I heard that for NICs it just changes the MAC address in the
eeprom. This is not done "online" but when the server is powered on.
Even though this might be a comparable case (external MAC address
configuration) I think the ability to change the MAC address by the
means of "ip link set dev ethX address" was not removed.


Unfortunately, I can't elaborate on the platforms. Yes, there are things 
similar to what you describe above. Also realize that persisting the 
value across different cold/hot/flr resets affects boot and dump.



How do you choose the desired WWN between the possible options
(factory set, oem platform set, FA-WWN)?
And wouldn't soft wwn always win because it is applied at last?
However it might compete with FA-WWN. I wasn't yet able to
find details on how it works.

Sebastian


Unfortunately, I can't comment on that either.  It's not always last 
wins and that's one of the issues.


I've submitted a patch to reinstated the feature - it works as well as 
it did before.


-- james

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-29 Thread Sebastian Herbszt
James,

thank you for taking the time to answer me.

James Smart wrote:
> Sebastian,
> 
> "not portable" isn't the right way to describe it. It's not a 
> chip-architecture issue, but rather that some oem platforms have 
> side-band management that overrides anything that could have been
> done in the os, and in ways that may not be easy to communicate back
> to the driver.

"not portable" might not be the term I actually meant. Let's call it
server vendor dependent.
Can you please elaborate on the oem platforms and side-band management
you mean? I know of a solution called "ServerView Virtual-IO Manager"
by Fujitsu which might fit. AFAIK it is a piece of software which
communicates with the BMC and allows to change the MAC address and WWN.
Of course it only works with Fujitsu servers and supported cards.
I think I heard that for NICs it just changes the MAC address in the
eeprom. This is not done "online" but when the server is powered on.
Even though this might be a comparable case (external MAC address
configuration) I think the ability to change the MAC address by the
means of "ip link set dev ethX address" was not removed.

> FAWN - true Brocade only - but that is the 70+%
> market share of the FC switches. The current implementation already
> doesn't work many situations - so there's no clear winner for having
> it work everywhere. Given the inability for it always to work, the
> decision was to deprecate the attribute.
> 
> -- james

How do you choose the desired WWN between the possible options
(factory set, oem platform set, FA-WWN)?
And wouldn't soft wwn always win because it is applied at last?
However it might compete with FA-WWN. I wasn't yet able to
find details on how it works.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-29 Thread James Smart
ok.. I'll submit a patch to re-add the parameters, and add an 
appropriate "deprecation" warning


-- james


On 12/28/2016 11:41 PM, Christoph Hellwig wrote:

Hi James,

in Linux we have a pretty clear policy to avoid breaking existing real
life userspace.  Given that Sebastian (and probably other users as well)
make use of the soft WWN feature we can't just remove it.

Which btw is what this patch does - deprecating is telling people to
not use if, with the hopes of removing it in the future.  I think it
would be fine to deprecate it with your above rational and print a
warning to the kernel log, but we can't simply remove it.


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-28 Thread Christoph Hellwig
Hi James,

in Linux we have a pretty clear policy to avoid breaking existing real
life userspace.  Given that Sebastian (and probably other users as well)
make use of the soft WWN feature we can't just remove it.

Which btw is what this patch does - deprecating is telling people to
not use if, with the hopes of removing it in the future.  I think it
would be fine to deprecate it with your above rational and print a
warning to the kernel log, but we can't simply remove it.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-28 Thread James Smart

Sebastian,

"not portable" isn't the right way to describe it. It's not a 
chip-architecture issue, but rather that some oem platforms have 
side-band management that overrides anything that could have been done 
in the os, and in ways that may not be easy to communicate back to the 
driver.   FAWN - true Brocade only - but that is the 70+% market share 
of the FC switches. The current implementation already doesn't work many 
situations - so there's no clear winner for having it work everywhere. 
Given the inability for it always to work, the decision was to deprecate 
the attribute.


-- james


On 12/28/2016 10:38 AM, Sebastian Herbszt wrote:

James Smart wrote:

I competes, without reasonable solutions to resolve which should be
what at what time, with things like fabric-assigned wwn's as well as
platform-oem name assignments via platform mechanisms.  Too many
admin planes competing.

-- james

FA-WWN seems to be fabric (and Brocade?) only and "platform mechanisms"
are likely not portable. Soft wwn is a simple and flexible solution
which works in fabric and loop configurations and is platform and
server vendor agnostic. It already works with existing HBAs on x86 and
should also work on PowerPC or SPARC systems.
It is useful for initiators (hardware independence/mobility) and
targets (transparent failover/floating wwn).
Therefore I like to ask you to revert this patch and not introduce this
functional regression.

Sebastian


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-28 Thread Sebastian Herbszt
James Smart wrote:
> I competes, without reasonable solutions to resolve which should be
> what at what time, with things like fabric-assigned wwn's as well as 
> platform-oem name assignments via platform mechanisms.  Too many
> admin planes competing.
> 
> -- james

FA-WWN seems to be fabric (and Brocade?) only and "platform mechanisms"
are likely not portable. Soft wwn is a simple and flexible solution
which works in fabric and loop configurations and is platform and
server vendor agnostic. It already works with existing HBAs on x86 and
should also work on PowerPC or SPARC systems.
It is useful for initiators (hardware independence/mobility) and
targets (transparent failover/floating wwn).
Therefore I like to ask you to revert this patch and not introduce this
functional regression.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-23 Thread James Smart
I competes, without reasonable solutions to resolve which should be what 
at what time, with things like fabric-assigned wwn's as well as 
platform-oem name assignments via platform mechanisms.  Too many admin 
planes competing.


-- james


On 12/22/2016 2:00 PM, Sebastian Herbszt wrote:

James Smart wrote:

Deprecate lpfc_soft_wwn parameter.
No longer allow override of hw-assigned wwns

Signed-off-by: Dick Kennedy 
Signed-off-by: James Smart 

Any reason to remove this functionality?
I was actually using it.

Sebastian


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-22 Thread Sebastian Herbszt
James Smart wrote:
> Deprecate lpfc_soft_wwn parameter.
> No longer allow override of hw-assigned wwns
> 
> Signed-off-by: Dick Kennedy 
> Signed-off-by: James Smart 

Any reason to remove this functionality?
I was actually using it.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-20 Thread Hannes Reinecke
On 12/20/2016 12:07 AM, James Smart wrote:
> 
> Deprecate lpfc_soft_wwn parameter.
> No longer allow override of hw-assigned wwns
> 
> Signed-off-by: Dick Kennedy 
> Signed-off-by: James Smart 
> ---
>  drivers/scsi/lpfc/lpfc.h  |   4 -
>  drivers/scsi/lpfc/lpfc_attr.c | 216 
> --
>  drivers/scsi/lpfc/lpfc_init.c |  16 +---
>  3 files changed, 3 insertions(+), 233 deletions(-)
> 
Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
-- 
Dr. Hannes ReineckeTeamlead Storage & Networking
h...@suse.de   +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 03/11] lpfc: Deprecate lpfc_soft_wwn parameter

2016-12-19 Thread James Smart

Deprecate lpfc_soft_wwn parameter.
No longer allow override of hw-assigned wwns

Signed-off-by: Dick Kennedy 
Signed-off-by: James Smart 
---
 drivers/scsi/lpfc/lpfc.h  |   4 -
 drivers/scsi/lpfc/lpfc_attr.c | 216 --
 drivers/scsi/lpfc/lpfc_init.c |  16 +---
 3 files changed, 3 insertions(+), 233 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
index 8a20b4e..341b656e 100644
--- a/drivers/scsi/lpfc/lpfc.h
+++ b/drivers/scsi/lpfc/lpfc.h
@@ -729,8 +729,6 @@ struct lpfc_hba {
uint32_t cfg_sg_seg_cnt;
uint32_t cfg_prot_sg_seg_cnt;
uint32_t cfg_sg_dma_buf_size;
-   uint64_t cfg_soft_wwnn;
-   uint64_t cfg_soft_wwpn;
uint32_t cfg_hba_queue_depth;
uint32_t cfg_enable_hba_reset;
uint32_t cfg_enable_hba_heartbeat;
@@ -835,8 +833,6 @@ struct lpfc_hba {
 #define VPD_PORT0x8 /* valid vpd port data */
 #define VPD_MASK0xf /* mask for any vpd data */
 
-   uint8_t soft_wwn_enable;
-
struct timer_list fcp_poll_timer;
struct timer_list eratt_poll;
uint32_t eratt_poll_interval;
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
index c847755..98c40a7 100644
--- a/drivers/scsi/lpfc/lpfc_attr.c
+++ b/drivers/scsi/lpfc/lpfc_attr.c
@@ -1987,7 +1987,6 @@ static DEVICE_ATTR(protocol, S_IRUGO, 
lpfc_sli4_protocol_show, NULL);
 static DEVICE_ATTR(lpfc_xlane_supported, S_IRUGO, lpfc_oas_supported_show,
   NULL);
 
-static char *lpfc_soft_wwn_key = "C99G71SL8032A";
 #define WWN_SZ 8
 /**
  * lpfc_wwn_set - Convert string to the 8 byte WWN value.
@@ -2031,216 +2030,6 @@ lpfc_wwn_set(const char *buf, size_t cnt, char wwn[])
}
return 0;
 }
-/**
- * lpfc_soft_wwn_enable_store - Allows setting of the wwn if the key is valid
- * @dev: class device that is converted into a Scsi_host.
- * @attr: device attribute, not used.
- * @buf: containing the string lpfc_soft_wwn_key.
- * @count: must be size of lpfc_soft_wwn_key.
- *
- * Returns:
- * -EINVAL if the buffer does not contain lpfc_soft_wwn_key
- * length of buf indicates success
- **/
-static ssize_t
-lpfc_soft_wwn_enable_store(struct device *dev, struct device_attribute *attr,
-  const char *buf, size_t count)
-{
-   struct Scsi_Host  *shost = class_to_shost(dev);
-   struct lpfc_vport *vport = (struct lpfc_vport *) shost->hostdata;
-   struct lpfc_hba   *phba = vport->phba;
-   unsigned int cnt = count;
-
-   /*
-* We're doing a simple sanity check for soft_wwpn setting.
-* We require that the user write a specific key to enable
-* the soft_wwpn attribute to be settable. Once the attribute
-* is written, the enable key resets. If further updates are
-* desired, the key must be written again to re-enable the
-* attribute.
-*
-* The "key" is not secret - it is a hardcoded string shown
-* here. The intent is to protect against the random user or
-* application that is just writing attributes.
-*/
-
-   /* count may include a LF at end of string */
-   if (buf[cnt-1] == '\n')
-   cnt--;
-
-   if ((cnt != strlen(lpfc_soft_wwn_key)) ||
-   (strncmp(buf, lpfc_soft_wwn_key, strlen(lpfc_soft_wwn_key)) != 0))
-   return -EINVAL;
-
-   phba->soft_wwn_enable = 1;
-   return count;
-}
-static DEVICE_ATTR(lpfc_soft_wwn_enable, S_IWUSR, NULL,
-  lpfc_soft_wwn_enable_store);
-
-/**
- * lpfc_soft_wwpn_show - Return the cfg soft ww port name of the adapter
- * @dev: class device that is converted into a Scsi_host.
- * @attr: device attribute, not used.
- * @buf: on return contains the wwpn in hexadecimal.
- *
- * Returns: size of formatted string.
- **/
-static ssize_t
-lpfc_soft_wwpn_show(struct device *dev, struct device_attribute *attr,
-   char *buf)
-{
-   struct Scsi_Host  *shost = class_to_shost(dev);
-   struct lpfc_vport *vport = (struct lpfc_vport *) shost->hostdata;
-   struct lpfc_hba   *phba = vport->phba;
-
-   return snprintf(buf, PAGE_SIZE, "0x%llx\n",
-   (unsigned long long)phba->cfg_soft_wwpn);
-}
-
-/**
- * lpfc_soft_wwpn_store - Set the ww port name of the adapter
- * @dev class device that is converted into a Scsi_host.
- * @attr: device attribute, not used.
- * @buf: contains the wwpn in hexadecimal.
- * @count: number of wwpn bytes in buf
- *
- * Returns:
- * -EACCES hba reset not enabled, adapter over temp
- * -EINVAL soft wwn not enabled, count is invalid, invalid wwpn byte invalid
- * -EIO error taking adapter offline or online
- * value of count on success
- **/
-static ssize_t
-lpfc_soft_wwpn_store(struct device *dev, struct device_attribute *attr,
-const char *buf, size_t count)
-{
-   struct