From: Luben Tuikov <tluben@rogers.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Patrick Mansfield <patmans@us.ibm.com>,
James Bottomley <James.Bottomley@steeleye.com>,
linux-scsi@vger.kernel.org
Subject: Re: [PATCH] scsi-misc-2.5 user per-device spare command
Date: Fri, 25 Apr 2003 10:12:51 -0400 [thread overview]
Message-ID: <3EA94263.1020902@rogers.com> (raw)
In-Reply-To: <20030425111227.B28577@infradead.org>
Christoph Hellwig wrote:
> On Thu, Apr 24, 2003 at 10:03:17AM -0700, Patrick Mansfield wrote:
>
>
>>+ /*
>>+ * Use any spare command first.
>>+ */
>>+ cmd = sdev->spare_cmd;
>>+ if (cmd != NULL)
>>+ sdev->spare_cmd = NULL;
>>+ else
>>+ cmd = kmem_cache_alloc(sdev->host->cmd_pool->slab,
>>+ gfp_mask | sdev->host->cmd_pool->gfp_mask);
>
>
> This logical is flawed. We don't need a spare command if we always use
> it first. In addition the sdev->spare_cmd access is racy.
Good call Christoph!
I was going to comment on this last night, but it was too late
and I only marked the messages for this morning.
Patrick, take a look at how the logic now works, and if you're
doing something similar, try to at least emulate it, as if not
improve on it (although Christoph has already done this).
Here are a few pointers:
1. Use the cache *first*, and if it's depleted, *then*
use the spare command struct.
2. Why spare_cmd is a pointer? Why? Why?
Wouldn't it be much more *flexible* to be a list_head,
so that maybe we can hook up more commands in the future?
I.e. keep your options open...
3. As Christoph pointed out, access to your spare is racy.
4. Why are you using list_del()???? You should use list_del_init()!
I can easily envision a hard to catch bug (and quite rare), when
some LLDD gets the spare and does a check on the list_head...
Furthermore, cannot you see the infrastructure to which we've
tried to get closer to? More specifically a command struct travels
list_heads as it comes out of the cache/spare_list and comes
back to the cache/spare_list.
--
Luben
next prev parent reply other threads:[~2003-04-25 14:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-24 17:02 [PATCH] scsi-misc-2.5 remove scsi_device list_lock Patrick Mansfield
2003-04-24 17:03 ` [PATCH] scsi-misc-2.5 user per-device spare command Patrick Mansfield
2003-04-24 17:03 ` [PATCH] scsi-misc-2.5 fold scsi_alloc_cmd into __scsi_get_command Patrick Mansfield
2003-04-25 10:12 ` [PATCH] scsi-misc-2.5 user per-device spare command Christoph Hellwig
2003-04-25 14:12 ` Luben Tuikov [this message]
2003-04-25 16:50 ` Patrick Mansfield
2003-04-25 16:56 ` Christoph Hellwig
2003-04-25 17:45 ` Luben Tuikov
2003-04-25 18:00 ` Patrick Mansfield
2003-04-25 18:36 ` Luben Tuikov
2003-04-25 16:37 ` Patrick Mansfield
2003-04-25 16:50 ` Christoph Hellwig
2003-04-25 16:57 ` James Bottomley
2003-04-25 20:49 ` Patrick Mansfield
2003-04-25 17:38 ` Luben Tuikov
2003-04-25 10:12 ` [PATCH] scsi-misc-2.5 remove scsi_device list_lock Christoph Hellwig
2003-04-25 10:47 ` Jens Axboe
2003-04-25 16:53 ` Patrick Mansfield
2003-04-25 17:20 ` Jens Axboe
2003-04-25 14:00 ` Luben Tuikov
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=3EA94263.1020902@rogers.com \
--to=tluben@rogers.com \
--cc=James.Bottomley@steeleye.com \
--cc=hch@infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=patmans@us.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox