kernel-ark/fs/xfs/linux-2.6
Takashi Sato c4be0c1dc4 filesystem freeze: add error handling of write_super_lockfs/unlockfs
Currently, ext3 in mainline Linux doesn't have the freeze feature which
suspends write requests.  So, we cannot take a backup which keeps the
filesystem's consistency with the storage device's features (snapshot and
replication) while it is mounted.

In many case, a commercial filesystem (e.g.  VxFS) has the freeze feature
and it would be used to get the consistent backup.

If Linux's standard filesystem ext3 has the freeze feature, we can do it
without a commercial filesystem.

So I have implemented the ioctls of the freeze feature.
I think we can take the consistent backup with the following steps.
1. Freeze the filesystem with the freeze ioctl.
2. Separate the replication volume or create the snapshot
   with the storage device's feature.
3. Unfreeze the filesystem with the unfreeze ioctl.
4. Take the backup from the separated replication volume
   or the snapshot.

This patch:

VFS:
Changed the type of write_super_lockfs and unlockfs from "void"
to "int" so that they can return an error.
Rename write_super_lockfs and unlockfs of the super block operation
freeze_fs and unfreeze_fs to avoid a confusion.

ext3, ext4, xfs, gfs2, jfs:
Changed the type of write_super_lockfs and unlockfs from "void"
to "int" so that write_super_lockfs returns an error if needed,
and unlockfs always returns 0.

reiserfs:
Changed the type of write_super_lockfs and unlockfs from "void"
to "int" so that they always return 0 (success) to keep a current behavior.

Signed-off-by: Takashi Sato <t-sato@yk.jp.nec.com>
Signed-off-by: Masayuki Hamaguchi <m-hamaguchi@ys.jp.nec.com>
Cc: <xfs-masters@oss.sgi.com>
Cc: <linux-ext4@vger.kernel.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Dave Kleikamp <shaggy@austin.ibm.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Alasdair G Kergon <agk@redhat.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-01-09 16:54:42 -08:00
..
kmem.c [XFS] kmem_free and kmem_realloc to use const void * 2008-07-28 16:58:43 +10:00
kmem.h [XFS] kmem_free and kmem_realloc to use const void * 2008-07-28 16:58:43 +10:00
mrlock.h [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
mutex.h
sv.h remove dead code from sv_t implementation 2008-12-04 15:39:21 +11:00
time.h
xfs_aops.c move vn_iowait / vn_iowake into xfs_aops.c 2008-12-04 15:39:24 +11:00
xfs_aops.h move vn_iowait / vn_iowake into xfs_aops.c 2008-12-04 15:39:24 +11:00
xfs_buf.c Merge branch 'master' of git+ssh://git.melbourne.sgi.com/git/xfs 2008-12-12 15:28:02 +11:00
xfs_buf.h [XFS] Remove XFS_BUF_SHUT() and friends 2008-12-22 17:52:58 +11:00
xfs_cred.h [XFS] Fix merge failures 2008-12-29 16:47:18 +11:00
xfs_dmapi_priv.h
xfs_export.c [XFS] remove xfs_vfsops.h 2008-12-01 11:37:06 +11:00
xfs_export.h xfs: new export ops 2007-10-22 08:13:20 -07:00
xfs_file.c [XFS] Use the incore inode size in xfs_file_readdir() 2008-12-22 17:50:56 +11:00
xfs_fs_subr.c [XFS] fix error inversion problems with data flushing 2008-12-01 11:11:10 +11:00
xfs_fs_subr.h [XFS] decontaminate vnode operations from behavior details 2007-10-15 16:54:29 +10:00
xfs_globals.c [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_globals.h CRED: Separate task security context from task_struct 2008-11-14 10:39:16 +11:00
xfs_ioctl32.c [XFS] add a FMODE flag to make XFS invisible I/O less hacky 2008-12-11 13:14:41 +11:00
xfs_ioctl32.h [XFS] fix compile on 32 bit systems 2008-12-04 13:07:29 +11:00
xfs_ioctl.c [XFS] Fix merge failures 2008-12-29 16:47:18 +11:00
xfs_ioctl.h [XFS] add a FMODE flag to make XFS invisible I/O less hacky 2008-12-11 13:14:41 +11:00
xfs_iops.c kill dead inode flags 2008-12-04 15:39:22 +11:00
xfs_iops.h [XFS] add a FMODE flag to make XFS invisible I/O less hacky 2008-12-11 13:14:41 +11:00
xfs_linux.h [XFS] remove xfs_vfs.h 2008-12-01 11:36:59 +11:00
xfs_lrw.c [XFS] Fix race in xfs_write() between direct and buffered I/O with DMAPI 2008-12-24 14:07:32 +11:00
xfs_lrw.h [XFS] remove sendfile leftovers 2008-04-29 16:08:14 +10:00
xfs_stats.c [XFS] fix spurious gcc warnings 2008-12-01 11:07:37 +11:00
xfs_stats.h [XFS] add new btree statistics 2008-10-30 16:55:03 +11:00
xfs_super.c filesystem freeze: add error handling of write_super_lockfs/unlockfs 2009-01-09 16:54:42 -08:00
xfs_super.h remove unused behvavior cruft in xfs_super.h 2008-12-04 15:39:19 +11:00
xfs_sync.c [XFS] Remove unnecessary assertion 2008-12-05 14:15:49 +11:00
xfs_sync.h [XFS] mark inodes for reclaim via a tag in the inode radix tree 2008-10-30 17:37:26 +11:00
xfs_sysctl.c [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_sysctl.h [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_version.h
xfs_vnode.h move inode tracing out of xfs_vnode. 2008-12-04 15:39:25 +11:00
xfs_xattr.c [XFS] Remove vn_revalidate calls in xfs. 2008-07-28 16:59:39 +10:00