1 --- linux-2.4.24orig/include/linux/fs.h.orig 2006-07-21 13:03:15.000000000 +0300
\r
2 +++ linux-2.4.24/include/linux/fs.h 2006-07-21 13:03:46.000000000 +0300
\r
3 @@ -1128,6 +1128,8 @@ extern int open_namei_it(const char *fil
\r
4 extern struct file *dentry_open_it(struct dentry *dentry, struct vfsmount *mnt,
\r
5 int flags, struct lookup_intent *it);
\r
6 extern int revalidate_it(struct dentry *dentry, struct lookup_intent *it);
\r
7 +struct dentry * lookup_one_len_getattr(const char * name, struct dentry * base,
\r
9 extern int init_private_file_it(struct file *, struct dentry *dentry, int mode,
\r
10 struct lookup_intent *it);
\r
11 extern int filp_close(struct file *, fl_owner_t id);
\r
12 --- linux-2.4.24orig/fs/nfsd/vfs.c.orig 2006-07-21 12:52:07.000000000 +0300
\r
13 +++ linux-2.4.24/fs/nfsd/vfs.c 2006-07-21 13:28:15.000000000 +0300
\r
14 @@ -198,6 +198,30 @@ int revalidate_it(struct dentry *dentry,
\r
18 +struct dentry * lookup_one_len_getattr(const char * name, struct dentry * base,
\r
21 + struct lookup_intent it;
\r
22 + struct dentry *de;
\r
24 + intent_init(&it, IT_GETATTR, 0);
\r
26 + de = lookup_one_len_it(name, base, len, NULL);
\r
28 + if (!IS_ERR(de) && de->d_inode) {
\r
29 + if (de->d_inode->i_op && de->d_inode->i_op->revalidate_it)
\r
30 + de->d_inode->i_op->revalidate_it(de, &it);
\r
31 + else if (de->d_inode->i_op && de->d_inode->i_op->revalidate)
\r
32 + de->d_inode->i_op->revalidate(de);
\r
35 + if (it.it_op_release)
\r
36 + intent_release(&it);
\r
43 * Look up one component of a pathname.
\r
44 * N.B. After this call _both_ fhp and resfh need an fh_put
\r
45 @@ -263,7 +287,7 @@ nfsd_lookup(struct svc_rqst *rqstp, stru
\r
49 - dentry = lookup_one_len(name, dparent, len);
\r
50 + dentry = lookup_one_len_getattr(name, dparent, len);
\r
51 err = PTR_ERR(dentry);
\r
54 --- linux-2.4.24orig/fs/nfsd/nfs3xdr.c.orig 2006-07-21 13:02:18.000000000 +0300
\r
55 +++ linux-2.4.24/fs/nfsd/nfs3xdr.c 2006-07-21 13:02:29.000000000 +0300
\r
56 @@ -715,7 +715,7 @@ encode_entry(struct readdir_cd *cd, cons
\r
57 dchild = dchild->d_parent;
\r
58 dchild = dget(dchild);
\r
60 - dchild = lookup_one_len(name, dparent,namlen);
\r
61 + dchild = lookup_one_len_getattr(name, dparent,namlen);
\r
64 if (fh_compose(&fh, exp, dchild, cd->dirfh) != 0 || !dchild->d_inode)
\r