Re: [PATCH] Re: SCSI scanning

From: Eric Youngdale (eric@andante.org)
Date: Tue Sep 19 2000 - 09:35:40 EST


    OK, my guess is that we may need to do some tweaking to the Makefile.
The basic idea is that you need to probe for hosts in a specific order.
The reason for this is that some host adapters emulate other types of
hardware. For example, some Buslogic cards emulate Adaptec 1542.
Typically in such cases you want the Buslogic driver to handle the card and
not the 1542 driver (mainly for performance reasons - Leonard would probably
have more to say about this). There *may* be other instances where probing
for one type of card can screw up another type of card, but I haven't heard
of cases like this in some time now,

    There are a handful of others - the comments in the initializer in
hosts.c explain some of them. I hope there are not others which people
failed to document.

    A second potential gotcha - for compiled in drivers, I think that
low-level drivers should be initialized prior to upper level drivers. The
reason for this is that not all of the upper level drivers are capable of
resizing the arrays on the fly (disk and cdrom are the two exceptions).
Yes, cleaning this up is on the list of things to do (it got partly done for
2.4), but fixing this is a nasty problem that reaches it's bony fingers all
the way up into some of the filesystems (essentially those stupid arrays in
ll_rw_blk which are read without any type of spinlock protection). The
CONFIG_SD_EXTRA_DEVS parameter is used to pre-allocate room in the arrays
for additional devices, so for systems with small numbers (< 40) of disks
things may just happen to work.

    For now, the trick should simply be to keep the upper level drivers at
the end of the list of objects to be linked in so the initializers run last.
Thus my gut tells me the correct link order should be:

    1) SCSI core.
    2) low-level drivers (in same order as specified in hosts.c).
    3) upper level drivers.

-Eric

----- Original Message -----
From: "Linus Torvalds" <torvalds@transmeta.com>
To: "Torben Mathiasen" <tmm@image.dk>; "Russell King" <rmk@arm.linux.org.uk>
Cc: "Eric Youngdale" <eric@andante.org>; <jan@gondor.com>;
<linux-kernel@vger.kernel.org>; <linux-scsi@vger.kernel.org>
Sent: Monday, September 18, 2000 6:58 PM
Subject: Re: [PATCH] Re: SCSI scanning

>
> Ok, there's a test9-pre3 there now..
>
> The SCSI stuff is pretty straightforward, and it works for me (and I also
> built a kernel with all regular x86-capable SCSI drivers included, so the
> others got at least that level of testing). But there are some non-x86
> scsi drivers out there etc, so give it a whirl.
>
> Basic approach: remove all #ifdef MODULE, and get rid of the hosts.c
> hardcoded listing of SCSI devices - let SCSI controller drivers do their
> own initialization.
>
> Linus
>
> ----
> - pre1:
> - USB: OHCI controller unlink and bandwidth reclamation fixes
> - USB: storage update
> - sparc64: register window race. Non-deadlock rwlocks.
> - name clash in hamradio/pi2.c and hamradio/pt.c
> - epic100 credits, 8139too driver update, sr.c initcalls
> - acenic update
> - NFS sillyrename fixups
> - mktime(). Do it just once - not 16 times.
> - misc small fixes to random drivers by Tigran
> - IDE driver picks up master/slave relationships on its own.
> - truncate unmapped/uptodate case handled correctly
> - don't do notifier locking at low level: higher levels do (or
> should do) this already.
> - ACPI interpreter updates (and file renames - making this part big)
> - SysKonnect gigabit driver update
> - 3c59x driver update
> - pcmcia debounce logic. Ugh.
> - MM balancing (Rik Riel)
> - pre2:
> - "extern inline" -> "static inline". It doesn't matter right now,
> but it's proactive for future gcc versions.
> - various net drvr updates and fixes
> - more initcall updates
> - PPC updates (including PPC-related drivers etc)
> - disallow re-mounting same filesystem in same place multiple times.
> Too confusing. And /etc/mtab gets strange.
> - Riel VM update
> - sparc updates
> - PCI bridge scanning fix: assign numbers properly
> - network updates
> - scsi fixes
> - pre3:
> - uninitialized == zero. Remove extra initializers.
> - block_prepare_write and block_truncate_page: if the page is
> up-to-date, then so are the buffer heads inside it once they
> are mapped..
> - SCSI initialization - move over to the modular case. No more
> double initialization.
> - Sync up with Alans 2.2.x driver changes
> - networking updates (iipv6 works non-modular etc)
> - netfilter update
> - adfs correct dentry operations
> - ARM update (including ARM drivers)
> - acenic driver update
> - floppy: we'd better hold the io_request_lock when playing with
"CURRENT".
> - NFS cache coherency across file locking fix
> - NFS over TCP - handle TCP socket writability right..
> - USB updates
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 21:00:20 EST