diff options
author | Bjørn Mork <bjorn@mork.no> | 2012-01-15 08:35:28 +0100 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2012-01-15 08:35:28 +0100 |
commit | 6528209ba2c94f3a0ef946b7d808d9a15b30ec50 (patch) | |
tree | c3c1b8bcf8ae19f411c53c2f199f923742bcc256 /fs/reiserfs/super.c | |
parent | a056fb3687c40b8a1123de1586f491285cb5fb1f (diff) | |
parent | f2ab2a127d480ee20caf8620440ccf13c014447a (diff) |
Merge remote branch 'stable/linux-2.6.32.y' into 2.6.32-mantismedia/2.6.32-mantis
Diffstat (limited to 'fs/reiserfs/super.c')
-rw-r--r-- | fs/reiserfs/super.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index f0ad05f3802..7cb12859556 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c @@ -445,16 +445,20 @@ int remove_save_link(struct inode *inode, int truncate) static void reiserfs_kill_sb(struct super_block *s) { if (REISERFS_SB(s)) { - if (REISERFS_SB(s)->xattr_root) { - d_invalidate(REISERFS_SB(s)->xattr_root); - dput(REISERFS_SB(s)->xattr_root); - REISERFS_SB(s)->xattr_root = NULL; - } - if (REISERFS_SB(s)->priv_root) { - d_invalidate(REISERFS_SB(s)->priv_root); - dput(REISERFS_SB(s)->priv_root); - REISERFS_SB(s)->priv_root = NULL; - } + /* + * Force any pending inode evictions to occur now. Any + * inodes to be removed that have extended attributes + * associated with them need to clean them up before + * we can release the extended attribute root dentries. + * shrink_dcache_for_umount will BUG if we don't release + * those before it's called so ->put_super is too late. + */ + shrink_dcache_sb(s); + + dput(REISERFS_SB(s)->xattr_root); + REISERFS_SB(s)->xattr_root = NULL; + dput(REISERFS_SB(s)->priv_root); + REISERFS_SB(s)->priv_root = NULL; } kill_block_super(s); @@ -1149,7 +1153,8 @@ static void handle_quota_files(struct super_block *s, char **qf_names, kfree(REISERFS_SB(s)->s_qf_names[i]); REISERFS_SB(s)->s_qf_names[i] = qf_names[i]; } - REISERFS_SB(s)->s_jquota_fmt = *qfmt; + if (*qfmt) + REISERFS_SB(s)->s_jquota_fmt = *qfmt; } #endif |