Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[powerpc.git] / fs / cifs / inode.c
index 24df13a..86b9dbb 100644 (file)
@@ -1134,20 +1134,22 @@ static int cifs_truncate_page(struct address_space *mapping, loff_t from)
        return rc;
 }
 
-int cifs_vmtruncate(struct inode * inode, loff_t offset)
+static int cifs_vmtruncate(struct inode * inode, loff_t offset)
 {
        struct address_space *mapping = inode->i_mapping;
        unsigned long limit;
 
+       spin_lock(&inode->i_lock);
        if (inode->i_size < offset)
                goto do_expand;
        /*
         * truncation of in-use swapfiles is disallowed - it would cause
         * subsequent swapout to scribble on the now-freed blocks.
         */
-       if (IS_SWAPFILE(inode))
+       if (IS_SWAPFILE(inode)) {
+               spin_unlock(&inode->i_lock);
                goto out_busy;
-       spin_lock(&inode->i_lock);              
+       }
        i_size_write(inode, offset);
        spin_unlock(&inode->i_lock);
        unmap_mapping_range(mapping, offset + PAGE_SIZE - 1, 0, 1);
@@ -1156,12 +1158,16 @@ int cifs_vmtruncate(struct inode * inode, loff_t offset)
 
 do_expand:
        limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
-       if (limit != RLIM_INFINITY && offset > limit)
+       if (limit != RLIM_INFINITY && offset > limit) {
+               spin_unlock(&inode->i_lock);
                goto out_sig;
-       if (offset > inode->i_sb->s_maxbytes)
+       }
+       if (offset > inode->i_sb->s_maxbytes) {
+               spin_unlock(&inode->i_lock);
                goto out_big;
+       }
        i_size_write(inode, offset);
-
+       spin_unlock(&inode->i_lock);
 out_truncate:
        if (inode->i_op && inode->i_op->truncate)
                inode->i_op->truncate(inode);
@@ -1425,9 +1431,11 @@ cifs_setattr_exit:
        return rc;
 }
 
+#if 0
 void cifs_delete_inode(struct inode *inode)
 {
        cFYI(1, ("In cifs_delete_inode, inode = 0x%p", inode));
        /* may have to add back in if and when safe distributed caching of
           directories added e.g. via FindNotify */
 }
+#endif