diff options
author | Evgeniy Polyakov <zbr@ioremap.net> | 2009-03-27 08:04:24 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-17 14:06:30 -0400 |
commit | cee9bb2ebdc1697f9be7ee5bdd6867daaa712179 (patch) | |
tree | 370cc93935bf1ed377d2e696d3c297e399d9246d | |
parent | e504342448375ffd73dec2b540a5aaf5da6f8439 (diff) |
Staging: Pohmelfs: Sync fs before killing it, since dentry cache is shrunk before writeback is invoked via generic_shutdown_super()
Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/staging/pohmelfs/inode.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/staging/pohmelfs/inode.c b/drivers/staging/pohmelfs/inode.c index 3fef09fd712c..af99f6620b7e 100644 --- a/drivers/staging/pohmelfs/inode.c +++ b/drivers/staging/pohmelfs/inode.c | |||
@@ -1908,11 +1908,29 @@ static int pohmelfs_get_sb(struct file_system_type *fs_type, | |||
1908 | mnt); | 1908 | mnt); |
1909 | } | 1909 | } |
1910 | 1910 | ||
1911 | /* | ||
1912 | * We need this to sync all inodes earlier, since when writeback | ||
1913 | * is invoked from the umount/mntput path dcache is already shrunk, | ||
1914 | * see generic_shutdown_super(), and no inodes can access the path. | ||
1915 | */ | ||
1916 | static void pohmelfs_kill_super(struct super_block *sb) | ||
1917 | { | ||
1918 | struct writeback_control wbc = { | ||
1919 | .sync_mode = WB_SYNC_ALL, | ||
1920 | .range_start = 0, | ||
1921 | .range_end = LLONG_MAX, | ||
1922 | .nr_to_write = LONG_MAX, | ||
1923 | }; | ||
1924 | generic_sync_sb_inodes(sb, &wbc); | ||
1925 | |||
1926 | kill_anon_super(sb); | ||
1927 | } | ||
1928 | |||
1911 | static struct file_system_type pohmel_fs_type = { | 1929 | static struct file_system_type pohmel_fs_type = { |
1912 | .owner = THIS_MODULE, | 1930 | .owner = THIS_MODULE, |
1913 | .name = "pohmel", | 1931 | .name = "pohmel", |
1914 | .get_sb = pohmelfs_get_sb, | 1932 | .get_sb = pohmelfs_get_sb, |
1915 | .kill_sb = kill_anon_super, | 1933 | .kill_sb = pohmelfs_kill_super, |
1916 | }; | 1934 | }; |
1917 | 1935 | ||
1918 | /* | 1936 | /* |