From: Evan Rempel <erempel@uvic.ca>
To: linux-kernel@vger.kernel.org
Subject: SCSI init discussion/SAN problem
Date: Fri, 17 Nov 2006 22:51:59 -0800 [thread overview]
Message-ID: <455EAD8F.20604@uvic.ca> (raw)
In-Reply-To: <20061118172739.30538d16.sfr@canb.auug.org.au>
I have a problem with the order that the SCSI subsystem attaches disk
devices that shows up in a multipath environment.
My understanding is that during the finishing phase of the SCSI
subsystem the partition table is read from the drive and the bare drive
and each partition are registered with the kernel. Please correct me if
I am wrong becuase I am not a kernel developer even at the tinkering level.
The problem shows up in a multipath environment where the same physical
device has it's partition table read and then registered with the kernel
*for each path on which it available*. I understand the requirement for
the second (possibly more) devices registered with the kernel, and I
want this behaviour to continue (how else would multipath work?).
The problem is that reading the partition table on each of the paths
causes I/O to be generated to the physical disk on each of the paths.
For some disk controllers (any with active/passive controllers) this
will initial a failover event from the active to the passive controller.
This failover can take a few seconds, but multipathing may result in
100's of such paths and failover events which make the boot time very
long. I have a machine that takes close to 1hr to boot due to this behavior.
What I would like to have considered is the ability to get the serial
number/WWName of the device prior to reading the partition table. If the
serial number/WWName has already been registered under a different SCSI
ID, then just use the partition table that was used to load the first
instance. This will result in I/O only on the first path to each disk.
Another thing that might make things even better is to do something like
the mp_prio utils of multipathing do and determine which paths is an
active path, and only read the partition table from the active paths.
This may require a 2 pass device registration mechanism becuase it may
be possible that none of the paths are active paths, meaning that the
device did not get registered by the end of the device list. We would
have to go back to the beginning of the list and for any device that was
not yet registered with the kernel, read the serial number/WWName and
partition table, register with the kernel and then determine if any of
the other paths are for the same device to load them into the kernel.
I hope this is clear enough to start a dialog on how to change the scsi
initialization faster for large systems on multipath hardware.
Evan Rempel
Senior Programmer Analyst
University of Victoria
next prev parent reply other threads:[~2006-11-18 6:51 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-18 5:43 [RFC 0/7] Remove slab cache declarations in slab.h Christoph Lameter
2006-11-18 5:43 ` [RFC 1/7] Remove declaration of sighand_cachep from slab.h Christoph Lameter
2006-11-18 6:27 ` Stephen Rothwell
2006-11-18 6:51 ` Evan Rempel [this message]
2006-11-20 16:20 ` Christoph Lameter
2006-11-21 8:07 ` Andrew Morton
2006-11-21 19:36 ` Christoph Lameter
2006-11-21 19:49 ` Andrew Morton
2006-11-21 19:56 ` Christoph Lameter
2006-11-21 20:07 ` Andrew Morton
2006-11-18 5:43 ` [RFC 2/7] Remove bio_cachep " Christoph Lameter
2006-11-18 5:43 ` [RFC 3/7] Move vm_area_cachep to mm.h Christoph Lameter
2006-11-18 5:44 ` [RFC 4/7] Move files_cachep to file.h Christoph Lameter
2006-11-21 8:09 ` Andrew Morton
2006-11-18 5:44 ` [RFC 5/7] Use external declaration for filep_cachep Christoph Lameter
2006-11-18 6:31 ` Stephen Rothwell
2006-11-20 16:20 ` Christoph Lameter
2006-11-18 5:44 ` [RFC 6/7] Use an external declaration in exit.c for fs_cachep Christoph Lameter
2006-11-18 6:32 ` Stephen Rothwell
2006-11-18 6:37 ` Oleg Verych
2006-11-18 6:53 ` Stephen Rothwell
2006-11-20 16:21 ` Christoph Lameter
2006-11-18 5:44 ` [RFC 7/7] Move names_cachep to fs.h Christoph Lameter
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=455EAD8F.20604@uvic.ca \
--to=erempel@uvic.ca \
--cc=linux-kernel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox