All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luben Tuikov <luben@splentec.com>
To: linux-scsi <linux-scsi@vger.kernel.org>
Subject: Re: [PATCH] SCSI host ID assigment overoptimization removal in 2.4.18
Date: Thu, 18 Jul 2002 15:45:14 -0400	[thread overview]
Message-ID: <3D371ACA.2065E434@splentec.com> (raw)
In-Reply-To: 20020718152242.B4026@j4.msk.systemsix.com

Vladislav Bolkhovitine wrote:
> 
> There is an overoptimization in SCSI host ID assigment algorithm in 2.4.18
> and possibly others, which lead to appearance of SCSI hosts with the same IDs.
> 
> Simple scenario:
> 1. Add one adapter, host_id=0
> 2. Remove it
> 3. Add another adapter, its host_id=0
> 4. Add the adapter 1 again, it reuses its original scsi_host_no_list entry
>         and gets host_id=0 as well. Oops.
> 
> When the adapter was being unregistered on step 2, max_scsi_hosts gets
> decremented to 0. During registration of the new host, it received
> host_id=max_scsi_hosts. On the step 4, the old entry in scsi_host_no_list
> was found and reused, thus we have two hosts with the same host_id 0.
> 
> So, it is impossible to use simultaneously scsi_host_no_list and host IDs
> reusing (i.e. max_scsi_hosts decrementing). I chose to remove the last one.
> Here is the patch against 2.4.18.
> 
> I was not able to find who is the maintainer of SCSI subsistem at the moment.
> Who is doing so, please consider the idea of this patch to include in the
> mainstream kernel.


Yep, I concur -- this patch works.

I've wanted a patch for this for sometime and brought this same
issue on 02/05/29, but was too busy with my own project to unscramble
the infamous SCSI host registration.

AFAIK, Doug is working on this now and it will be a whole different
and better story for latter 2.5/6 (struct list_head, etc.).

Anyways, this works for 2.4 and I'd be happy to see it in.

Thanks,
-- 
Luben
 
> Vlad
> 
> diff -urdN linux-2.4.18.orig/drivers/scsi/hosts.c linux-2.4.18.host_fix/drivers/scsi/hosts.c
> --- linux-2.4.18.orig/drivers/scsi/hosts.c      Mon Feb 25 22:38:04 2002
> +++ linux-2.4.18.host_fix/drivers/scsi/hosts.c  Wed Jul 17 17:08:47 2002
> @@ -107,6 +107,17 @@
>      if (shn) shn->host_registered = 0;
>      /* else {} : This should not happen, we should panic here... */
> 
> +    /*
> +     * With this algorithm together with scsi_host_no_list entry reusage
> +     * from scsi_register() it is possible really easy to get two
> +     * hosts with the same host_id. Simple scenario:
> +     *  - add one adapter, host_id=0
> +     *  - remove it
> +     *  - add another adapter, its host_id=0
> +     *  - add the adapter 1 again, it reuses its scsi_host_no_list entry
> +     *     and gets host_id=0 as well. Oops.
> +     */
> +#if 0
>      /* If we are removing the last host registered, it is safe to reuse
>       * its host number (this avoids "holes" at boot time) (DB)
>       * It is also safe to reuse those of numbers directly below which have
> @@ -121,6 +132,7 @@
>                 break;
>         }
>      }
> +#endif
> -
> 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:[~2002-07-18 19:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-18 11:22 [PATCH] SCSI host ID assigment overoptimization removal in 2.4.18 Vladislav Bolkhovitine
2002-07-18 19:45 ` Luben Tuikov [this message]
2002-07-21  1:02 ` Itai Nahshon
  -- strict thread matches above, loose matches on Subject: below --
2002-07-19  7:09 Aron Zeh
2002-07-19  7:42 ` Vladislav Bolkhovitine
2002-07-20 23:49 Pete Zaitcev
2002-07-22 12:15 Aron Zeh

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=3D371ACA.2065E434@splentec.com \
    --to=luben@splentec.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.