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/11] writeback: splice dirty inode entries to default bdi on bdi_destroy()
Date: Thu, 17 Sep 2009 11:33:54 +0200	[thread overview]
Message-ID: <20090917093354.GB16941@duck.suse.cz> (raw)
In-Reply-To: <20090916183129.GS23126@kernel.dk>

On Wed 16-09-09 20:31:29, Jens Axboe wrote:
> On Wed, Sep 16 2009, Jan Kara wrote:
> > On Wed 16-09-09 15:21:08, Jens Axboe wrote:
> > > On Wed, Sep 16 2009, Jan Kara wrote:
> > > > On Tue 15-09-09 20:16:56, 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.
> > > >                                                         ^^^ hanging
> > > > 
> > > > > So just splice our entries to the default bdi since that one will
> > > > > always persist.
> > > >   BTW: Why can't we make sure all inodes on the BDI are clean when we
> > > > destroy it? Common sence would suggest that we better should be able to do
> > > > it :).
> > > >   Maybe it's because most users of private BDI do not call bdi_unregister
> > > > but rather directly bdi_destroy? Is this correct behavior?
> > > Not sure yet, it's on the TODO. This basically works around the problem
> > > for now at least. With dm at least, I'm seeing inodes still hanging off
> > > the bdi after we have done a sync_blockdev(bdev, 1);.
> >   Do you really mean sync_blockdev() or fsync_bdev()? Because the first one
> > just synces the blockdev's mapping not the filesystem...
> 
> Do we want a fsync_bdev() in __blkdev_put()? It's only doing
  No, we cannot call fsync_bdev() there because nothing really guarantees
that there exists any filesystem on the device and that it is setup enough
to handle IO - __blkdev_put() is called e.g. after the filesystem has been
cleaned up in ->put_super(). You can have a look like code in
generic_shutdown_super() looks like. The function is called when user has
no chance of dirtying any more data. In particular sync_filesystem() call
there should write everything to disk. If it does not, it's a bug.
->put_super() can dirty some data again, but only buffers of underlying
blockdev (e.g. when writing bitmaps, superblock etc.). If ->put_super()
method of some filesystem leaves some inodes dirty, it's a bug - we'd see
"VFS: Busy inodes after unmount" message.

> sync_blockdev() on last close, and dm wants to tear down the device at
> that point. So either dm needs to really flush the device when going
> readonly, or we need to strengthen the 'flush on last close'.
  Yes, but at the time __blkdev_put() is called, there should be no dirty
inodes as I've argued above. So I still don't quite get how there could be
any :)

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

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

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-15 18:16 [PATCH 0/11] Post merge per-bdi writeback patches v3 Jens Axboe
2009-09-15 18:16 ` [PATCH 01/11] fs: remove bdev->bd_inode_backing_dev_info Jens Axboe
2009-09-16 12:06   ` Jan Kara
2009-09-15 18:16 ` [PATCH 02/11] writeback: get rid of wbc->for_writepages Jens Axboe
2009-09-16 12:07   ` Jan Kara
2009-09-15 18:16 ` [PATCH 03/11] writeback: merely wakeup flusher thread if work allocation fails for WB_SYNC_NONE Jens Axboe
2009-09-16 12:08   ` Jan Kara
2009-09-15 18:16 ` [PATCH 04/11] writeback: make wb_writeback() take an argument structure Jens Axboe
2009-09-16 12:53   ` Jan Kara
2009-09-16 13:06     ` Jens Axboe
2009-09-15 18:16 ` [PATCH 05/11] Assign bdi in super_block Jens Axboe
2009-09-16 12:16   ` Jan Kara
2009-09-16 13:00     ` Jens Axboe
2009-09-15 18:16 ` [PATCH 06/11] writeback: only use bdi_writeback_all() for WB_SYNC_NONE writeout Jens Axboe
2009-09-15 18:16 ` [PATCH 07/11] writeback: use RCU to protect bdi_list Jens Axboe
2009-09-15 18:16 ` [PATCH 08/11] writeback: inline allocation failure handling in bdi_alloc_queue_work() Jens Axboe
2009-09-15 18:16 ` [PATCH 09/11] writeback: separate starting of sync vs opportunistic writeback Jens Axboe
2009-09-16 13:05   ` Jan Kara
2009-09-16 13:07     ` Jens Axboe
2009-09-15 18:16 ` [PATCH 10/11] writeback: splice dirty inode entries to default bdi on bdi_destroy() Jens Axboe
2009-09-16 13:12   ` Jan Kara
2009-09-16 13:21     ` Jens Axboe
2009-09-16 13:29       ` Jan Kara
2009-09-16 18:31         ` Jens Axboe
2009-09-17  9:33           ` Jan Kara [this message]
2009-09-15 18:16 ` [PATCH 11/11] writeback: add comments to bdi_work structure Jens Axboe
2009-09-16 13:15   ` Jan Kara

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=20090917093354.GB16941@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).