summaryrefslogtreecommitdiff
path: root/fs/super.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 18:11:38 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 18:11:38 -0800
commit1a0153507ffae9cf3350e76c12d441788c0191e1 (patch)
treed05a502b4fc05202c84c1667019460c08ea088cd /fs/super.c
parentb0683ac8928c4cf40646a6ce3eb6ffe94605acfa (diff)
v2.4.3.2 -> v2.4.3.3
- Hui-Fen Hsu: sis900 driver update - NIIBE Yutaka: Super-H update - Alan Cox: more resyncs (ARM down, but more to go) - David Miller: network zerocopy, Sparc sync, qlogic,FC fix, etc. - David Miller/me: get rid of various drivers hacks to do mmap alignment behind the back of the VM layer. Create a real protocol for it.
Diffstat (limited to 'fs/super.c')
-rw-r--r--fs/super.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/fs/super.c b/fs/super.c
index 601e3d63f36e..97f4824bd3db 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -898,9 +898,9 @@ static void kill_super(struct super_block *sb, int umount_root)
/* Need to clean after the sucker */
if (fs->fs_flags & FS_LITTER)
d_genocide(root);
- if (fs->fs_flags & (FS_SINGLE|FS_LITTER))
- shrink_dcache_parent(root);
+ shrink_dcache_parent(root);
dput(root);
+ fsync_dev(sb->s_dev);
lock_super(sb);
if (sop) {
if (sop->write_super && sb->s_dirt)
@@ -1074,20 +1074,6 @@ static int do_umount(struct vfsmount *mnt, int umount_root, int flags)
if( (flags&MNT_FORCE) && sb->s_op->umount_begin)
sb->s_op->umount_begin(sb);
- /*
- * Shrink dcache, then fsync. This guarantees that if the
- * filesystem is quiescent at this point, then (a) only the
- * root entry should be in use and (b) that root entry is
- * clean.
- */
- shrink_dcache_sb(sb);
- fsync_dev(sb->s_dev);
-
- if (sb->s_root->d_inode->i_state) {
- mntput(mnt);
- return -EBUSY;
- }
-
/* Something might grab it again - redo checks */
spin_lock(&dcache_lock);