lkml.org 
[lkml]   [2004]   [Mar]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] lockfs patch for 2.6
From
Date
On Sat, 2004-03-13 at 08:14, Christoph Hellwig wrote:
> On Tue, Mar 09, 2004 at 04:31:25PM -0500, Chris Mason wrote:
> > Hello everyone,
> >
> > In order to get consistent snapshots with the device mapper code, you
> > need to sync and lock down any filesystems sitting on top of the
> > device. This isn't as critical in the 2.6 code since it can do writable
> > snapshots, but it is still nice to have things properly synced and
> > consistent.
> >
> > I've had various forms of this against 2.4, the ugly part was always the
> > locking to make sure a new FS wasn't mounted on the source while the
> > snapshot was being setup. Here's my 2.6 version, with the DM code
> > contributed by Kevin Corry. The basic idea is to add a semaphore to the
> > block device that gets used to make sure there are no new mounts.
>
> Okay, I actually took a look at the XFS freeze code and it seems the
> current infrastructure doesn't suite XFS very well.
>
> What XFS currently does when freezing is
>
> 1. set a flag in the mount structure that blocks all new writes
> 2. flush all file data
> 3. set a flag blocking all new transactions
> 4. flush any dirty inode state into buffers
> 5. push out all buffers to disk
> 6. mark the filesystem clean
>
> Now how does this fit into generic freeze/thaw fs structure?
>
> 1. should probably move into the VFS (generic_file_write)
>
> 2,4,5 basically is fsync_bdev except that we have no chance to block
> transaction that way. So either we need two calls into the fs or have
> some trivial state in the superblock that tells xfs to block transaction,
> basically an enum { FS_UNFROZEN, FS_FROZEN_WRITE, FS_FROZEN_FULL };
>
> and a function fs_check_frozen similar to xfs_check_frozen that makes the
> caller block until the fs is unfrozen.
>
> Doing it that way would get rid of lots of mess in XFS so I'm all for it :)

This is basically how reiserfs does it. Various critical spots (like
the code to start a transaction) check to see if the FS is frozen.

I'll rework the patch as we've discussed on Friday, if you need it
broken up differently, please let me know.

-chris


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:01    [W:0.059 / U:0.268 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site