Unionfs: use locking around i_size_write in 32-bit systems
authorErez Zadok <ezk@cs.sunysb.edu>
Tue, 25 Dec 2007 22:08:50 +0000 (17:08 -0500)
committerErez Zadok <ezk@cs.sunysb.edu>
Tue, 25 Dec 2007 22:08:50 +0000 (17:08 -0500)
CC: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/unionfs/super.c

index 316ac88986a7155c7e4176f448b0a399005396bc..9adcfc386c4132fcfd3c1f10c6116ac3a174e1c6 100644 (file)
@@ -69,7 +69,13 @@ static void unionfs_read_inode(struct inode *inode)
  */
 static void unionfs_delete_inode(struct inode *inode)
 {
+#if BITS_PER_LONG == 32 && defined(CONFIG_SMP)
+       spin_lock(&inode->i_lock);
+#endif
        i_size_write(inode, 0); /* every f/s seems to do that */
+#if BITS_PER_LONG == 32 && defined(CONFIG_SMP)
+       spin_unlock(&inode->i_lock);
+#endif
 
        if (inode->i_data.nrpages)
                truncate_inode_pages(&inode->i_data, 0);