X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=fs%2Fnfs%2Fsymlink.c;h=83e865a16ad1393cc25ce62377bed94855880ff0;hb=37969581301e50872a1ae84dc73962b5f7ee6b76;hp=6c686112cc03fa3c3dcea70180653640d95aaeb9;hpb=3be11c8f4f2fa194834c2e83540f34da442b8977;p=linux-2.6 diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c index 6c686112cc..83e865a16a 100644 --- a/fs/nfs/symlink.c +++ b/fs/nfs/symlink.c @@ -22,7 +22,6 @@ #include #include #include -#include #include /* Symlink caching in the page cache is even more simplistic @@ -50,7 +49,9 @@ static void *nfs_follow_link(struct dentry *dentry, struct nameidata *nd) { struct inode *inode = dentry->d_inode; struct page *page; - void *err = ERR_PTR(nfs_revalidate_mapping(inode, inode->i_mapping)); + void *err; + + err = ERR_PTR(nfs_revalidate_mapping_nolock(inode, inode->i_mapping)); if (err) goto read_failed; page = read_cache_page(&inode->i_data, 0, @@ -59,15 +60,9 @@ static void *nfs_follow_link(struct dentry *dentry, struct nameidata *nd) err = page; goto read_failed; } - if (!PageUptodate(page)) { - err = ERR_PTR(-EIO); - goto getlink_read_error; - } nd_set_link(nd, kmap(page)); return page; -getlink_read_error: - page_cache_release(page); read_failed: nd_set_link(nd, err); return NULL; @@ -76,7 +71,7 @@ read_failed: /* * symlinks can't do much... */ -struct inode_operations nfs_symlink_inode_operations = { +const struct inode_operations nfs_symlink_inode_operations = { .readlink = generic_readlink, .follow_link = nfs_follow_link, .put_link = page_put_link,