patch-2.1.93 linux/fs/super.c

Next file: linux/fs/sysv/inode.c
Previous file: linux/fs/smbfs/inode.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.92/linux/fs/super.c linux/fs/super.c
@@ -668,18 +668,26 @@
 	if (retval)
 		goto out;
 
-	/* Forget any inodes */
-	if (invalidate_inodes(sb)) {
-		printk("VFS: Busy inodes after unmount. "
-			"Self-destruct in 5 seconds. Bye-bye..\n");
-	}
-
 	if (sb->s_op) {
 		if (sb->s_op->write_super && sb->s_dirt)
 			sb->s_op->write_super(sb);
+	}
+
+	lock_super(sb);
+	if (sb->s_op) {
 		if (sb->s_op->put_super)
 			sb->s_op->put_super(sb);
 	}
+
+	/* Forget any remaining inodes */
+	if (invalidate_inodes(sb)) {
+		printk("VFS: Busy inodes after unmount. "
+			"Self-destruct in 5 seconds.  Have a nice day...\n");
+	}
+
+	sb->s_dev = 0;		/* Free the superblock */
+	unlock_super(sb);
+
 	remove_vfsmnt(dev);
 out:
 	return retval;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov