VFS: Fix error handling of write_super_lockfs/unlockfs
Subsystems (3)
PATCH 1/10 VFS: Fix error handling of write_super_lockfs/unlockfs
I've changed the type of write_super_lockfs and unlockfs from "void" to "int" so that they can return an error
and renamed write_super_lockfs/unlockfs of the super block operation freeze_fs/unfreeze_fs to avoid a confusion.
Signed-off-by Takashi Sato <[email protected]>
Signed-off-by Masayuki Hamaguchi <[email protected]>
--- Documentation/filesystems/Locking | 8 ++++---- Documentation/filesystems/vfs.txt | 8 ++++---- fs/buffer.c | 8 ++++---- include/linux/fs.h | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-)
diff -uprN -X linux-2.6.27-rc7/Documentation/dontdiff linux-2.6.27-rc7/Documentation/filesystems/Locking linux-2.6.27-rc 7-lockfs/Documentation/filesystems/Locking
Documentation/filesystems/Locking +4 -4
@@ -97,8 +97,8 @@ prototypes: void (*put_super) (struct super_block *); void (*write_super) (struct super_block *); int (*sync_fs)(struct super_block *sb, int wait); - void (*write_super_lockfs) (struct super_block *); - void (*unlockfs) (struct super_block *); + int (*freeze_fs) (struct super_block *); + int (*unfreeze_fs) (struct super_block *); int (*statfs) (struct dentry *, struct kstatfs *); int (*remount_fs) (struct super_block *, int *, char *); void (*clear_inode) (struct inode *);
@@ -119,8 +119,8 @@ delete_inode: no put_super: yes yes no write_super: no yes read sync_fs: no no read -write_super_lockfs: ? -unlockfs: ? +freeze_fs: ? +unfreeze_fs: ? statfs: no no no remount_fs: yes yes maybe (see below) clear_inode: no
diff -uprN -X linux-2.6.27-rc7/Documentation/dontdiff linux-2.6.27-rc7/Documentation/filesystems/vfs.txt linux-2.6.27-rc 7-lockfs/Documentation/filesystems/vfs.txt
Documentation/filesystems/vfs.txt +4 -4
@@ -210,8 +210,8 @@ struct super_operations { void (*put_super) (struct super_block *); void (*write_super) (struct super_block *); int (*sync_fs)(struct super_block *sb, int wait); - void (*write_super_lockfs) (struct super_block *); - void (*unlockfs) (struct super_block *); + int (*freeze_fs) (struct super_block *); + int (*unfreeze_fs) (struct super_block *); int (*statfs) (struct dentry *, struct kstatfs *); int (*remount_fs) (struct super_block *, int *, char *); void (*clear_inode) (struct inode *);
@@ -270,11 +270,11 @@ or bottom half). a superblock. The second parameter indicates whether the method should wait until the write out has been completed. Optional. - write_super_lockfs: called when VFS is locking a filesystem and + freeze_fs: called when VFS is locking a filesystem and forcing it into a consistent state. This method is currently used by the Logical Volume Manager (LVM). - unlockfs: called when VFS is unlocking a filesystem and making it writable + unfreeze_fs: called when VFS is unlocking a filesystem and making it writable again. statfs: called when the VFS needs to get filesystem statistics. This
fs/buffer.c +4 -4
@@ -214,8 +214,8 @@ struct super_block *freeze_bdev(struct bsync_blockdev (sb->s_bdev); -if (sb->s_op->write_super_lockfs) - sb->s_op->write_super_lockfs (sb); +if (sb->s_op->freeze_fs) + sb->s_op->freeze_fs (sb); }sync_blockdev (bdev);
@@ -235,8 +235,8 @@ void thaw_bdev(struct block_device *bdevif (sb) {BUG_ON (sb->s_bdev != bdev); -if (sb->s_op->unlockfs) - sb->s_op->unlockfs (sb); +if (sb->s_op->unfreeze_fs) + sb->s_op->unfreeze_fs (sb); sb->s_frozen =SB_UNFROZEN ;smp_wmb ();wake_up (&sb->s_wait_unfrozen);
diff -uprN -X linux-2.6.27-rc7/Documentation/dontdiff linux-2.6.27-rc7/include/linux/fs.h linux-2.6.27-rc7-lockfs/includ e/linux/fs.h
include/linux/fs.h +2 -2
@@ -1314,8 +1314,8 @@ struct super_operations {void (*put_super) (struct super_block *);void (*write_super) (struct super_block *);int (*sync_fs)(struct super_block *sb,int wait); -void (*write_super_lockfs) (struct super_block *); -void (*unlockfs) (struct super_block *); +int (*freeze_fs) (struct super_block *); +int (*unfreeze_fs) (struct super_block *);int (*statfs) (struct dentry *,struct kstatfs *);int (*remount_fs) (struct super_block *,int *,char *);void (*clear_inode) (struct inode *);