public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] softirq queue is now list_head, eliminate bh_next]
@ 2003-03-08 17:56 Luben Tuikov
  2003-03-08 18:08 ` Christoph Hellwig
  2003-03-09 16:13 ` James Bottomley
  0 siblings, 2 replies; 3+ messages in thread
From: Luben Tuikov @ 2003-03-08 17:56 UTC (permalink / raw)
  To: Linux SCSI list

Patrick Mansfield wrote:
> On Fri, Mar 07, 2003 at 06:55:42PM -0500, Luben Tuikov wrote:
> 
>>Eliminated is the double loop in scsi_softirq() -- this is
>>better handled in do_softirq() and gives the system a ``breather''.
>>(There are pros and cons for either side and if you guys
>>think that it was better with the double loop, I'll change it and
>>resubmit the patch.)
> 
> 
> I think it is better to have one loop (per your patch) - in breather cases
> when we get multiple interrupts before we can service all of them the
> do_softirq() can wakeup ksoftirqd for us to run on.

Yes, exactly my reasoning, thus the single loop.

>>  static void scsi_softirq(struct softirq_action *h)
>>  {
>>-	int cpu = smp_processor_id();
>>-	struct softscsi_data *queue = &softscsi_data[cpu];
>>+	LIST_HEAD(local_q);
>>
>>-	while (queue->head) {
>>-		Scsi_Cmnd *SCpnt, *SCnext;
>>+	local_irq_disable();
>>+	list_splice_init(&done_q[smp_processor_id()], &local_q);
>>+	local_irq_enable();
>>+
>>+	while (!list_empty(&local_q)) {
> 
> 
> Why not list_for_each_safe rather than a while?

Well, it's just simpler, since each element is, for sure,
deleted in sequence.

IMO, the macro list_for_each_safe() is very helpful (worth) when
there's a conditional (if/etc) which *may* delete the element
of the list, but since we're deleting it for sure, list_empty()
I think is simpler, and it saves as a struct list_head *tmp.

Furthermore list_for_each_*() implies _traversing_ the list in
some way, all the while we're just _consuming_ from the front
of a local list...  Me and my formalisms... :-)

[[I've used both profusely elsewhere, and that particular construct
has become an idiom for me (for its purpose).]]
 
> 
>>+		} /* switch (command disposition) */
>>+	} /* while (local queue is not emtpy) */
>>+} /* end scsi_softirq() */
>>
> 
> 
> You should get rid of the comments after the }'s.

I just simulated what was in the code before so as to stay
as close to the ``median'' as possible.

But ok, I'll delete them and resubmit the patch.

The only comment I put after a closing brace of a function
definition is /* end of fn_name() */ so that one can see
which function ends if its definition (code) is only partly
shown in one's screen.
I hope that's ok with everyone?  If not, flame me now.

Patrick, thanks for your input.

-- 
Luben




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] softirq queue is now list_head, eliminate bh_next]
  2003-03-08 17:56 [PATCH] softirq queue is now list_head, eliminate bh_next] Luben Tuikov
@ 2003-03-08 18:08 ` Christoph Hellwig
  2003-03-09 16:13 ` James Bottomley
  1 sibling, 0 replies; 3+ messages in thread
From: Christoph Hellwig @ 2003-03-08 18:08 UTC (permalink / raw)
  To: Luben Tuikov; +Cc: Linux SCSI list

On Sat, Mar 08, 2003 at 12:56:14PM -0500, Luben Tuikov wrote:
> The only comment I put after a closing brace of a function
> definition is /* end of fn_name() */ so that one can see
> which function ends if its definition (code) is only partly
> shown in one's screen.
> I hope that's ok with everyone?  If not, flame me now.

No need for a flame, but please remove the comment, there is a strong
tendency against this style of commenting in the core kernel code.

A related note from the CondingStyle document:

	Functions should be short and sweet, and do just one thing.  They should
	fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24,
	as we all know), and do one thing and do that well.

You're _code_ is actually fine regarding to that so you shouldn't need the
comments :)


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] softirq queue is now list_head, eliminate bh_next]
  2003-03-08 17:56 [PATCH] softirq queue is now list_head, eliminate bh_next] Luben Tuikov
  2003-03-08 18:08 ` Christoph Hellwig
@ 2003-03-09 16:13 ` James Bottomley
  1 sibling, 0 replies; 3+ messages in thread
From: James Bottomley @ 2003-03-09 16:13 UTC (permalink / raw)
  To: Luben Tuikov; +Cc: Linux SCSI list

On Sat, 2003-03-08 at 11:56, Luben Tuikov wrote:
> I just simulated what was in the code before so as to stay
> as close to the ``median'' as possible.
> 
> But ok, I'll delete them and resubmit the patch.

Actually, if you're going to resubmit the patch, could you use per cpu
areas for the queues (rather than __cacheline_aligned)?  It saves space
(on some architectures) and avoids us having to worry about NR_CPUS.

Thanks,

James




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-03-09 16:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-03-08 17:56 [PATCH] softirq queue is now list_head, eliminate bh_next] Luben Tuikov
2003-03-08 18:08 ` Christoph Hellwig
2003-03-09 16:13 ` James Bottomley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox