All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomas Henzl <thenzl@redhat.com>
To: Hannes Reinecke <hare@suse.de>
Cc: Chad Dupuis <chad.dupuis@qlogic.com>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	James Bottomley <jbottomley@parallels.com>,
	Jeremy Linton <jlinton@tributary.com>,
	Robert Elliott <Elliott@hp.com>,
	Bart Van Assche <bvanassche@acm.org>,
	Bud Brown <bubrown@redhat.com>
Subject: Re: [PATCH 0/4] scsi: 64-bit LUN support
Date: Sun, 31 Mar 2013 19:44:57 +0200	[thread overview]
Message-ID: <51587619.1060208@redhat.com> (raw)
In-Reply-To: <515718A3.1080302@suse.de>

On 03/30/2013 05:53 PM, Hannes Reinecke wrote:
> On 03/29/2013 05:32 PM, Tomas Henzl wrote:
>> On 03/27/2013 08:37 AM, Hannes Reinecke wrote:
>>> On 03/26/2013 07:00 PM, Chad Dupuis wrote:
>>>>
>>>> On Tue, 19 Feb 2013, Hannes Reinecke wrote:
>>>>
>>>>> This patchset updates the SCSI midlayer to use 64-bit LUNs
>>>>> internally.
>>>>> It eliminates the need to limit the number of LUNs artificially to
>>>>> avoid aliasing issues; the SCSI midlayer can now accept any LUN
>>>>> presented
>>>>> to it.
>>>>>
>>>>> The LLDD specific settings for 'max_lun' have been left untouched;
>>>>> it should be raised to '~0' if the HBA supports 64-bit LUNs
>>>>> internally.
>>>>> However, it is up to the driver maintainer to raise that limit.
>>>>>
>>>>> Hannes Reinecke (4):
>>>>>   scsi_scan: Fixup scsilun_to_int()
>>>>>   scsi: use 64-bit LUNs
>>>>>   scsi: use 64-bit value for 'max_luns'
>>>>>   scsi: Remove CONFIG_SCSI_MULTI_LUN
>>>>>
>>>> Hannes,
>>>>
>>>> As we've reviewed these patches internally, the one question that keeps
>>>> coming up is how do we handle hardware that cannot handle a 64-bit LUN
>>>> address? For example, some of our older 2G/bps hardware can only
>>>> handle a 16-bit LUN address.  Currently we convert the u32 value to u16.
>>>   >  Do we do the same for the 64-bit conversion? Can a way be
>>> devised to
>>>> "opt-out" of receiving a 64-bit address in the first place (IIRC this
>>>   > was an option in the v1 patch set)?
>>> Yes, you can.
>>>
>>> The idea here is to let 'max_luns' control this behaviour;
>>> 'max_luns' is the highest LUN number the host can support.
>>> So for 16-bit LUN you would set max_luns to '0xFFFF', and for 32-bit
>>> LUN addresses you would be setting max_luns to '0xFFFFFFFF'.
>> Hi all,
>>
>> in scsi_report_lun_scan is max_lun compared with the result of scsilun_to_int,
>> but in that value is also stored the address method. This means, that we compare
>> the max_lun to a LUN 'handle' which doesn't seem to make much sense.
>> This makes that test dependent on which address method is used and not
>> only to the LUN number which is I think expected.
>> The solution is to have a new function 'scsilun_to_num', (I can send a patch)
>> or let the individual drivers set the max_lun to -1 and test for the allowed LUNs
>> in the driver.
>>
> You sure this is necessary?

This is not directly related to your 64bit patch, I just 'used' this thread
to discuss another issue - sorry.

>
> I would like to avoid having to parse the LUN number for validity as we 
> cannot guarantee this check has any meaning for the target.
> The only authoritative check can be made by the target.

What we can do is to decode the LUN and compare it to max_lun provided by the driver,
I think that sg_luns is able to do that, so what is needed is just to follow the SAM. 

I have seen reports of problem on three different drivers connected to various 
external storage, all of them having the same basic reason - the driver sets a max_lun
and then LUN comes encoded with a newer addressing method and something like this is shown
'kernel: scsi: host 2 channel 0 id 2 lun16643 has a LUN larger than allowed by the host adapter'

Decoding the real LUN value would fix this problem, by decoding is only meant the use in 
scsi_report_lun_scan. The LUN would be stored exactly the same way as it is now.
I know we can patch the certain drivers too, but when max_lun were  what the name says 
- max LU number, it would fix my problem very easy.

>
> In the 64-bit context the max_luns should rather be interpreted as a
> 'max bits' setting, ie the number of _bits_ per LUN number the HBA is 
> able to transport.
> But renaming 'max_luns' to 'max_bits' is a bit pointless, as it would 
> break backwards compability for no real gain.
>
> So with my patchset we have a two-step LUN validation:
> - max_luns controls the max LUN number
>    (read: max number of bits per LUN) which can be transported
>    to the target

This means in fact only 32 or 64 bit - so a single bit flag is enough?

> - The target validates the transported LUN number.
>
> Hence I don't think we would need an additional function here.
> But yes, we need to update scsi_debug as this should validate the 
> incoming LUN number.
> As should the target mode drivers.
>
> But this can be left for later once the 64-bit changes are in.
>
> Cheers,
>
> Hannes
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  reply	other threads:[~2013-03-31 17:45 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-19  8:17 [PATCH 0/4] scsi: 64-bit LUN support Hannes Reinecke
2013-02-19  8:18 ` [PATCH 1/4] scsi_scan: Fixup scsilun_to_int() Hannes Reinecke
2013-02-19  8:18 ` [PATCH 2/4] scsi: use 64-bit LUNs Hannes Reinecke
2013-02-25 15:33   ` Steffen Maier
2013-02-25 15:52     ` Hannes Reinecke
2013-02-25 17:08     ` Douglas Gilbert
2013-02-19  8:18 ` [PATCH 3/4] scsi: use 64-bit value for 'max_luns' Hannes Reinecke
2013-02-19 16:30   ` Michael Christie
2013-02-19 16:33     ` James Bottomley
2013-02-20  6:43       ` Hannes Reinecke
2013-02-19  8:18 ` [PATCH 4/4] scsi: Remove CONFIG_SCSI_MULTI_LUN Hannes Reinecke
2013-02-21 16:15 ` [PATCH 0/4] scsi: 64-bit LUN support Elliott, Robert (Server Storage)
2013-02-21 16:32   ` James Bottomley
2013-02-25 16:02     ` Douglas Gilbert
2013-02-23  9:31   ` Hannes Reinecke
2013-03-26 18:00 ` Chad Dupuis
2013-03-26 19:03   ` Douglas Gilbert
2013-03-27  7:37   ` Hannes Reinecke
2013-03-27 11:58     ` Chad Dupuis
2013-03-29 16:32     ` Tomas Henzl
2013-03-30 16:53       ` Hannes Reinecke
2013-03-31 17:44         ` Tomas Henzl [this message]
2013-04-04 10:17           ` Hannes Reinecke
2013-04-05 15:24             ` James Smart
2013-04-08 14:06               ` Hannes Reinecke
2013-04-08 15:37               ` Tomas Henzl
2013-04-09  7:38                 ` Hannes Reinecke
2013-04-09 14:27                   ` Elliott, Robert (Server Storage)
2013-04-09 14:52                     ` Hannes Reinecke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51587619.1060208@redhat.com \
    --to=thenzl@redhat.com \
    --cc=Elliott@hp.com \
    --cc=bubrown@redhat.com \
    --cc=bvanassche@acm.org \
    --cc=chad.dupuis@qlogic.com \
    --cc=hare@suse.de \
    --cc=jbottomley@parallels.com \
    --cc=jlinton@tributary.com \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.