Re: [PATCH RFC] more struct scsi_lun

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

 



Luben Tuikov wrote:
On 10/23/05 12:49, Jeff Garzik wrote:
Stefan Richter wrote:
               sprintf(s+2*i, "%02x", lun.scsi_lun[i]);

There is obviously room for improvement. Any naive representation is sub-optimal, be it for small luns (my current code) or larger luns (your example).

For situations with smaller luns, we should probably continue to use the current scsilun_to_int() conversion, while using your example for larger luns, i.e.

	if (upper 4 bytes zero)
		scsilun to int
		printk %d
	else
		for each byte
			printk %x

But Douglas's code suggested that if we are more motivated, we could provide an even better representation.

A plain, non-interpreted representation should suffice. Compact but
easily parseable, i.e. uniform.

If a LUN is u8[8], then,

#define SAS_ADDR(_sa)   ((unsigned long long) be64_to_cpu(*(__be64 *)(_sa)))

"%016llx", SAS_ADDR(LUN)  prints it like this (e.g.):

sas: 5000c50000513329 probing LUN:0000000000000000
sas: device 500000e000031c12 LUN: 0000000000000000 powering up or not ready yet, sleeping...
sas: 500000e000031c12 probing LUN:0000000000000000
sas: device 50001c171601060d LUN: 0000000000000000 powering up or not ready yet, sleeping...

This is from drivers/scsi/sas/sas_discover.c.

	Luben

What about an 64bit integer as carrier of LUN in the first place? The
most frequent occurrence of LUN data is when it is passed through in
function calls but it seems rarely to be manipulated.

--- linux/include/scsi/scsi.h.orig      2005-10-20 08:23:05.000000000 +0200
+++ linux/include/scsi/scsi.h   2005-10-24 21:45:41.000000000 +0200
@@ -238,9 +238,7 @@
 /*
  * ScsiLun: 8 byte LUN.
  */
-struct scsi_lun {
-       __u8 scsi_lun[8];
-};
+typedef __be64 scsi_lun;

 /*
  *  MESSAGE CODES

--
Stefan Richter
-=====-=-=-= =-=- ==---
http://arcgraph.de/sr/
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[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