diff options
-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 | /* |