From: Jens Axboe <jens.axboe@oracle.com>
To: Jan Kara <jack@suse.cz>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
chris.mason@oracle.com, david@fromorbit.com, hch@infradead.org,
akpm@linux-foundation.org, yanmin_zhang@linux.intel.com,
richard@rsk.demon.co.uk, damien.wyart@free.fr,
fweisbec@gmail.com, Alan.Brunelle@hp.com
Subject: Re: [PATCH 5/9] writeback: support > 1 flusher thread per bdi
Date: Mon, 24 Aug 2009 16:09:42 +0200 [thread overview]
Message-ID: <20090824140942.GM12579@kernel.dk> (raw)
In-Reply-To: <20090824123611.GE10080@duck.novell.com>
On Mon, Aug 24 2009, Jan Kara wrote:
> On Mon 24-08-09 13:43:26, Jens Axboe wrote:
> > On Thu, Aug 06 2009, Jan Kara wrote:
> > > Actually, looking again that the work struct "state" field has lots of
> > > free bits. I think the code looks nicer with the attached patch, what do
> > > you think?
> > >
> > > > > 2) I'd introduce a flag with the meaning: free the work when you are
> > > > > done. Obviusly this flag makes sence only with dynamically allocated work
> > > > > structure. There would be no "on stack" flag.
> > > > > 3) I'd create a function:
> > > > > bdi_wait_work_submitted()
> > > > > which you'd have to call whenever you didn't set the flag and want to
> > > > > free the work (either explicitely, or via returning from a function which
> > > > > has the structure on stack).
> > > > > It would do:
> > > > > bdi_wait_on_work_clear(work);
> > > > > call_rcu(&work->rcu_head, bdi_work_free);
> > > > >
> > > > > wb_work_complete() would just depending on the flag setting either
> > > > > completely do away with the work struct or just do bdi_work_clear().
> > > > >
> > > > > IMO that would make the code easier to check and also less prone to
> > > > > errors (currently you have to think twice when you have to wait for the rcu
> > > > > period, call bdi_work_free, etc.).
> > > >
> > > > Didn't we go over all that last time, too?
> > > Well, probably about something similar. But this time I have a patch ;-)
> > > Compile tested only... IMO it looks nicer this way as it wraps up all the
> > > details of work freeing into one function.
> >
> > The first patch looks nice and obvious, I'll fold that in with the
> > original patch if you don't mind. It's definitely cleaner, instead of
> > overloading the pointer.
> Yes, that's fine.
>
> > The second one I'd rather hold off on, I've run over the existing code
> > many times and tested it heavily threaded and know it's safe. So I'd
> > rather not introduce any drastic changes there so close to 2.6.32, but
> > I'd be happy to revisit this soon after merge. OK?
> Fine with me, I'm just not sure about the merging in 2.6.32 - the
> umount_sem and sb->s_count problems (http://lkml.org/lkml/2009/8/5/322 -
> BTW I didn't see a response from you) should get sorted out before the
> merge. To be honest, I'm not much in favor of merging your patches before
> having resolved that and I think Christoph Hellwig or Al Viro will express
> their opinion even more strongly ;).
I don't plan to merge it before we have that sorted, don't worry. I'll
be posting it soon here again!
--
Jens Axboe
next prev parent reply other threads:[~2009-08-24 14:09 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-30 21:23 [PATCH 0/9] Per-bdi writeback flusher threads v13 Jens Axboe
2009-07-30 21:23 ` [PATCH 1/9] writeback: move dirty inodes from super_block to backing_dev_info Jens Axboe
2009-08-06 21:35 ` Christoph Hellwig
2009-08-12 16:12 ` Jens Axboe
2009-08-12 16:18 ` Jens Axboe
2009-08-28 20:29 ` Christoph Hellwig
2009-07-30 21:23 ` [PATCH 2/9] writeback: switch to per-bdi threads for flushing data Jens Axboe
2009-08-05 16:35 ` Jan Kara
2009-08-06 21:44 ` Christoph Hellwig
2009-07-30 21:23 ` [PATCH 3/9] writeback: get rid of pdflush completely Jens Axboe
2009-07-30 21:23 ` [PATCH 4/9] writeback: separate the flushing state/task from the bdi Jens Axboe
2009-07-30 21:24 ` [PATCH 5/9] writeback: support > 1 flusher thread per bdi Jens Axboe
2009-08-05 19:55 ` Jan Kara
2009-08-06 7:05 ` Jens Axboe
2009-08-06 20:56 ` Jan Kara
2009-08-24 11:43 ` Jens Axboe
2009-08-24 12:36 ` Jan Kara
2009-08-24 14:09 ` Jens Axboe [this message]
2009-08-06 21:33 ` Christoph Hellwig
2009-07-30 21:24 ` [PATCH 6/9] writeback: allow sleepy exit of default writeback task Jens Axboe
2009-08-05 19:57 ` Jan Kara
2009-08-06 7:03 ` Jens Axboe
2009-08-06 18:55 ` Jan Kara
2009-07-30 21:24 ` [PATCH 7/9] writeback: add some debug inode list counters to bdi stats Jens Axboe
2009-07-30 21:24 ` [PATCH 8/9] writeback: add name to backing_dev_info Jens Axboe
2009-07-30 21:24 ` [PATCH 9/9] writeback: check for registered bdi in flusher add and inode dirty Jens Axboe
2009-07-31 6:30 ` [PATCH 0/9] Per-bdi writeback flusher threads v13 Damien Wyart
2009-07-31 7:15 ` Jens Axboe
2009-08-03 19:29 ` Damien Wyart
2009-08-03 20:28 ` Jens Axboe
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=20090824140942.GM12579@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=Alan.Brunelle@hp.com \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=damien.wyart@free.fr \
--cc=david@fromorbit.com \
--cc=fweisbec@gmail.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=richard@rsk.demon.co.uk \
--cc=yanmin_zhang@linux.intel.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 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.