From: Andrew Morton <akpm@osdl.org>
To: Oleg Nesterov <oleg@tv-sign.ru>
Cc: David Howells <dhowells@redhat.com>,
Christoph Hellwig <hch@infradead.org>,
Ingo Molnar <mingo@elte.hu>, Linus Torvalds <torvalds@osdl.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH, RFC] reimplement flush_workqueue()
Date: Mon, 18 Dec 2006 16:27:01 -0800 [thread overview]
Message-ID: <20061218162701.a3b5bfda.akpm@osdl.org> (raw)
In-Reply-To: <20061217223416.GA6872@tv-sign.ru>
On Mon, 18 Dec 2006 01:34:16 +0300
Oleg Nesterov <oleg@tv-sign.ru> wrote:
> Remove ->remove_sequence, ->insert_sequence, and ->work_done from
> struct cpu_workqueue_struct. To implement flush_workqueue() we can
> queue a barrier work on each CPU and wait for its completition.
Seems sensible. I seem to recall considering doing it that way when I
initially implemeted flush_workqueue(), but I don't recall why I didn't do
this. hmm.
> We don't need to worry about CPU going down while we are are sleeping
> on the completition. take_over_work() will move this work on another
> CPU, and the handler will wake up us eventually.
>
> NOTE: I removed 'int cpu' parameter, flush_workqueue() locks/unlocks
> workqueue_mutex unconditionally. It may be restored, but I think it
> doesn't make much sense, we take the mutex for the very short time,
> and the code becomes simpler.
>
Taking workqueue_mutex() unconditionally in flush_workqueue() means
that we'll deadlock if a single-threaded workqueue callback handler calls
flush_workqueue().
It's an idiotic thing to do, but I think I spotted a site last week which
does this. scsi? Not sure..
next prev parent reply other threads:[~2006-12-19 0:27 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-17 22:34 [PATCH, RFC] reimplement flush_workqueue() Oleg Nesterov
2006-12-18 3:09 ` Linus Torvalds
2006-12-19 0:27 ` Andrew Morton [this message]
2006-12-19 0:43 ` Oleg Nesterov
2006-12-19 1:00 ` Andrew Morton
2007-01-04 11:32 ` Srivatsa Vaddagiri
2007-01-04 14:29 ` Oleg Nesterov
2007-01-04 15:56 ` Srivatsa Vaddagiri
2007-01-04 16:31 ` Oleg Nesterov
2007-01-04 16:57 ` Srivatsa Vaddagiri
2007-01-04 17:18 ` Andrew Morton
2007-01-04 18:09 ` Oleg Nesterov
2007-01-04 18:31 ` Andrew Morton
2007-01-05 9:03 ` Srivatsa Vaddagiri
2007-01-05 14:07 ` Oleg Nesterov
2007-01-06 15:24 ` Srivatsa Vaddagiri
2007-01-05 8:56 ` Srivatsa Vaddagiri
2007-01-05 12:42 ` Oleg Nesterov
2007-01-06 15:11 ` Srivatsa Vaddagiri
2007-01-06 15:10 ` [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update Oleg Nesterov
2007-01-06 15:45 ` Srivatsa Vaddagiri
2007-01-06 16:30 ` Oleg Nesterov
2007-01-06 16:38 ` Srivatsa Vaddagiri
2007-01-06 17:34 ` Oleg Nesterov
2007-01-07 10:43 ` Srivatsa Vaddagiri
2007-01-07 12:56 ` Oleg Nesterov
2007-01-07 14:22 ` Oleg Nesterov
2007-01-07 14:42 ` Oleg Nesterov
2007-01-07 16:43 ` Srivatsa Vaddagiri
2007-01-07 17:01 ` Srivatsa Vaddagiri
2007-01-07 17:33 ` Oleg Nesterov
2007-01-07 17:18 ` Oleg Nesterov
2007-01-07 16:21 ` Srivatsa Vaddagiri
2007-01-07 17:09 ` Oleg Nesterov
2007-01-06 19:11 ` Andrew Morton
2007-01-06 19:13 ` Ingo Molnar
2007-01-07 11:00 ` Srivatsa Vaddagiri
2007-01-07 19:59 ` Andrew Morton
2007-01-07 21:01 ` [PATCH] flush_cpu_workqueue: don't flush an empty ->worklist Oleg Nesterov
2007-01-08 23:54 ` Andrew Morton
2007-01-09 5:04 ` Srivatsa Vaddagiri
2007-01-09 5:26 ` Andrew Morton
2007-01-09 6:56 ` Ingo Molnar
2007-01-09 9:33 ` Srivatsa Vaddagiri
2007-01-09 9:44 ` Ingo Molnar
2007-01-09 9:51 ` Andrew Morton
2007-01-09 10:09 ` Srivatsa Vaddagiri
2007-01-09 10:15 ` Andrew Morton
2007-01-09 15:07 ` Oleg Nesterov
2007-01-09 15:59 ` Srivatsa Vaddagiri
2007-01-09 16:38 ` Oleg Nesterov
2007-01-09 16:46 ` Srivatsa Vaddagiri
2007-01-09 16:56 ` Oleg Nesterov
2007-01-14 23:54 ` Oleg Nesterov
2007-01-15 4:33 ` Srivatsa Vaddagiri
2007-01-15 12:54 ` Oleg Nesterov
2007-01-15 13:08 ` Oleg Nesterov
2007-01-15 16:18 ` Srivatsa Vaddagiri
2007-01-15 16:55 ` Oleg Nesterov
2007-01-16 5:26 ` Srivatsa Vaddagiri
2007-01-16 13:27 ` Oleg Nesterov
2007-01-17 6:17 ` Srivatsa Vaddagiri
2007-01-17 15:47 ` Oleg Nesterov
2007-01-17 16:12 ` Srivatsa Vaddagiri
2007-01-17 17:01 ` Oleg Nesterov
2007-01-17 16:25 ` Srivatsa Vaddagiri
2007-01-07 21:51 ` [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update Oleg Nesterov
2007-01-08 15:22 ` Srivatsa Vaddagiri
2007-01-08 15:56 ` Oleg Nesterov
2007-01-08 16:31 ` Srivatsa Vaddagiri
2007-01-08 17:06 ` Oleg Nesterov
2007-01-08 18:37 ` Pallipadi, Venkatesh
2007-01-09 1:11 ` Srivatsa Vaddagiri
2007-01-09 4:39 ` Srivatsa Vaddagiri
2007-01-09 14:38 ` Oleg Nesterov
2007-01-08 15:37 ` Srivatsa Vaddagiri
2007-01-04 12:02 ` [PATCH, RFC] reimplement flush_workqueue() Srivatsa Vaddagiri
2007-01-04 14:38 ` Oleg Nesterov
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=20061218162701.a3b5bfda.akpm@osdl.org \
--to=akpm@osdl.org \
--cc=dhowells@redhat.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=oleg@tv-sign.ru \
--cc=torvalds@osdl.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).