Linux NFS development
 help / color / mirror / Atom feed
* Re: 2.6.24-rc3-git4 NFS crossmnt regression
       [not found]     ` <18268.51342.353887.178014-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
@ 2007-12-10 14:19       ` Maxim Levitsky
  2007-12-10 14:36         ` J. Bruce Fields
  2007-12-10 19:51         ` 2.6.24-rc3-git4 NFS crossmnt regression Shane
  0 siblings, 2 replies; 12+ messages in thread
From: Maxim Levitsky @ 2007-12-10 14:19 UTC (permalink / raw)
  To: Neil Brown
  Cc: Rafael J. Wysocki, Andrew Morton, Trond Myklebust, gnome42,
	linux-kernel, bfields, Eric W. Biederman, Denis V. Lunev,
	linux-nfs

...
> It is best not to use nohide - we should probably mark it as
> 'legacy'.
> 
> Simply export the top level mountpoint as 'crossmnt'  and everything
> below there will be exported.
> 
> > Where should I put those options in root file-system export or in submount export?
> 
> crossmnt goes at the top.  nohide goes in the submount.  Both have
> the same general effect though with subtle differences.
> You don't need both (though that doesn't hurt).
> Just use crossmnt at the top,  Then you don't need to mention the
> lower level filesystems at all.
> 
> > 
...
> > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > 
> 
> All of this should work fine with v3.  Once you have the right patch
> for the crossmnt bug applied, if you have further problems post them
> to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> 
> NeilBrown
> 

Big thanks,

Still NFS server just don't want to accept the connection
I noticed that if I first mount with
-tnfs, unmount,  and then mount with -tnfs4, it works


Assuming that 
[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate 
is the fix for crossmnt bug, I applied it to both client and server,
but no luck.

Still see empty folders.

my /etc/exports file (on old box):

/ *(insecure,rw,fsid=0,crossmnt,async,anonuid=1000,anongid=100)
/dev *(insecure,rw,fsid=1,async,anonuid=1000,anongid=100)
/mnt/disk2 *(insecure,rw,async,anonuid=1000,anongid=100)
	

It is totally insecure, but I have just home network,
and it is behind firewall, and besides I am testing this now.

I am afraid that I am doing something wrong since
I don't know nfs well yet, and especially nfs4
(But I want to make nfs4 work too)

Best regards,
	Maxim Levitsky

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression
  2007-12-10 14:19       ` 2.6.24-rc3-git4 NFS crossmnt regression Maxim Levitsky
@ 2007-12-10 14:36         ` J. Bruce Fields
  2007-12-10 15:05           ` Maxim Levitsky
  2007-12-10 19:51         ` 2.6.24-rc3-git4 NFS crossmnt regression Shane
  1 sibling, 1 reply; 12+ messages in thread
From: J. Bruce Fields @ 2007-12-10 14:36 UTC (permalink / raw)
  To: Maxim Levitsky
  Cc: Neil Brown, Rafael J. Wysocki, Andrew Morton, Trond Myklebust,
	gnome42, linux-kernel, Eric W. Biederman, Denis V. Lunev,
	linux-nfs

On Mon, Dec 10, 2007 at 04:19:12PM +0200, Maxim Levitsky wrote:
> ...
> > It is best not to use nohide - we should probably mark it as
> > 'legacy'.
> > 
> > Simply export the top level mountpoint as 'crossmnt'  and everything
> > below there will be exported.
> > 
> > > Where should I put those options in root file-system export or in submount export?
> > 
> > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > the same general effect though with subtle differences.
> > You don't need both (though that doesn't hurt).
> > Just use crossmnt at the top,  Then you don't need to mention the
> > lower level filesystems at all.
> > 
> > > 
> ...
> > > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > > 
> > 
> > All of this should work fine with v3.  Once you have the right patch
> > for the crossmnt bug applied, if you have further problems post them
> > to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> > 
> > NeilBrown
> > 
> 
> Big thanks,
> 
> Still NFS server just don't want to accept the connection
> I noticed that if I first mount with
> -tnfs, unmount,  and then mount with -tnfs4, it works

OK, in that case, that's definitely the bug Eric sent out the patch for;
you may want to try applying his patch.

--b.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression
  2007-12-10 14:36         ` J. Bruce Fields
@ 2007-12-10 15:05           ` Maxim Levitsky
  2007-12-10 15:47             ` J. Bruce Fields
  2007-12-10 21:03             ` Andrew Morton
  0 siblings, 2 replies; 12+ messages in thread
From: Maxim Levitsky @ 2007-12-10 15:05 UTC (permalink / raw)
  To: J. Bruce Fields
  Cc: Neil Brown, Rafael J. Wysocki, Andrew Morton, Trond Myklebust,
	gnome42, linux-kernel, Eric W. Biederman, Denis V. Lunev,
	linux-nfs

On Monday 10 December 2007 16:36:09 J. Bruce Fields wrote:
> On Mon, Dec 10, 2007 at 04:19:12PM +0200, Maxim Levitsky wrote:
> > ...
> > > It is best not to use nohide - we should probably mark it as
> > > 'legacy'.
> > > 
> > > Simply export the top level mountpoint as 'crossmnt'  and everything
> > > below there will be exported.
> > > 
> > > > Where should I put those options in root file-system export or in submount export?
> > > 
> > > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > > the same general effect though with subtle differences.
> > > You don't need both (though that doesn't hurt).
> > > Just use crossmnt at the top,  Then you don't need to mention the
> > > lower level filesystems at all.
> > > 
> > > > 
> > ...
> > > > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > > > 
> > > 
> > > All of this should work fine with v3.  Once you have the right patch
> > > for the crossmnt bug applied, if you have further problems post them
> > > to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> > > 
> > > NeilBrown
> > > 
> > 
> > Big thanks,
> > 
> > Still NFS server just don't want to accept the connection
> > I noticed that if I first mount with
> > -tnfs, unmount,  and then mount with -tnfs4, it works
> 
> OK, in that case, that's definitely the bug Eric sent out the patch for;
> you may want to try applying his patch.
You mean
"[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate" ?

I did apply it (on both kernel and server), and it doesn't help.
Best regards,
	Maxim Levitsky

PS: I am unfamiliar with nfs/nfs4, so this could be just a 
configuration/compilation issue.
> 
> --b.
> 



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression
  2007-12-10 15:05           ` Maxim Levitsky
@ 2007-12-10 15:47             ` J. Bruce Fields
  2007-12-10 18:22               ` Maxim Levitsky
  2007-12-10 21:03             ` Andrew Morton
  1 sibling, 1 reply; 12+ messages in thread
From: J. Bruce Fields @ 2007-12-10 15:47 UTC (permalink / raw)
  To: Maxim Levitsky
  Cc: Neil Brown, Rafael J. Wysocki, Andrew Morton, Trond Myklebust,
	gnome42, linux-kernel, Eric W. Biederman, Denis V. Lunev,
	linux-nfs

On Mon, Dec 10, 2007 at 05:05:30PM +0200, Maxim Levitsky wrote:
> On Monday 10 December 2007 16:36:09 J. Bruce Fields wrote:
> > On Mon, Dec 10, 2007 at 04:19:12PM +0200, Maxim Levitsky wrote:
> > > ...
> > > > It is best not to use nohide - we should probably mark it as
> > > > 'legacy'.
> > > > 
> > > > Simply export the top level mountpoint as 'crossmnt'  and everything
> > > > below there will be exported.
> > > > 
> > > > > Where should I put those options in root file-system export or in submount export?
> > > > 
> > > > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > > > the same general effect though with subtle differences.
> > > > You don't need both (though that doesn't hurt).
> > > > Just use crossmnt at the top,  Then you don't need to mention the
> > > > lower level filesystems at all.
> > > > 
> > > > > 
> > > ...
> > > > > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > > > > 
> > > > 
> > > > All of this should work fine with v3.  Once you have the right patch
> > > > for the crossmnt bug applied, if you have further problems post them
> > > > to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> > > > 
> > > > NeilBrown
> > > > 
> > > 
> > > Big thanks,
> > > 
> > > Still NFS server just don't want to accept the connection
> > > I noticed that if I first mount with
> > > -tnfs, unmount,  and then mount with -tnfs4, it works
> > 
> > OK, in that case, that's definitely the bug Eric sent out the patch for;
> > you may want to try applying his patch.
> You mean
> "[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate" ?
> 
> I did apply it (on both kernel and server), and it doesn't help.
> Best regards,
> 	Maxim Levitsky
> 
> PS: I am unfamiliar with nfs/nfs4, so this could be just a 
> configuration/compilation issue.

What do
	ls /proc/fs/nfs
	ls /proc/fs/nfsd

report?

--b.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression
  2007-12-10 15:47             ` J. Bruce Fields
@ 2007-12-10 18:22               ` Maxim Levitsky
  0 siblings, 0 replies; 12+ messages in thread
From: Maxim Levitsky @ 2007-12-10 18:22 UTC (permalink / raw)
  To: J. Bruce Fields
  Cc: Neil Brown, Rafael J. Wysocki, Andrew Morton, Trond Myklebust,
	gnome42, linux-kernel, Eric W. Biederman, Denis V. Lunev,
	linux-nfs

On Monday 10 December 2007 17:47:47 J. Bruce Fields wrote:
> On Mon, Dec 10, 2007 at 05:05:30PM +0200, Maxim Levitsky wrote:
> > On Monday 10 December 2007 16:36:09 J. Bruce Fields wrote:
> > > On Mon, Dec 10, 2007 at 04:19:12PM +0200, Maxim Levitsky wrote:
> > > > ...
> > > > > It is best not to use nohide - we should probably mark it as
> > > > > 'legacy'.
> > > > > 
> > > > > Simply export the top level mountpoint as 'crossmnt'  and everything
> > > > > below there will be exported.
> > > > > 
> > > > > > Where should I put those options in root file-system export or in submount export?
> > > > > 
> > > > > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > > > > the same general effect though with subtle differences.
> > > > > You don't need both (though that doesn't hurt).
> > > > > Just use crossmnt at the top,  Then you don't need to mention the
> > > > > lower level filesystems at all.
> > > > > 
> > > > > > 
> > > > ...
> > > > > > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > > > > > 
> > > > > 
> > > > > All of this should work fine with v3.  Once you have the right patch
> > > > > for the crossmnt bug applied, if you have further problems post them
> > > > > to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> > > > > 
> > > > > NeilBrown
> > > > > 
> > > > 
> > > > Big thanks,
> > > > 
> > > > Still NFS server just don't want to accept the connection
> > > > I noticed that if I first mount with
> > > > -tnfs, unmount,  and then mount with -tnfs4, it works
> > > 
> > > OK, in that case, that's definitely the bug Eric sent out the patch for;
> > > you may want to try applying his patch.
> > You mean
> > "[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate" ?
> > 
> > I did apply it (on both kernel and server), and it doesn't help.
> > Best regards,
> > 	Maxim Levitsky
> > 
> > PS: I am unfamiliar with nfs/nfs4, so this could be just a 
> > configuration/compilation issue.
> 
> What do
> 	ls /proc/fs/nfs
> 	ls /proc/fs/nfsd
> 
> report?
> 
> --b.
> 

On both client and server:

maxim [~]$ ls /proc/fs/nfs
exports
maxim [~]$ ls /proc/fs/nfsd
exports     max_block_size  nfsv4recoverydir  portlist  versions
filehandle  nfsv4leasetime  pool_threads      threads
maxim [~]$


Best regards,
	Maxim Levitsky


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression
  2007-12-10 14:19       ` 2.6.24-rc3-git4 NFS crossmnt regression Maxim Levitsky
  2007-12-10 14:36         ` J. Bruce Fields
@ 2007-12-10 19:51         ` Shane
  1 sibling, 0 replies; 12+ messages in thread
From: Shane @ 2007-12-10 19:51 UTC (permalink / raw)
  To: Maxim Levitsky
  Cc: Neil Brown, Rafael J. Wysocki, Andrew Morton, Trond Myklebust,
	linux-kernel, bfields, Eric W. Biederman, Denis V. Lunev,
	linux-nfs

On Dec 10, 2007 9:19 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote:
> ...
> > It is best not to use nohide - we should probably mark it as
> > 'legacy'.
> >
> > Simply export the top level mountpoint as 'crossmnt'  and everything
> > below there will be exported.
> >
> > > Where should I put those options in root file-system export or in submount export?
> >
> > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > the same general effect though with subtle differences.
> > You don't need both (though that doesn't hurt).
> > Just use crossmnt at the top,  Then you don't need to mention the
> > lower level filesystems at all.
> >
> > >
> ...
> > > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > >
> >
> > All of this should work fine with v3.  Once you have the right patch
> > for the crossmnt bug applied, if you have further problems post them
> > to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> >
> > NeilBrown
> >
>
> Big thanks,
>
> Still NFS server just don't want to accept the connection
> I noticed that if I first mount with
> -tnfs, unmount,  and then mount with -tnfs4, it works
>
>
> Assuming that
> [PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate
> is the fix for crossmnt bug, I applied it to both client and server,
> but no luck.

I'm using NFSv3, but I applied two patches. The one you mention
from Eric and the patch Trond posted in this thread.

>
> Still see empty folders.

That was the symptom I had without Trond's patch.

Shane

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression
  2007-12-10 15:05           ` Maxim Levitsky
  2007-12-10 15:47             ` J. Bruce Fields
@ 2007-12-10 21:03             ` Andrew Morton
  2007-12-12  2:01               ` 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED] Maxim Levitsky
  1 sibling, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2007-12-10 21:03 UTC (permalink / raw)
  To: Maxim Levitsky
  Cc: bfields, neilb, rjw, trond.myklebust, gnome42, linux-kernel,
	ebiederm, den, linux-nfs

On Mon, 10 Dec 2007 17:05:30 +0200
Maxim Levitsky <maximlevitsky@gmail.com> wrote:

> On Monday 10 December 2007 16:36:09 J. Bruce Fields wrote:
> > On Mon, Dec 10, 2007 at 04:19:12PM +0200, Maxim Levitsky wrote:
> > > ...
> > > > It is best not to use nohide - we should probably mark it as
> > > > 'legacy'.
> > > > 
> > > > Simply export the top level mountpoint as 'crossmnt'  and everything
> > > > below there will be exported.
> > > > 
> > > > > Where should I put those options in root file-system export or in submount export?
> > > > 
> > > > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > > > the same general effect though with subtle differences.
> > > > You don't need both (though that doesn't hurt).
> > > > Just use crossmnt at the top,  Then you don't need to mention the
> > > > lower level filesystems at all.
> > > > 
> > > > > 
> > > ...
> > > > > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > > > > 
> > > > 
> > > > All of this should work fine with v3.  Once you have the right patch
> > > > for the crossmnt bug applied, if you have further problems post them
> > > > to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> > > > 
> > > > NeilBrown
> > > > 
> > > 
> > > Big thanks,
> > > 
> > > Still NFS server just don't want to accept the connection
> > > I noticed that if I first mount with
> > > -tnfs, unmount,  and then mount with -tnfs4, it works
> > 
> > OK, in that case, that's definitely the bug Eric sent out the patch for;
> > you may want to try applying his patch.
> You mean
> "[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate" ?
> 
> I did apply it (on both kernel and server), and it doesn't help.

argh, this is getting bad.

Can you please test the below patch asap? Against 2.6.24-rc4 or latest-linus.


From: Andrew Morton <akpm@linux-foundation.org>

Revert

    commit 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416
    Author: Eric W. Biederman <ebiederm@xmission.com>
    Date:   Sun Dec 2 00:33:17 2007 +1100

        [NETNS]: Fix /proc/net breakage

It has caused all sorts of procfs mayhem.

Reverting this will reintroduce

    "Currently things work but there are odd details visible to user
     space, even when we have a single network namespace."

Where "details" was never elaborated upon.

Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Pavel Emelyanov <xemul@openvz.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Herbert Xu <herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: "Denis V. Lunev" <den@openvz.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 fs/proc/generic.c       |   12 -----
 fs/proc/proc_net.c      |   86 +++++++++++++++++++++++++++++++++++---
 include/linux/proc_fs.h |    3 -
 3 files changed, 82 insertions(+), 19 deletions(-)

diff -puN fs/proc/generic.c~revert-fix-proc-net-breakage fs/proc/generic.c
--- a/fs/proc/generic.c~revert-fix-proc-net-breakage
+++ a/fs/proc/generic.c
@@ -374,16 +374,9 @@ static int proc_delete_dentry(struct den
 	return 1;
 }
 
-static int proc_revalidate_dentry(struct dentry *dentry, struct nameidata *nd)
-{
-	d_drop(dentry);
-	return 0;
-}
-
 static struct dentry_operations proc_dentry_operations =
 {
 	.d_delete	= proc_delete_dentry,
-	.d_revalidate	= proc_revalidate_dentry,
 };
 
 /*
@@ -404,11 +397,8 @@ struct dentry *proc_lookup(struct inode 
 			if (de->namelen != dentry->d_name.len)
 				continue;
 			if (!memcmp(dentry->d_name.name, de->name, de->namelen)) {
-				unsigned int ino;
+				unsigned int ino = de->low_ino;
 
-				if (de->shadow_proc)
-					de = de->shadow_proc(current, de);
-				ino = de->low_ino;
 				de_get(de);
 				spin_unlock(&proc_subdir_lock);
 				error = -EINVAL;
diff -puN fs/proc/proc_net.c~revert-fix-proc-net-breakage fs/proc/proc_net.c
--- a/fs/proc/proc_net.c~revert-fix-proc-net-breakage
+++ a/fs/proc/proc_net.c
@@ -50,14 +50,89 @@ struct net *get_proc_net(const struct in
 }
 EXPORT_SYMBOL_GPL(get_proc_net);
 
-static struct proc_dir_entry *shadow_pde;
+static struct proc_dir_entry *proc_net_shadow;
 
-static struct proc_dir_entry *proc_net_shadow(struct task_struct *task,
+static struct dentry *proc_net_shadow_dentry(struct dentry *parent,
 						struct proc_dir_entry *de)
 {
-	return task->nsproxy->net_ns->proc_net;
+	struct dentry *shadow = NULL;
+	struct inode *inode;
+	if (!de)
+		goto out;
+	de_get(de);
+	inode = proc_get_inode(parent->d_inode->i_sb, de->low_ino, de);
+	if (!inode)
+		goto out_de_put;
+	shadow = d_alloc_name(parent, de->name);
+	if (!shadow)
+		goto out_iput;
+	shadow->d_op = parent->d_op; /* proc_dentry_operations */
+	d_instantiate(shadow, inode);
+out:
+	return shadow;
+out_iput:
+	iput(inode);
+out_de_put:
+	de_put(de);
+	goto out;
+}
+
+static void *proc_net_follow_link(struct dentry *parent, struct nameidata *nd)
+{
+	struct net *net = current->nsproxy->net_ns;
+	struct dentry *shadow;
+	shadow = proc_net_shadow_dentry(parent, net->proc_net);
+	if (!shadow)
+		return ERR_PTR(-ENOENT);
+
+	dput(nd->dentry);
+	/* My dentry count is 1 and that should be enough as the
+	 * shadow dentry is thrown away immediately.
+	 */
+	nd->dentry = shadow;
+	return NULL;
 }
 
+static struct dentry *proc_net_lookup(struct inode *dir, struct dentry *dentry,
+				      struct nameidata *nd)
+{
+	struct net *net = current->nsproxy->net_ns;
+	struct dentry *shadow;
+
+	shadow = proc_net_shadow_dentry(nd->dentry, net->proc_net);
+	if (!shadow)
+		return ERR_PTR(-ENOENT);
+
+	dput(nd->dentry);
+	nd->dentry = shadow;
+
+	return shadow->d_inode->i_op->lookup(shadow->d_inode, dentry, nd);
+}
+
+static int proc_net_setattr(struct dentry *dentry, struct iattr *iattr)
+{
+	struct net *net = current->nsproxy->net_ns;
+	struct dentry *shadow;
+	int ret;
+
+	shadow = proc_net_shadow_dentry(dentry->d_parent, net->proc_net);
+	if (!shadow)
+		return -ENOENT;
+	ret = shadow->d_inode->i_op->setattr(shadow, iattr);
+	dput(shadow);
+	return ret;
+}
+
+static const struct file_operations proc_net_dir_operations = {
+	.read			= generic_read_dir,
+};
+
+static struct inode_operations proc_net_dir_inode_operations = {
+	.follow_link	= proc_net_follow_link,
+	.lookup		= proc_net_lookup,
+	.setattr	= proc_net_setattr,
+};
+
 static __net_init int proc_net_ns_init(struct net *net)
 {
 	struct proc_dir_entry *root, *netd, *net_statd;
@@ -110,8 +185,9 @@ static struct pernet_operations __net_in
 
 int __init proc_net_init(void)
 {
-	shadow_pde = proc_mkdir("net", NULL);
-	shadow_pde->shadow_proc = proc_net_shadow;
+	proc_net_shadow = proc_mkdir("net", NULL);
+	proc_net_shadow->proc_iops = &proc_net_dir_inode_operations;
+	proc_net_shadow->proc_fops = &proc_net_dir_operations;
 
 	return register_pernet_subsys(&proc_net_ns_ops);
 }
diff -puN include/linux/proc_fs.h~revert-fix-proc-net-breakage include/linux/proc_fs.h
--- a/include/linux/proc_fs.h~revert-fix-proc-net-breakage
+++ a/include/linux/proc_fs.h
@@ -48,8 +48,6 @@ typedef	int (read_proc_t)(char *page, ch
 typedef	int (write_proc_t)(struct file *file, const char __user *buffer,
 			   unsigned long count, void *data);
 typedef int (get_info_t)(char *, char **, off_t, int);
-typedef struct proc_dir_entry *(shadow_proc_t)(struct task_struct *task,
-						struct proc_dir_entry *pde);
 
 struct proc_dir_entry {
 	unsigned int low_ino;
@@ -80,7 +78,6 @@ struct proc_dir_entry {
 	int pde_users;	/* number of callers into module in progress */
 	spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */
 	struct completion *pde_unload_completion;
-	shadow_proc_t *shadow_proc;
 };
 
 struct kcore_list {
_


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED]
  2007-12-10 21:03             ` Andrew Morton
@ 2007-12-12  2:01               ` Maxim Levitsky
  2007-12-12  2:15                 ` Andrew Morton
  0 siblings, 1 reply; 12+ messages in thread
From: Maxim Levitsky @ 2007-12-12  2:01 UTC (permalink / raw)
  To: Andrew Morton
  Cc: bfields, neilb, rjw, trond.myklebust, gnome42, linux-kernel,
	ebiederm, den, linux-nfs

On Monday 10 December 2007 23:03:05 Andrew Morton wrote:
> On Mon, 10 Dec 2007 17:05:30 +0200
> Maxim Levitsky <maximlevitsky@gmail.com> wrote:
> 
> > On Monday 10 December 2007 16:36:09 J. Bruce Fields wrote:
> > > On Mon, Dec 10, 2007 at 04:19:12PM +0200, Maxim Levitsky wrote:
> > > > ...
> > > > > It is best not to use nohide - we should probably mark it as
> > > > > 'legacy'.
> > > > > 
> > > > > Simply export the top level mountpoint as 'crossmnt'  and everything
> > > > > below there will be exported.
> > > > > 
> > > > > > Where should I put those options in root file-system export or in submount export?
> > > > > 
> > > > > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > > > > the same general effect though with subtle differences.
> > > > > You don't need both (though that doesn't hurt).
> > > > > Just use crossmnt at the top,  Then you don't need to mention the
> > > > > lower level filesystems at all.
> > > > > 
> > > > > > 
> > > > ...
> > > > > > (I decided to switch to NFS4 only due to the lack of ability to see underlying mounts)
> > > > > > 
> > > > > 
> > > > > All of this should work fine with v3.  Once you have the right patch
> > > > > for the crossmnt bug applied, if you have further problems post them
> > > > > to linux-nfs-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
> > > > > 
> > > > > NeilBrown
> > > > > 
> > > > 
> > > > Big thanks,
> > > > 
> > > > Still NFS server just don't want to accept the connection
> > > > I noticed that if I first mount with
> > > > -tnfs, unmount,  and then mount with -tnfs4, it works
> > > 
> > > OK, in that case, that's definitely the bug Eric sent out the patch for;
> > > you may want to try applying his patch.
> > You mean
> > "[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate" ?
> > 
> > I did apply it (on both kernel and server), and it doesn't help.
> 
> argh, this is getting bad.
> 
> Can you please test the below patch asap? Against 2.6.24-rc4 or latest-linus.
> 
> 
> From: Andrew Morton <akpm@linux-foundation.org>
> 
> Revert
> 
>     commit 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416
>     Author: Eric W. Biederman <ebiederm@xmission.com>
>     Date:   Sun Dec 2 00:33:17 2007 +1100
> 

Hi,

I finally solved this.
There is no need to revert 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416.

It was actually a deadly mixture of 3 bugs:

1) Stale handles - Trond's patch fixes it, but I somehow missed it.
2) Empty /proc/fs/nfsd (which causes nfs4 failures, and masks the bug #1, since with it the subfolders are just empty)
	[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate fixes it

3) And as I expected, a userspace bug, which believe me or not has exactly the same symptoms
like #2 (and doesn't depend on others)

It is a wrong boot script in BLFS that starts nfs daemons in wrong order.
So there are 3 bugs and each masks the former one :-) .

I revised boot script to use recommended order like in nfs-utils.
And finally everything works....

Best regards,
	Maxim Levitsky

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED]
  2007-12-12  2:01               ` 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED] Maxim Levitsky
@ 2007-12-12  2:15                 ` Andrew Morton
  2007-12-12  2:19                   ` Trond Myklebust
  2007-12-12  2:24                   ` Maxim Levitsky
  0 siblings, 2 replies; 12+ messages in thread
From: Andrew Morton @ 2007-12-12  2:15 UTC (permalink / raw)
  To: Maxim Levitsky
  Cc: bfields, neilb, rjw, trond.myklebust, gnome42, linux-kernel,
	ebiederm, den, linux-nfs

On Wed, 12 Dec 2007 04:01:56 +0200 Maxim Levitsky <maximlevitsky@gmail.com> wrote:

> > 
> > argh, this is getting bad.
> > 
> > Can you please test the below patch asap? Against 2.6.24-rc4 or latest-linus.
> > 
> > 
> > From: Andrew Morton <akpm@linux-foundation.org>
> > 
> > Revert
> > 
> >     commit 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416
> >     Author: Eric W. Biederman <ebiederm@xmission.com>
> >     Date:   Sun Dec 2 00:33:17 2007 +1100
> > 
> 
> Hi,
> 
> I finally solved this.
> There is no need to revert 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416.
> 
> It was actually a deadly mixture of 3 bugs:
> 
> 1) Stale handles - Trond's patch fixes it, but I somehow missed it.

What is "Trond's patch" and where is it now?

> 2) Empty /proc/fs/nfsd (which causes nfs4 failures, and masks the bug #1, since with it the subfolders are just empty)
> 	[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate fixes it

That patch was merged into Linus's tree just prior to 2.6.24-rc5.

> 3) And as I expected, a userspace bug, which believe me or not has exactly the same symptoms
> like #2 (and doesn't depend on others)
> 
> It is a wrong boot script in BLFS that starts nfs daemons in wrong order.
> So there are 3 bugs and each masks the former one :-) .
> 
> I revised boot script to use recommended order like in nfs-utils.
> And finally everything works....
> 

Well...  It's relatively common that insufficiently-robust userspace works
OK under kernel N and then stops working under kernel N+1.  Even though the
fault lies with userspace, we prefer that it continues to work.

But it doesn't sounds like that'll be a concern here.

Thanks for the followup.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED]
  2007-12-12  2:15                 ` Andrew Morton
@ 2007-12-12  2:19                   ` Trond Myklebust
       [not found]                     ` <1197425940.27061.1.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
  2007-12-12  2:24                   ` Maxim Levitsky
  1 sibling, 1 reply; 12+ messages in thread
