rpms/kernel/devel linux-2.6-nfs4-callback-hidden.patch, NONE, 1.1 kernel.spec, 1.1827, 1.1828 linux-2.6-nfsd4-proots.patch, 1.3, 1.4
Steve Dickson
steved at fedoraproject.org
Wed Oct 14 22:28:17 UTC 2009
- Previous message (by thread): rpms/kernel/F-12 kernel.spec,1.1868,1.1869
- Next message (by thread): rpms/kernel/devel patch-2.6.32-rc4-git4.bz2.sign, NONE, 1.1 .cvsignore, 1.1134, 1.1135 git-linus.diff, 1.18, 1.19 kernel.spec, 1.1828, 1.1829 sources, 1.1093, 1.1094 upstream, 1.1006, 1.1007
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: steved
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv19084
Modified Files:
kernel.spec linux-2.6-nfsd4-proots.patch
Added Files:
linux-2.6-nfs4-callback-hidden.patch
Log Message:
- Updated the NFS v4 pseudo root patch so it will apply
- Fixed hang during NFS installs (bz 528537)
linux-2.6-nfs4-callback-hidden.patch:
callback_xdr.c | 1 +
1 file changed, 1 insertion(+)
--- NEW FILE linux-2.6-nfs4-callback-hidden.patch ---
Author: Steve Dickson <steved at redhat.com>
Date: Tue Oct 13 15:59:57 EDT 2009
To avoid hangs in the svc_unregister(), on version 4 mounts
(and unmounts), when rpcbind is not running, make the nfs4 callback
program an 'hidden' service by setting the 'vs_hidden' flag in the
nfs4_callback_version structure.
Signed-off-by: Steve Dickson <steved at redhat.com>
diff -up linux-2.6.31.x86_64/fs/nfs/callback_xdr.c.orig linux-2.6.31.x86_64/fs/nfs/callback_xdr.c
--- linux-2.6.31.x86_64/fs/nfs/callback_xdr.c.orig 2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.x86_64/fs/nfs/callback_xdr.c 2009-10-13 15:40:19.000000000 -0400
@@ -716,5 +716,6 @@ struct svc_version nfs4_callback_version
.vs_proc = nfs4_callback_procedures1,
.vs_xdrsize = NFS4_CALLBACK_XDRSIZE,
.vs_dispatch = NULL,
+ .vs_hidden = 1,
};
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1827
retrieving revision 1.1828
diff -u -p -r1.1827 -r1.1828
--- kernel.spec 14 Oct 2009 19:22:18 -0000 1.1827
+++ kernel.spec 14 Oct 2009 22:28:15 -0000 1.1828
@@ -697,6 +697,7 @@ Patch2903: linux-2.6-revert-dvb-net-kabi
# NFSv4
Patch3050: linux-2.6-nfsd4-proots.patch
+Patch3051: linux-2.6-nfs4-callback-hidden.patch
# VIA Nano / VX8xx updates
Patch11010: via-hwmon-temp-sensor.patch
@@ -1175,7 +1176,8 @@ ApplyPatch linux-2.6-execshield.patch
# eCryptfs
# NFSv4
-#ApplyPatch linux-2.6-nfsd4-proots.patch
+ApplyPatch linux-2.6-nfsd4-proots.patch
+ApplyPatch linux-2.6-nfs4-callback-hidden.patch
# USB
ApplyPatch linux-2.6-driver-level-usb-autosuspend.diff
@@ -1969,6 +1971,10 @@ fi
# ##############################################################
%changelog
+* Wed Oct 14 2009 Steve Dickson <steved at redhat.com>
+- Updated the NFS v4 pseudo root patch so it will apply
+- Fixed hang during NFS installs (bz 528537)
+
* Wed Oct 14 2009 Peter Jones <pjones at redhat.com>
- Add scsi_register_device_handler to modules.block's symbol list so
we'll have scsi device handlers in installer images.
linux-2.6-nfsd4-proots.patch:
fs/nfsd/export.c | 12 +++++-
fs/nfsd/nfs4xdr.c | 83 ++++++++++++++++++++++++++++++++++++--------
fs/nfsd/nfsfh.c | 32 ++++++++++++++++
fs/nfsd/vfs.c | 68 ++++++++++++++++++++++++++++++++++--
include/linux/nfsd/export.h | 3 +
include/linux/nfsd/nfsd.h | 2 +
6 files changed, 181 insertions(+), 19 deletions(-)
Index: linux-2.6-nfsd4-proots.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-nfsd4-proots.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- linux-2.6-nfsd4-proots.patch 9 Sep 2009 22:43:52 -0000 1.3
+++ linux-2.6-nfsd4-proots.patch 14 Oct 2009 22:28:15 -0000 1.4
@@ -1,7 +1,7 @@
-diff -up linux-2.6.30.noarch/fs/nfsd/export.c.save linux-2.6.30.noarch/fs/nfsd/export.c
---- linux-2.6.30.noarch/fs/nfsd/export.c.save 2009-09-09 15:11:54.702436000 -0400
-+++ linux-2.6.30.noarch/fs/nfsd/export.c 2009-09-09 15:12:44.520167000 -0400
-@@ -104,6 +104,7 @@ static int expkey_parse(struct cache_det
+diff -up linux-2.6.31.noarch/fs/nfsd/export.c.orig linux-2.6.31.noarch/fs/nfsd/export.c
+--- linux-2.6.31.noarch/fs/nfsd/export.c.orig 2009-10-14 14:26:23.000000000 -0400
++++ linux-2.6.31.noarch/fs/nfsd/export.c 2009-10-14 15:02:44.000000000 -0400
+@@ -109,6 +109,7 @@ static int expkey_parse(struct cache_det
if (mesg[mlen-1] != '\n')
return -EINVAL;
mesg[mlen-1] = 0;
@@ -9,7 +9,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/exp
buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
err = -ENOMEM;
-@@ -181,6 +182,8 @@ static int expkey_parse(struct cache_det
+@@ -186,6 +187,8 @@ static int expkey_parse(struct cache_det
if (dom)
auth_domain_put(dom);
kfree(buf);
@@ -18,7 +18,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/exp
return err;
}
-@@ -351,7 +354,10 @@ static void svc_export_request(struct ca
+@@ -356,7 +359,10 @@ static void svc_export_request(struct ca
(*bpp)[0] = '\n';
return;
}
@@ -29,7 +29,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/exp
(*bpp)[-1] = '\n';
}
-@@ -500,6 +506,7 @@ static int svc_export_parse(struct cache
+@@ -510,6 +516,7 @@ static int svc_export_parse(struct cache
if (mesg[mlen-1] != '\n')
return -EINVAL;
mesg[mlen-1] = 0;
@@ -37,7 +37,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/exp
buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
if (!buf)
-@@ -619,6 +626,8 @@ out1:
+@@ -629,6 +636,8 @@ out1:
auth_domain_put(dom);
out:
kfree(buf);
@@ -46,7 +46,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/exp
return err;
}
-@@ -1413,6 +1422,7 @@ static struct flags {
+@@ -1425,6 +1434,7 @@ static struct flags {
{ NFSEXP_CROSSMOUNT, {"crossmnt", ""}},
{ NFSEXP_NOSUBTREECHECK, {"no_subtree_check", ""}},
{ NFSEXP_NOAUTHNLM, {"insecure_locks", ""}},
@@ -54,7 +54,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/exp
#ifdef MSNFS
{ NFSEXP_MSNFS, {"msnfs", ""}},
#endif
-@@ -1493,7 +1503,7 @@ static int e_show(struct seq_file *m, vo
+@@ -1505,7 +1515,7 @@ static int e_show(struct seq_file *m, vo
struct svc_export *exp = container_of(cp, struct svc_export, h);
if (p == SEQ_START_TOKEN) {
@@ -63,10 +63,10 @@ diff -up linux-2.6.30.noarch/fs/nfsd/exp
seq_puts(m, "# Path Client(Flags) # IPs\n");
return 0;
}
-diff -up linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c.save linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c
---- linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c.save 2009-09-09 15:11:54.707433000 -0400
-+++ linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c 2009-09-09 15:12:36.408695000 -0400
-@@ -2176,28 +2176,61 @@ static inline int attributes_need_mount(
+diff -up linux-2.6.31.noarch/fs/nfsd/nfs4xdr.c.orig linux-2.6.31.noarch/fs/nfsd/nfs4xdr.c
+--- linux-2.6.31.noarch/fs/nfsd/nfs4xdr.c.orig 2009-10-14 14:26:23.000000000 -0400
++++ linux-2.6.31.noarch/fs/nfsd/nfs4xdr.c 2009-10-14 15:02:44.000000000 -0400
+@@ -2174,28 +2174,61 @@ static inline int attributes_need_mount(
return 0;
}
@@ -140,7 +140,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/nfs
exp_get(exp);
/*
* In the case of a mountpoint, the client may be asking for
-@@ -2258,6 +2291,7 @@ nfsd4_encode_dirent(void *ccdv, const ch
+@@ -2256,6 +2289,7 @@ nfsd4_encode_dirent(void *ccdv, const ch
struct readdir_cd *ccd = ccdv;
struct nfsd4_readdir *cd = container_of(ccd, struct nfsd4_readdir, common);
int buflen;
@@ -148,7 +148,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/nfs
__be32 *p = cd->buffer;
__be32 *cookiep;
__be32 nfserr = nfserr_toosmall;
-@@ -2268,19 +2302,40 @@ nfsd4_encode_dirent(void *ccdv, const ch
+@@ -2266,19 +2300,40 @@ nfsd4_encode_dirent(void *ccdv, const ch
return 0;
}
@@ -191,9 +191,9 @@ diff -up linux-2.6.30.noarch/fs/nfsd/nfs
switch (nfserr) {
case nfs_ok:
p += buflen;
-diff -up linux-2.6.30.noarch/fs/nfsd/nfsfh.c.save linux-2.6.30.noarch/fs/nfsd/nfsfh.c
---- linux-2.6.30.noarch/fs/nfsd/nfsfh.c.save 2009-09-09 15:11:54.711427000 -0400
-+++ linux-2.6.30.noarch/fs/nfsd/nfsfh.c 2009-09-09 15:12:48.357903000 -0400
+diff -up linux-2.6.31.noarch/fs/nfsd/nfsfh.c.orig linux-2.6.31.noarch/fs/nfsd/nfsfh.c
+--- linux-2.6.31.noarch/fs/nfsd/nfsfh.c.orig 2009-10-14 14:26:23.000000000 -0400
++++ linux-2.6.31.noarch/fs/nfsd/nfsfh.c 2009-10-14 15:02:44.000000000 -0400
@@ -109,6 +109,30 @@ static __be32 nfsd_setuser_and_check_por
return nfserrno(nfsd_setuser(rqstp, exp));
}
@@ -240,33 +240,10 @@ diff -up linux-2.6.30.noarch/fs/nfsd/nfs
}
error = nfsd_mode_check(rqstp, dentry->d_inode->i_mode, type);
-diff -up linux-2.6.30.noarch/fs/nfsd/vfs.c.save linux-2.6.30.noarch/fs/nfsd/vfs.c
---- linux-2.6.30.noarch/fs/nfsd/vfs.c.save 2009-09-09 15:11:54.715423000 -0400
-+++ linux-2.6.30.noarch/fs/nfsd/vfs.c 2009-09-09 15:12:39.978431000 -0400
-@@ -89,6 +89,12 @@ struct raparm_hbucket {
- #define RAPARM_HASH_MASK (RAPARM_HASH_SIZE-1)
- static struct raparm_hbucket raparm_hash[RAPARM_HASH_SIZE];
-
-+static inline int
-+nfsd_v4client(struct svc_rqst *rq)
-+{
-+ return((rq->rq_prog == NFS_PROGRAM) && (rq->rq_vers == 4));
-+}
-+
- /*
- * Called from nfsd_lookup and encode_dirent. Check if we have crossed
- * a mount point.
-@@ -115,7 +121,8 @@ nfsd_cross_mnt(struct svc_rqst *rqstp, s
- path_put(&path);
- goto out;
- }
-- if ((exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) {
-+ if (nfsd_v4client(rqstp) ||
-+ (exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) {
- /* successfully crossed mount point */
- /*
- * This is subtle: path.dentry is *not* on path.mnt
-@@ -134,6 +141,55 @@ out:
+diff -up linux-2.6.31.noarch/fs/nfsd/vfs.c.orig linux-2.6.31.noarch/fs/nfsd/vfs.c
+--- linux-2.6.31.noarch/fs/nfsd/vfs.c.orig 2009-10-14 14:26:23.000000000 -0400
++++ linux-2.6.31.noarch/fs/nfsd/vfs.c 2009-10-14 15:03:37.000000000 -0400
+@@ -141,6 +141,55 @@ out:
return err;
}
@@ -322,7 +299,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/vfs
__be32
nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp,
const char *name, unsigned int len,
-@@ -143,7 +199,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
+@@ -150,7 +199,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
struct dentry *dparent;
struct dentry *dentry;
__be32 err;
@@ -331,7 +308,7 @@ diff -up linux-2.6.30.noarch/fs/nfsd/vfs
dprintk("nfsd: nfsd_lookup(fh %s, %.*s)\n", SVCFH_fmt(fhp), len,name);
-@@ -155,6 +211,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
+@@ -162,6 +211,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
dparent = fhp->fh_dentry;
exp = fhp->fh_export;
exp_get(exp);
@@ -339,7 +316,16 @@ diff -up linux-2.6.30.noarch/fs/nfsd/vfs
/* Lookup the name, but don't follow links */
if (isdotent(name, len)) {
-@@ -199,9 +256,21 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
+@@ -169,7 +219,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
+ dentry = dget(dparent);
+ else if (dparent != exp->ex_path.dentry)
+ dentry = dget_parent(dparent);
+- else if (!EX_NOHIDE(exp))
++ else if (!EX_NOHIDE(exp) && !nfsd_v4client(rqstp))
+ dentry = dget(dparent); /* .. == . just like at / */
+ else {
+ /* checking mountpoint crossing is very different when stepping up */
+@@ -206,9 +256,21 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
if (IS_ERR(dentry))
goto out_nfserr;
/*
@@ -362,9 +348,9 @@ diff -up linux-2.6.30.noarch/fs/nfsd/vfs
if ((host_err = nfsd_cross_mnt(rqstp, &dentry, &exp))) {
dput(dentry);
goto out_nfserr;
-diff -up linux-2.6.30.noarch/include/linux/nfsd/export.h.save linux-2.6.30.noarch/include/linux/nfsd/export.h
---- linux-2.6.30.noarch/include/linux/nfsd/export.h.save 2009-09-09 15:11:54.719419000 -0400
-+++ linux-2.6.30.noarch/include/linux/nfsd/export.h 2009-09-09 15:12:29.064157000 -0400
+diff -up linux-2.6.31.noarch/include/linux/nfsd/export.h.orig linux-2.6.31.noarch/include/linux/nfsd/export.h
+--- linux-2.6.31.noarch/include/linux/nfsd/export.h.orig 2009-09-09 18:13:59.000000000 -0400
++++ linux-2.6.31.noarch/include/linux/nfsd/export.h 2009-10-14 15:02:44.000000000 -0400
@@ -39,7 +39,8 @@
#define NFSEXP_FSID 0x2000
#define NFSEXP_CROSSMOUNT 0x4000
@@ -375,10 +361,10 @@ diff -up linux-2.6.30.noarch/include/lin
/* The flags that may vary depending on security flavor: */
#define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH \
-diff -up linux-2.6.30.noarch/include/linux/nfsd/nfsd.h.save linux-2.6.30.noarch/include/linux/nfsd/nfsd.h
---- linux-2.6.30.noarch/include/linux/nfsd/nfsd.h.save 2009-09-09 15:11:54.723415000 -0400
-+++ linux-2.6.30.noarch/include/linux/nfsd/nfsd.h 2009-09-09 15:12:33.025896000 -0400
-@@ -76,6 +76,8 @@ int nfsd_racache_init(int);
+diff -up linux-2.6.31.noarch/include/linux/nfsd/nfsd.h.orig linux-2.6.31.noarch/include/linux/nfsd/nfsd.h
+--- linux-2.6.31.noarch/include/linux/nfsd/nfsd.h.orig 2009-10-14 14:26:23.000000000 -0400
++++ linux-2.6.31.noarch/include/linux/nfsd/nfsd.h 2009-10-14 15:02:44.000000000 -0400
+@@ -79,6 +79,8 @@ int nfsd_racache_init(int);
void nfsd_racache_shutdown(void);
int nfsd_cross_mnt(struct svc_rqst *rqstp, struct dentry **dpp,
struct svc_export **expp);
- Previous message (by thread): rpms/kernel/F-12 kernel.spec,1.1868,1.1869
- Next message (by thread): rpms/kernel/devel patch-2.6.32-rc4-git4.bz2.sign, NONE, 1.1 .cvsignore, 1.1134, 1.1135 git-linus.diff, 1.18, 1.19 kernel.spec, 1.1828, 1.1829 sources, 1.1093, 1.1094 upstream, 1.1006, 1.1007
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list