xfs
[Top] [All Lists]

[PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt

To: xfs@xxxxxxxxxxx
Subject: [PATCH 1/5] xfs: remove ->write_super and stop maintaining ->s_dirt
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Sun, 26 Apr 2009 10:03:06 -0400
References: <20090426140305.113371000@xxxxxxxxxxxxxxxxxxxxxx>
User-agent: quilt/0.47-1
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
 (3) just before ->put_super

We don't need (1) because we have our own peridoc writeout through xfssyncd,
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,
and we don't need (3) because we synchronously write the superblock in
->put_super once the filesystem is fully shut down.

Also remove ->s_dirt tracking as it's only used to decide when too call
->write_super.


Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Index: linux-2.6/fs/xfs/linux-2.6/xfs_super.c
===================================================================
--- linux-2.6.orig/fs/xfs/linux-2.6/xfs_super.c 2009-04-26 10:33:36.051949562 
+0200
+++ linux-2.6/fs/xfs/linux-2.6/xfs_super.c      2009-04-26 10:34:19.962075469 
+0200
@@ -1104,15 +1104,6 @@ xfs_fs_put_super(
        kfree(mp);
 }
 
-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,
@@ -1137,7 +1128,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;
@@ -1443,7 +1433,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;
@@ -1533,7 +1522,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: linux-2.6/fs/xfs/xfs_trans.c
===================================================================
--- linux-2.6.orig/fs/xfs/xfs_trans.c   2009-04-26 10:33:25.534949105 +0200
+++ linux-2.6/fs/xfs/xfs_trans.c        2009-04-26 10:33:31.760951563 +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;
 }
 
 /*

<Prev in Thread] Current Thread [Next in Thread>