Re: [PATCH] qla2xxx: Add SysFS hook for FC-NVMe autoconnect

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2018-11-12 at 13:40 -0800, Himanshu Madhani wrote:
+AD4 diff --git a/drivers/scsi/qla2xxx/qla+AF8-attr.c
+AD4 b/drivers/scsi/qla2xxx/qla+AF8-attr.c
+AD4 index 678aff5ca947..323a4aa35f16 100644
+AD4 --- a/drivers/scsi/qla2xxx/qla+AF8-attr.c
+AD4 +-+-+- b/drivers/scsi/qla2xxx/qla+AF8-attr.c
+AD4 +AEAAQA -1665,6 +-1665,125 +AEAAQA qla2x00+AF8-max+AF8-speed+AF8-sup+AF8-show(struct device +ACo-dev,
+AD4 struct device+AF8-attribute +ACo-attr,
+AD4  	    ha-+AD4-max+AF8-speed+AF8-sup ? +ACI-32Gps+ACI : +ACI-16Gps+ACI)+ADs
+AD4  +AH0
+AD4  
+AD4 +-static ssize+AF8-t
+AD4 +-qla27xx+AF8-nvme+AF8-connect+AF8-str+AF8-show(struct device +ACo-dev, struct device+AF8-attribute
+AD4 +ACo-attr,
+AD4 +-    char +ACo-buf)
+AD4 +-+AHs
+AD4 +-	scsi+AF8-qla+AF8-host+AF8-t +ACo-vha +AD0 shost+AF8-priv(class+AF8-to+AF8-shost(dev))+ADs
+AD4 +-	struct nvme+AF8-fc+AF8-remote+AF8-port +ACo-rport+ADs
+AD4 +-	struct nvme+AF8-fc+AF8-local+AF8-port +ACo-lport+ADs
+AD4 +-	struct qla+AF8-hw+AF8-data +ACo-ha +AD0 vha-+AD4-hw+ADs
+AD4 +-	struct qla+AF8-nvme+AF8-rport +ACo-qla+AF8-rport, +ACo-trport+ADs
+AD4 +-	fc+AF8-port+AF8-t +ACo-fcport+ADs
+AD4 +-	char temp+AFs-150+AF0 +AD0 +AHs-0+AH0AOw
+AD4 +-	char +ACo-rportstate +AD0 +ACIAIgA7
+AD4 +-
+AD4 +-	if (+ACE-IS+AF8-QLA27XX(ha) +ACYAJg +ACE-IS+AF8-QLA28XX(ha))
+AD4 +-		return scnprintf(buf, PAGE+AF8-SIZE, +ACIAXA-n+ACI)+ADs
+AD4 +-
+AD4 +-	if (+ACE-vha-+AD4-flags.nvme+AF8-enabled)
+AD4 +-		return scnprintf(buf, PAGE+AF8-SIZE, +ACIAJQ-s+AFw-n+ACI,
+AD4 +-		    +ACI-FC-NVMe is not enabled+ACI)+ADs
+AD4 +-
+AD4 +-	list+AF8-for+AF8-each+AF8-entry(fcport, +ACY-vha-+AD4-vp+AF8-fcports, list) +AHs
+AD4 +-		if (+ACE-fcport) +AHs
+AD4 +-			scnprintf(buf, PAGE+AF8-SIZE, +ACI-No FC host+AFw-n+ACI)+ADs
+AD4 +-			return strlen(buf)+ADs
+AD4 +-		+AH0
+AD4 +-
+AD4 +-		if (+ACE-vha-+AD4-nvme+AF8-local+AF8-port) +AHs
+AD4 +-			scnprintf(buf, PAGE+AF8-SIZE,
+AD4 +-			    +ACI-FC-NVMe Initiator on 0x+ACU-16llx not
+AD4 registered.+AFw-n+ACI,
+AD4 +-			    wwn+AF8-to+AF8-u64(fcport-+AD4-port+AF8-name))+ADs
+AD4 +-			return strlen(buf)+ADs
+AD4 +-		+AH0
+AD4 +-
+AD4 +-		list+AF8-for+AF8-each+AF8-entry+AF8-safe(qla+AF8-rport, trport,
+AD4 +-		    +ACY-vha-+AD4-nvme+AF8-rport+AF8-list, list) +AHs
+AD4 +-			if (qla+AF8-rport-+AD4-fcport +AD0APQ fcport) +AHs
+AD4 +-				rport +AD0 fcport-+AD4-nvme+AF8-remote+AF8-port+ADs
+AD4 +-
+AD4 +-				lport +AD0 vha-+AD4-nvme+AF8-local+AF8-port+ADs
+AD4 +-
+AD4 +-				scnprintf(temp, sizeof(temp),
+AD4 +-				    +ACI-FC-NVMe LPORT: host+ACU-ld nn-
+AD4 0x+ACU-16llx:pn-0x+ACU-16llx port+AF8-id +ACU-06x +ACU-s+AFw-n+ACI,
+AD4 +-				    vha-+AD4-host+AF8-no, lport-+AD4-node+AF8-name,
+AD4 +-				    lport-+AD4-port+AF8-name, lport-+AD4-port+AF8-id,
+AD4 +ACI-ONLINE+ACI)+ADs
+AD4 +-
+AD4 +-				if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ
+AD4 PAGE+AF8-SIZE)
+AD4 +-					goto done+ADs
+AD4 +-
+AD4 +-				scnprintf(temp, sizeof(temp),
+AD4 +-				    +ACI-FC-NVMe RPORT: host+ACU-ld nn-0x+ACU-llx:pn-
+AD4 0x+ACU-llx port+AF8-id +ACU-06x +ACI,
+AD4 +-				    vha-+AD4-host+AF8-no, rport-+AD4-node+AF8-name,
+AD4 +-				    rport-+AD4-port+AF8-name, rport-+AD4-port+AF8-id)+ADs
+AD4 +-
+AD4 +-				/+ACo Find out Rport State +ACo-/
+AD4 +-				if (rport-+AD4-port+AF8-state +ACY
+AD4 FC+AF8-OBJSTATE+AF8-ONLINE)
+AD4 +-					rportstate +AD0 +ACI-ONLINE+ACIAOw
+AD4 +-
+AD4 +-				if (rport-+AD4-port+AF8-state +ACY
+AD4 FC+AF8-OBJSTATE+AF8-UNKNOWN)
+AD4 +-					rportstate +AD0 +ACI-UNKNOWN+ACIAOw
+AD4 +-
+AD4 +-				if (rport-+AD4-port+AF8-state +ACY
+AD4 +AH4(FC+AF8-OBJSTATE+AF8-ONLINE +AHw
+AD4 +-				    FC+AF8-OBJSTATE+AF8-UNKNOWN))
+AD4 +-					rportstate +AD0 +ACI-UNSUPPORTED+ACIAOw
+AD4 +-
+AD4 +-				if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ
+AD4 +-				    PAGE+AF8-SIZE)
+AD4 +-					goto done+ADs
+AD4 +-
+AD4 +-				if (rport-+AD4-port+AF8-role +ACY
+AD4 +-				    (FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-INITIATOR +AHw
+AD4 +-				      FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-TARGET +AHw
+AD4 +-				      FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-DISCOVERY)) +AHs
+AD4 +-					if (rport-+AD4-port+AF8-role +ACY
+AD4 +-					    FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-INITIATOR)
+AD4 +-						if (strlcat(buf,
+AD4 +ACI-INITIATOR +ACI,
+AD4 +-						    PAGE+AF8-SIZE) +AD4APQ
+AD4 PAGE+AF8-SIZE)
+AD4 +-							goto done+ADs
+AD4 +-
+AD4 +-					if (rport-+AD4-port+AF8-role +ACY
+AD4 +-					    FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-TARGET)
+AD4 +-						if (strlcat(buf, +ACI-TARGET
+AD4 +ACI,
+AD4 +-						    PAGE+AF8-SIZE) +AD4APQ
+AD4 PAGE+AF8-SIZE)
+AD4 +-							goto done+ADs
+AD4 +-
+AD4 +-					if (rport-+AD4-port+AF8-role +ACY
+AD4 +-					    FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-DISCOVERY)
+AD4 +-						if (strlcat(buf,
+AD4 +ACI-DISCOVERY +ACI,
+AD4 +-						    PAGE+AF8-SIZE) +AD4APQ
+AD4 PAGE+AF8-SIZE)
+AD4 +-							goto done+ADs
+AD4 +-				+AH0 else +AHs
+AD4 +-					if (strlcat(buf, +ACI-UNKNOWN+AF8-ROLE +ACI,
+AD4 +-					    PAGE+AF8-SIZE) +AD4APQ PAGE+AF8-SIZE)
+AD4 +-						goto done+ADs
+AD4 +-				+AH0
+AD4 +-				scnprintf(temp, sizeof(temp), +ACIAJQ-s+AFw-n+ACI,
+AD4 rportstate)+ADs
+AD4 +-
+AD4 +-				if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ
+AD4 PAGE+AF8-SIZE)
+AD4 +-					goto done+ADs
+AD4 +-
+AD4 +-				scnprintf(temp, sizeof(temp),
+AD4 +-				    +ACI-NVMECLI: host-traddr+AD0-nn-0x+ACU-16llx:pn-
+AD4 0x+ACU-16llx traddr+AD0-nn-0x+ACU-16llx:pn-0x+ACU-16llx+AFw-n+ACI,
+AD4 +-				    lport-+AD4-node+AF8-name, lport-+AD4-port+AF8-name,
+AD4 +-				    rport-+AD4-node+AF8-name, rport-+AD4-port+AF8-name)+ADs
+AD4 +-
+AD4 +-				if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ
+AD4 PAGE+AF8-SIZE)
+AD4 +-					goto done+ADs
+AD4 +-			+AH0
+AD4 +-		+AH0
+AD4 +-	+AH0
+AD4 +-
+AD4 +-	return strlen(buf)+ADs
+AD4 +-
+AD4 +-done:
+AD4 +-	ql+AF8-log(ql+AF8-log+AF8-warn, vha, 0xffff,
+AD4 +-	    +ACI-NVME connect string buffer size 0x+ACU-lx exceeds 0x+ACU-lx+AFw-n+ACI,
+AD4 +-	    sizeof(+ACo-buf), PAGE+AF8-SIZE)+ADs
+AD4 +-	return strlen(buf)+ADs
+AD4 +-+AH0

Hi Himanshu,

Are you familiar with the +ACI-one value per file+ACI rule for sysfs? A quote from
Documentation/filesystems/sysfs.txt: +ACI-Attributes should be ASCII text files,
preferably with only one value per file.+ACI

Thanks,

Bart.




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux