]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/nfs/file.c
regression: disable timer peek-ahead for 2.6.28
[linux-2.6-omap-h63xx.git] / fs / nfs / file.c
index 78460657f5cbff1a155a4e5d05ab1ba3ea0e564d..d319b49f8f06f4046c408afe8a290a9e05b7920e 100644 (file)
@@ -188,13 +188,16 @@ static loff_t nfs_file_llseek(struct file *filp, loff_t offset, int origin)
        /* origin == SEEK_END => we must revalidate the cached file length */
        if (origin == SEEK_END) {
                struct inode *inode = filp->f_mapping->host;
+
                int retval = nfs_revalidate_file_size(inode, filp);
                if (retval < 0)
                        return (loff_t)retval;
-       }
-       lock_kernel();  /* BKL needed? */
-       loff = generic_file_llseek_unlocked(filp, offset, origin);
-       unlock_kernel();
+
+               spin_lock(&inode->i_lock);
+               loff = generic_file_llseek_unlocked(filp, offset, origin);
+               spin_unlock(&inode->i_lock);
+       } else
+               loff = generic_file_llseek_unlocked(filp, offset, origin);
        return loff;
 }
 
@@ -699,13 +702,6 @@ static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl)
                        filp->f_path.dentry->d_name.name,
                        fl->fl_type, fl->fl_flags);
 
-       /*
-        * No BSD flocks over NFS allowed.
-        * Note: we could try to fake a POSIX lock request here by
-        * using ((u32) filp | 0x80000000) or some such as the pid.
-        * Not sure whether that would be unique, though, or whether
-        * that would break in other places.
-        */
        if (!(fl->fl_flags & FL_FLOCK))
                return -ENOLCK;