Re: [RFC PATCH v2 7/7] nvme: Add durable name for dev_printk

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

 



On 5/13/20 6:04 PM, Keith Busch wrote:
> On Wed, May 13, 2020 at 04:36:21PM -0500, Tony Asleson wrote:
>> +static int dev_to_nvme_durable_name(const struct device *dev, char *buf, size_t len)
>> +{
>> +	char serial[128];
>> +	ssize_t serial_len = wwid_show((struct device *)dev, NULL, serial);
> 
> wwid_show() can generate a serial larger than 128 bytes.

Looking at this again

return sprintf(buf, "nvme.%04x-%*phN-%*phN-%08x\n", 	
    subsys->vendor_id,
    serial_len, subsys->serial,
    model_len, subsys->model,
    subsys->ns_id);

'nvme.' = 5
vendor_id = 4
'-' = 1
serial (20 * 2) = 40
'-' = 1
model (40 * 2) = 80
'-' = 1
ns_id = 8
'\n' = 1

5 + 4 + 1 + 40 + 1 + 80 + 1 + 8 + 1 = 141

Does this match your understanding?

My mistake was thinking each byte of SN and Model = 1 character in
output, instead of 2.

This will also require the buffer used in dev_vprintk_emit to be quite a
bit bigger to accommodate max size.

>> +
>> +	if (serial_len > 0 && serial_len < len) {
>> +		serial_len -= 1;  // Remove the '\n' from the string
> 
> Comments in this driver should use the /* */ style.

OK, will revise.

> 
>> +		strncpy(buf, serial, serial_len);
>> +		return serial_len;
>> +	}
>> +	return 0;
>> +}
> 

Thanks
-Tony




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux