All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Tomas Henzl <thenzl@redhat.com>
Cc: James.Smart@emulex.com, 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: Tue, 09 Apr 2013 09:38:04 +0200	[thread overview]
Message-ID: <5163C55C.3020909@suse.de> (raw)
In-Reply-To: <5162E426.40202@redhat.com>

On 04/08/2013 05:37 PM, Tomas Henzl wrote:
> On 04/05/2013 05:24 PM, James Smart wrote:
>>
>> On 4/4/2013 6:17 AM, Hannes Reinecke wrote:
>>> On 03/31/2013 07:44 PM, Tomas Henzl wrote:
>>>> 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.
>>>>
>>> Errm.
>>>
>>> No. Decoding LUNs is _evil_. It has only a relevance on the target,
>>> and even then it might choose to ignore it.
>>> So we cannot try to out-guess the target here.
> OK, I can see the problems with decoding the LUN one of them is the need to
> again encode the LUN to address format + number. I'm not sure if the hw
> would work if another address mode were used.
> 
> When we understand the LUN as a complex structure then it makes no sense
> to compare to max_lun as a number - http://lxr.linux.no/#linux+v3.8.6/drivers/scsi/scsi_scan.c#L1471
> 
Oh, but it does. See below.

>>> The error you're reporting is that lpfc is setting max_luns to
>>> '255', which of course is less than 16643. Increasing max_luns on
>>> lpfc to '0xFFFF' will fix your problem; nothing to do with 64-bit
>>> LUNs ...
> I think I haven't mentioned lpfc, but it doesn't matter.
> Fixing this in individual drivers by increasing the max_lun is not easy,
> because the firmware could have some reasons for the max lun (some tables, ..., 
> fact is I have no idea how this is implemented in the hw).
> If the fix for this were just to set max_lun to 0xFFFF in every driver
> it means that we could remove the max_lun and the test completely. 
> 
> A kernel option like 'ignore_max_lun' would help, but I somehow dislike it,
> what do you think?
> 
Well, I've thought about this, too.

You are right in the sense that 'max_lun' actually has a double meaning.

First it's being used as the upper limit for sequential scan, where
is has a strictly sequential meaning. So any internal LUN structure
doesn't come into play here are we're just 'counting'.

Secondly it's being used as a simple validation for any LUN numbers
reported via REPORT LUNS.
Here it the max_lun value actually refers to the amount of _bits_ in
a LUN number the HBA can transfer. Again, the internal LUN structure
doesn't come into play here; this is purely a hardware limitation on
the HBA. Whether a LUN is valid or not is none of our concern; if
the target accepts the LUN is has to be valid. If it doesn't then we
don't care whether the LUN structure is valid or not; there is no
device to be had anyway.

However, after consulting SAM it is true that a plain 'max_lun' is
incorrect for any LUN value higher than 255.
LUN values higher than 255 should be represented with the 'flat
space addressing' model, ie bit 6 should be set.
Sadly, the various SAM revisions differ on how LUNs lower than
255 should be treated; they might or might not have set the flat
space addressing model.

So yeah, I guess we should be handling the HBA restriction different
from the max_lun setting.

I see to cook up a patch.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
--
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-04-09  7:38 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
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 [this message]
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=5163C55C.3020909@suse.de \
    --to=hare@suse.de \
    --cc=Elliott@hp.com \
    --cc=James.Smart@emulex.com \
    --cc=bubrown@redhat.com \
    --cc=bvanassche@acm.org \
    --cc=chad.dupuis@qlogic.com \
    --cc=jbottomley@parallels.com \
    --cc=jlinton@tributary.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=thenzl@redhat.com \
    /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.