patch-1.3.63 linux/fs/inode.c

Next file: linux/fs/msdos/msdosfs_syms.c
Previous file: linux/fs/dquot.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.62/linux/fs/inode.c linux/fs/inode.c
@@ -429,11 +429,19 @@
 		goto repeat;
 	}
 
-	inode->i_count--;
 	if (IS_WRITABLE(inode)) {
-		if (inode->i_sb && inode->i_sb->dq_op)
+		if (inode->i_sb && inode->i_sb->dq_op) {
+			/* Here we can sleep also. Let's do it again
+			 * Dmitry Gorodchanin 02/11/96 
+			 */
+			inode->i_lock = 1;
 			inode->i_sb->dq_op->drop(inode);
+			unlock_inode(inode);
+			goto repeat;
+		}
 	}
+	
+	inode->i_count--;
 
 	if (inode->i_mmap) {
 		printk("iput: inode %lu on device %s still has mappings.\n",

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this