[NFS] [PATCH] Corrects error patch in nfs_instantiate()

From: Steve Dickson (SteveD@redhat.com)
Date: Fri Apr 04 2003 - 12:01:45 EST


In the 2.4.20 kernel, nfs_instantiate() is only calling d_drop() when
the lookup fails. The dentry also need to be removed from the
dirent cache when we can't get an inode.... Also, as Trond
pointed out, ENOMEM should be returned (instead of EACCES)
when we run out of inodes...

SteveD.


--- linux-2.4.20/fs/nfs/dir.c.orig 2003-04-04 06:55:20.000000000 -0500
+++ linux-2.4.20/fs/nfs/dir.c 2003-04-04 08:40:53.000000000 -0500
@@ -756,7 +756,7 @@ static int nfs_instantiate(struct dentry
                                 struct nfs_fattr *fattr)
 {
         struct inode *inode;
- int error = -EACCES;
+ int error = 0;
 
         if (fhandle->size == 0 || !(fattr->valid & NFS_ATTR_FATTR)) {
                 struct inode *dir = dentry->d_parent->d_inode;
@@ -768,9 +768,12 @@ static int nfs_instantiate(struct dentry
         if (inode) {
                 d_instantiate(dentry, inode);
                 nfs_renew_times(dentry);
- error = 0;
+ } else {
+ error = -ENOMEM;
+ goto out_err;
         }
         return error;
+
 out_err:
         d_drop(dentry);
         return error;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Apr 07 2003 - 22:00:23 EST