All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Duncan <lduncan@suse.com>
To: Sagi Grimberg <sagig@dev.mellanox.co.il>,
	linux-scsi <linux-scsi@vger.kernel.org>
Cc: Christoph Hellwig <hch@infradead.org>,
	hare@suse.com, jthumshirn@suse.de, JBottomley@Parallels.com
Subject: Re: [PATCH 1/1] Update scsi hosts to use idr for host number mgmt
Date: Wed, 9 Sep 2015 18:31:24 -0700	[thread overview]
Message-ID: <55F0DD6C.7000109@suse.com> (raw)
In-Reply-To: <55EC58D8.7010605@suse.com>

On 09/06/2015 08:16 AM, Lee Duncan wrote:
> On 09/06/2015 12:34 AM, Sagi Grimberg wrote:
>> On 9/5/2015 11:44 PM, Lee Duncan wrote:
>>> Each Scsi_host instance gets a host number starting
>>> at 0, but this was implemented with an atomic integer,
>>> and rollover wasn't considered. Another problem with
>>> this design is that scsi host numbers used by iscsi
>>> are never reused, thereby making rollover more likely.
>>> This patch converts Scsi_host instances to use idr
>>> to manage their instance numbers and to simplify
>>> instance number to pointer lookups.
>>>
>>> This also means that host instance numbers will be
>>> reused, when available.
>>>
>>> Signed-off-by: Lee Duncan <lduncan@suse.com>
>>> ---
>>>   drivers/scsi/hosts.c | 59
>>> +++++++++++++++++++++++++---------------------------
>>>   1 file changed, 28 insertions(+), 31 deletions(-)
>>>
>>> diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
>>> index 8bb173e01084..1127a50e5942 100644
>>> --- a/drivers/scsi/hosts.c
>>> +++ b/drivers/scsi/hosts.c
>>> @@ -33,7 +33,7 @@
>>>   #include <linux/transport_class.h>
>>>   #include <linux/platform_device.h>
>>>   #include <linux/pm_runtime.h>
>>> -
>>> +#include <linux/idr.h>
>>>   #include <scsi/scsi_device.h>
>>>   #include <scsi/scsi_host.h>
>>>   #include <scsi/scsi_transport.h>
>>> @@ -41,8 +41,8 @@
>>>   #include "scsi_priv.h"
>>>   #include "scsi_logging.h"
>>>
>>> -
>>> -static atomic_t scsi_host_next_hn = ATOMIC_INIT(0);    /* host_no for
>>> next new host */
>>> +static DEFINE_SPINLOCK(host_index_lock);
>>> +static DEFINE_IDR(host_index_idr);
>>>
>>>
>>>   static void scsi_host_cls_release(struct device *dev)
>>> @@ -337,6 +337,10 @@ static void scsi_host_dev_release(struct device
>>> *dev)
>>>
>>>       kfree(shost->shost_data);
>>>
>>> +    spin_lock(&host_index_lock);
>>> +    idr_remove(&host_index_idr, shost->host_no);
>>> +    spin_unlock(&host_index_lock);
>>> +
>>
>> Did you change your mind on having host_[get|put]_idx() helpers?
> 

Sagi: I may have answered you incorrectly.

Yes, when I switched from using ida routines to using idr, I dropped the
helper functions. But I think you are right, the code is cleaner with
them present, so I will resubmit.

> No. As I said on the description:
> 
>> A separate patch sequence follows which will add helper routines
>> for the ida index functions.
> 
> I'll be sending out that patch series today (I hope).
> 
> I *do* believe it would be useful to add some ida helper routines, since
> callers of these routines seem mostly to use a uniform calling sequence.
> But even so some of the callers do things differently enough so that I
> was not comfortable changing them to use the helper routines.
> 
> But the "idr" routines, i.e. the ones that manage both an index *and* a
> pointer, which are the ones I'm using in hosts.c, are not called so
> uniformly, so helper routines did not seem like a good idea.
> 

-- 
Lee Duncan
SUSE Labs

  reply	other threads:[~2015-09-10  1:31 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-05 20:44 [PATCH 0/1] Update scsi hosts to use idr for host number mgmt Lee Duncan
2015-09-05 20:44 ` [PATCH 1/1] " Lee Duncan
2015-09-06  7:34   ` Sagi Grimberg
2015-09-06 15:16     ` Lee Duncan
2015-09-10  1:31       ` Lee Duncan [this message]
2015-09-06  7:32 ` [PATCH 0/1] " Sagi Grimberg
2015-09-06 15:12   ` Lee Duncan

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=55F0DD6C.7000109@suse.com \
    --to=lduncan@suse.com \
    --cc=JBottomley@Parallels.com \
    --cc=hare@suse.com \
    --cc=hch@infradead.org \
    --cc=jthumshirn@suse.de \
    --cc=linux-scsi@vger.kernel.org \
    --cc=sagig@dev.mellanox.co.il \
    /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.