linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: Jan Kara <jack@suse.cz>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	chris.mason@oracle.com, hch@infradead.org, tytso@mit.edu,
	akpm@linux-foundation.org, trond.myklebust@fys.uio.no
Subject: Re: [PATCH 10/16] writeback: splice dirty inode entries to default bdi on bdi_destroy()
Date: Thu, 17 Sep 2009 11:22:53 +0200	[thread overview]
Message-ID: <20090917092253.GA16941@duck.suse.cz> (raw)
In-Reply-To: <20090916182932.GR23126@kernel.dk>

On Wed 16-09-09 20:29:32, Jens Axboe wrote:
> On Wed, Sep 16 2009, Jan Kara wrote:
> > On Wed 16-09-09 15:24:48, Jens Axboe wrote:
> > > We cannot safely ensure that the inodes are all gone at this point
> > > in time, and we must not destroy this bdi with inodes having off it.
> > > So just splice our entries to the default bdi since that one will
> > > always persist.
> >   I'd at least add a comment like
> > "XXX: This is probably a bug but let's workaround it for now."
> >   And either remove the code or update the comment when this gets resolved.
> 
> Thinking more about it - what if inodes happen to get requeued on the
> final flush? bdi_destroy() likely can't wait for flushing to happen,
> since (depending on the tear down cycle), part of the device may be gone
> already.
  In WB_SYNC_ALL mode, no inodes can get requeued. You are guaranteed that
after writeback returns, all data & inodes that were dirty at the time of
the call are on disk. So unless the filesystem is alive during
bdi_destroy() nothing should be left on bdi lists.

> And I did mean __sync_filesystem() -> __sync_blockdev(), since this is
> what happen on last close. So it could also be that we need something
> stronger to guarantee that things are really gone.
  Well, __sync_filesystem() should do all that is needed before calling
__sync_blockdev(). But doing that with live filesystem is obviously racy...
If by last close, you mean the time when we unmount the filesystem and thus
drop the bdev reference, then umount should have synced all the inodes
(actually, you'd see "Busy inodes on umount" message if it did not) so that
probably works right.

									Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

  reply	other threads:[~2009-09-17  9:22 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-16 13:24 [PATCH 0/16] Post merge per-bdi writeback patches v4 Jens Axboe
2009-09-16 13:24 ` [PATCH 01/16] fs: remove bdev->bd_inode_backing_dev_info Jens Axboe
2009-09-16 13:24 ` [PATCH 02/16] writeback: get rid of wbc->for_writepages Jens Axboe
2009-09-16 13:24 ` [PATCH 03/16] writeback: merely wakeup flusher thread if work allocation fails for WB_SYNC_NONE Jens Axboe
2009-09-16 13:24 ` [PATCH 04/16] writeback: make wb_writeback() take an argument structure Jens Axboe
2009-09-16 13:32   ` Jan Kara
2009-09-16 13:24 ` [PATCH 05/16] fs: Assign bdi in super_block Jens Axboe
2009-09-16 13:34   ` Jan Kara
2009-09-16 13:24 ` [PATCH 06/16] writeback: only use bdi_writeback_all() for WB_SYNC_NONE writeout Jens Axboe
2009-09-16 13:24 ` [PATCH 07/16] writeback: use RCU to protect bdi_list Jens Axboe
2009-09-16 13:24 ` [PATCH 08/16] writeback: inline allocation failure handling in bdi_alloc_queue_work() Jens Axboe
2009-09-16 13:24 ` [PATCH 09/16] writeback: separate starting of sync vs opportunistic writeback Jens Axboe
2009-09-16 13:36   ` Jan Kara
2009-09-16 13:24 ` [PATCH 10/16] writeback: splice dirty inode entries to default bdi on bdi_destroy() Jens Axboe
2009-09-16 13:43   ` Jan Kara
2009-09-16 18:29     ` Jens Axboe
2009-09-17  9:22       ` Jan Kara [this message]
2009-09-16 13:24 ` [PATCH 11/16] writeback: add comments to bdi_work structure Jens Axboe
2009-09-16 13:24 ` [PATCH 12/16] writeback: use schedule_timeout_interruptible() Jens Axboe
2009-09-16 13:24 ` [PATCH 13/16] writeback: remove smp_mb(), it's not needed with list_add_tail_rcu() Jens Axboe
2009-09-16 13:24 ` [PATCH 14/16] writeback: improve scalability of bdi writeback work queues Jens Axboe
2009-09-16 13:24 ` [PATCH 15/16] writeback: Fix bdi use after free in wb_work_complete() Jens Axboe
2009-09-16 13:24 ` [PATCH 16/16] writeback: fix possible bdi writeback refcounting problem 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=20090917092253.GA16941@duck.suse.cz \
    --to=jack@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=chris.mason@oracle.com \
    --cc=hch@infradead.org \
    --cc=jens.axboe@oracle.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=trond.myklebust@fys.uio.no \
    --cc=tytso@mit.edu \
    /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).