From: Trond Myklebust @ 2007-12-12  2:19 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Maxim Levitsky, bfields, neilb, rjw, gnome42, linux-kernel,
	ebiederm, den, linux-nfs

[-- Attachment #1: Type: text/plain, Size: 255 bytes --]


On Tue, 2007-12-11 at 18:15 -0800, Andrew Morton wrote:
> > 1) Stale handles - Trond's patch fixes it, but I somehow missed it.
> 
> What is "Trond's patch" and where is it now?

He means the one this whole thread started with. See attachment...

Trond


[-- Attachment #2: Attached message - Re: 2.6.24-rc3-git4 NFS crossmnt regression --]
[-- Type: message/rfc822, Size: 4105 bytes --]

[-- Attachment #2.1.1: Type: text/plain, Size: 1545 bytes --]


On Fri, 2007-12-07 at 13:14 -0500, Shane wrote:
> On Dec 7, 2007 7:02 AM, Andrew Morton <akpm@linux-foundation.org> wrote:
> ...
> > > 2.6.24-rc3-git1 is last known good kernel. The problem also exists
> > > with the latest snap 2.6.24-rc4-git4. NFS server is 2.6.23-rc9 and
> > > is unchanged.
> >
> > hm, there have been no nfs changes since 2.6.24-rc4.
> 
> Ok, but the problem seems to have appeared before 2.6.24-rc4.
> 
> > > It is easily reproducible here, hopefully for the person who
> > > knows how to debug it too :)
> > >
> >
> > I guess a full set of the commands which you typed to reproduce this would
> > help.
> 
> Server is 2.6.23-rc9 and is exporting:
> 
> /dirA/dirB
> 10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure,crossmnt)
> /dirA/dirB/dirC
> 10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure)
> /dirA/dirB/dirD
> 10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure)
> 
> The NFS client (Core2 SMP) 2.6.24-rc3-git4:
> 
> NFS-server:/dirA/dirB     /dirA/dirB    nfs
> auto,rsize=16384,wsize=16384,hard,intr,users,exec,nfsvers=3,tcp,nolock,actimeo=0
> 
> Then on the client when the new kernel has booted:
> 
> ls /dirA/dirB      --> normal listing
> ls /dirA/dirB/dirC   -->  Stale NFS file handle
> ls /dirA/dirB/dirD   -->  Stale NFS file handle
> 
> I will do a few more builds/boots and check -rc3-git2 and -rc3-git3.

This problem has already been reported. The fix (which I'm planning on
sending to Linus soon) is appended.

Cheers
  Trond

[-- Attachment #2.1.2: linux-2.6.24-001-fix_submounts.dif --]
[-- Type: message/rfc822, Size: 1025 bytes --]

From: Trond Myklebust <Trond.Myklebust@netapp.com>
Subject: NFS: Fix NFS mountpoint crossing...
Date: 
Message-ID: <1197053179.7532.24.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>

The check that was added to nfs_xdev_get_sb() to work around broken
servers, works fine for NFSv2, but causes mountpoint crossing on NFSv3 to
always return ESTALE.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
---

 fs/nfs/super.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 2426e71..ea92920 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1475,7 +1475,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type, int flags,
 		error = PTR_ERR(mntroot);
 		goto error_splat_super;
 	}
