xfs_readsb is called before xfs_mount so xfs_freesb should be called
after xfs_unmountfs, too. This means it now happens after a few things
during the of xfs_unmount which all have nothing to do with the
superblock.
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_super.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2008-07-24
22:57:15.000000000 +0200
+++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_super.c 2008-07-24 23:00:27.000000000
+0200
@@ -1198,6 +1198,7 @@ xfs_fs_put_super(
}
xfs_unmountfs(mp);
+ xfs_freesb(mp);
xfs_icsb_destroy_counters(mp);
xfs_close_devices(mp);
xfs_qmops_put(mp);
@@ -1682,7 +1683,7 @@ xfs_fs_fill_super(
WARN_ON(error);
xfs_unmountfs(mp);
- goto out_free_fsname;
+ goto out_free_sb;
}
STATIC int
Index: linux-2.6-xfs/fs/xfs/xfs_mount.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_mount.c 2008-07-24 22:58:14.000000000
+0200
+++ linux-2.6-xfs/fs/xfs/xfs_mount.c 2008-07-24 23:00:27.000000000 +0200
@@ -1296,8 +1296,6 @@ xfs_unmountfs(
xfs_unmountfs_wait(mp); /* wait for async bufs */
xfs_log_unmount(mp); /* Done! No more fs ops. */
- xfs_freesb(mp);
-
/*
* All inodes from this mount point should be freed.
*/
|