Al, can you put this in via the vfs tree? With people starting to
change these bits now I think we're better off feeding this through
the VFS tree early than later via the XFS tree.
--
Subject: [PATCH] xfs: remove ->write_super and stop maintaining ->s_dirt
From: Christoph Hellwig <hch@xxxxxx>
the write_super method is used for
(1) writing back the superblock periodically from pdflush
(2) called just before ->sync_fs for data integerity syncs
We don't need (1) because we have our own peridoc writeout through xfssyncd,
and we don't need (2) because xfs_fs_sync_fs performs a proper synchronous
superblock writeout after all other data and metadata has been written out.
Also remove ->s_dirt tracking as it's only used to decide when too call
->write_super.
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
Index: vfs-2.6/fs/xfs/linux-2.6/xfs_super.c
===================================================================
--- vfs-2.6.orig/fs/xfs/linux-2.6/xfs_super.c 2009-05-11 11:13:24.528784658
+0200
+++ vfs-2.6/fs/xfs/linux-2.6/xfs_super.c 2009-05-11 22:09:29.802683006
+0200
@@ -1108,15 +1108,6 @@ xfs_fs_put_super(
unlock_kernel();
}
-STATIC void
-xfs_fs_write_super(
- struct super_block *sb)
-{
- if (!(sb->s_flags & MS_RDONLY))
- xfs_sync_fsdata(XFS_M(sb), 0);
- sb->s_dirt = 0;
-}
-
STATIC int
xfs_fs_sync_super(
struct super_block *sb,
@@ -1141,7 +1132,6 @@ xfs_fs_sync_super(
error = xfs_quiesce_data(mp);
else
error = xfs_sync_fsdata(mp, 0);
- sb->s_dirt = 0;
if (unlikely(laptop_mode)) {
int prev_sync_seq = mp->m_sync_seq;
@@ -1447,7 +1437,6 @@ xfs_fs_fill_super(
XFS_SEND_MOUNT(mp, DM_RIGHT_NULL, mtpt, mp->m_fsname);
- sb->s_dirt = 1;
sb->s_magic = XFS_SB_MAGIC;
sb->s_blocksize = mp->m_sb.sb_blocksize;
sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1;
@@ -1537,7 +1526,6 @@ static struct super_operations xfs_super
.write_inode = xfs_fs_write_inode,
.clear_inode = xfs_fs_clear_inode,
.put_super = xfs_fs_put_super,
- .write_super = xfs_fs_write_super,
.sync_fs = xfs_fs_sync_super,
.freeze_fs = xfs_fs_freeze,
.statfs = xfs_fs_statfs,
Index: vfs-2.6/fs/xfs/xfs_trans.c
===================================================================
--- vfs-2.6.orig/fs/xfs/xfs_trans.c 2009-05-05 14:18:45.481659125 +0200
+++ vfs-2.6/fs/xfs/xfs_trans.c 2009-05-11 22:09:29.803682225 +0200
@@ -628,8 +628,6 @@ xfs_trans_apply_sb_deltas(
xfs_trans_log_buf(tp, bp, offsetof(xfs_dsb_t, sb_icount),
offsetof(xfs_dsb_t, sb_frextents) +
sizeof(sbp->sb_frextents) - 1);
-
- tp->t_mountp->m_super->s_dirt = 1;
}
/*
|