-	if (mntroot->d_inode->i_op != &nfs_dir_inode_operations) {
+	if (mntroot->d_inode->i_op != server->nfs_client->rpc_ops->dir_inode_ops) {
 		dput(mntroot);
 		error = -ESTALE;
 		goto error_splat_super;

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED]
  2007-12-12  2:15                 ` Andrew Morton
  2007-12-12  2:19                   ` Trond Myklebust
@ 2007-12-12  2:24                   ` Maxim Levitsky
  1 sibling, 0 replies; 12+ messages in thread
From: Maxim Levitsky @ 2007-12-12  2:24 UTC (permalink / raw)
  To: Andrew Morton
  Cc: bfields, neilb, rjw, trond.myklebust, gnome42, linux-kernel,
	ebiederm, den, linux-nfs

[-- Attachment #1: Type: text/plain, Size: 2224 bytes --]

On Wednesday 12 December 2007 04:15:59 Andrew Morton wrote:
> On Wed, 12 Dec 2007 04:01:56 +0200 Maxim Levitsky <maximlevitsky@gmail.com> wrote:
> 
> > > 
> > > argh, this is getting bad.
> > > 
> > > Can you please test the below patch asap? Against 2.6.24-rc4 or latest-linus.
> > > 
> > > 
> > > From: Andrew Morton <akpm@linux-foundation.org>
> > > 
> > > Revert
> > > 
> > >     commit 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416
> > >     Author: Eric W. Biederman <ebiederm@xmission.com>
> > >     Date:   Sun Dec 2 00:33:17 2007 +1100
> > > 
> > 
> > Hi,
> > 
> > I finally solved this.
> > There is no need to revert 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416.
> > 
> > It was actually a deadly mixture of 3 bugs:
> > 
> > 1) Stale handles - Trond's patch fixes it, but I somehow missed it.
> 
> What is "Trond's patch" and where is it now?
Message-Id: <1197053179.7532.23.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
It is in beginning of that thread.
I attached it for reference.

> 
> > 2) Empty /proc/fs/nfsd (which causes nfs4 failures, and masks the bug #1, since with it the subfolders are just empty)
> > 	[PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate fixes it
> 
> That patch was merged into Linus's tree just prior to 2.6.24-rc5.
Yes I know, I was testing -rc4, but I put this patch in
> 
> > 3) And as I expected, a userspace bug, which believe me or not has exactly the same symptoms
> > like #2 (and doesn't depend on others)
> > 
> > It is a wrong boot script in BLFS that starts nfs daemons in wrong order.
> > So there are 3 bugs and each masks the former one :-) .
> > 
> > I revised boot script to use recommended order like in nfs-utils.
> > And finally everything works....
> > 
> 
> Well...  It's relatively common that insufficiently-robust userspace works
> OK under kernel N and then stops working under kernel N+1.  Even though the
> fault lies with userspace, we prefer that it continues to work.
> 
> But it doesn't sounds like that'll be a concern here.
Well, no.
This boot script doesn't work in 2.6.23 ether.
I just didn't use nfs4, and I thought that I don't understand how crossmnt/nohide work.
> 
> Thanks for the followup.
> 


Best regards,
	Maxim Levitsky

[-- Attachment #2: linux-2.6.24-001-fix_submounts.dif --]
[-- Type: text/x-diff, Size: 1025 bytes --]

From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: 
Subject: NFS: Fix NFS mountpoint crossing...
Message-Id: <1197053179.7532.24.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit

The check that was added to nfs_xdev_get_sb() to work around broken
servers, works fine for NFSv2, but causes mountpoint crossing on NFSv3 to
always return ESTALE.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
---

 fs/nfs/super.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 2426e71..ea92920 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1475,7 +1475,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type, int flags,
 		error = PTR_ERR(mntroot);
 		goto error_splat_super;
 	}
-	if (mntroot->d_inode->i_op != &nfs_dir_inode_operations) {
+	if (mntroot->d_inode->i_op != server->nfs_client->rpc_ops->dir_inode_ops) {
 		dput(mntroot);
 		error = -ESTALE;
 		goto error_splat_super;

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED]
       [not found]                     ` <1197425940.27061.1.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
@ 2007-12-12  2:44                       ` Andrew Morton
  0 siblings, 0 replies; 12+ messages in thread
From: Andrew Morton @ 2007-12-12  2:44 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: Maxim Levitsky, bfields, neilb, rjw, gnome42, linux-kernel,
	ebiederm, den, linux-nfs

On Tue, 11 Dec 2007 21:19:00 -0500 Trond Myklebust <trond.myklebust@fys.uio.no> wrote:

> 
> On Tue, 2007-12-11 at 18:15 -0800, Andrew Morton wrote:
> > > 1) Stale handles - Trond's patch fixes it, but I somehow missed it.
> > 
> > What is "Trond's patch" and where is it now?
> 
> He means the one this whole thread started with. See attachment...
> 

Thanks.

Four days later that is not in mainline, not in -mm, not in git-nfs. 
There is some disconnect here.


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2007-12-12  2:45 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <fa4052ef0712062045o743a2666u3562a3569c1aa989@mail.gmail.com>
     [not found] ` <200712090220.44543.maximlevitsky@gmail.com>
     [not found]   ` <18268.51342.353887.178014@notabene.brown>
     [not found]     ` <18268.51342.353887.178014-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2007-12-10 14:19       ` 2.6.24-rc3-git4 NFS crossmnt regression Maxim Levitsky
2007-12-10 14:36         ` J. Bruce Fields
2007-12-10 15:05           ` Maxim Levitsky
2007-12-10 15:47             ` J. Bruce Fields
2007-12-10 18:22               ` Maxim Levitsky
2007-12-10 21:03             ` Andrew Morton
2007-12-12  2:01               ` 2.6.24-rc3-git4 NFS crossmnt regression [SOLVED] Maxim Levitsky
2007-12-12  2:15                 ` Andrew Morton
2007-12-12  2:19                   ` Trond Myklebust
     [not found]                     ` <1197425940.27061.1.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2007-12-12  2:44                       ` Andrew Morton
2007-12-12  2:24                   ` Maxim Levitsky
2007-12-10 19:51         ` 2.6.24-rc3-git4 NFS crossmnt regression Shane

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox