From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Wed, 07 Feb 2007 10:31:55 +0000 Subject: [Cluster-devel] [GFS2 patch] NFS filehandle check In-Reply-To: <1170805924.3850.2.camel@d-cthon07-w-63.Connectathon.ORG> References: <1170805924.3850.2.camel@d-cthon07-w-63.Connectathon.ORG> Message-ID: <1170844315.11001.410.camel@quoit.chygwyn.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, Did you intend to leave that printk in there? Steve. On Tue, 2007-02-06 at 18:52 -0500, Wendy Cheng wrote: > File handle checking error found in '07 NFS connectathon. The fh_type > and fh_len are not necessarily identical. Some of the client machines > could fail mount with stale filehandle without this patch. > > Signed-off-by: S. Wendy Cheng > > ops_export.c | 9 +++++---- > 1 files changed, 5 insertions(+), 4 deletions(-) > > --- linux-git/fs/gfs2/ops_export.c 2007-02-06 01:07:26.000000000 -0500 > +++ linux/fs/gfs2/ops_export.c 2007-02-06 18:10:08.000000000 -0500 > @@ -39,14 +39,15 @@ static struct dentry *gfs2_decode_fh(str > struct gfs2_fh_obj fh_obj; > struct gfs2_inum_host *this, parent; > > - if (fh_type != fh_len) > - return NULL; > - > this = &fh_obj.this; > fh_obj.imode = DT_UNKNOWN; > memset(&parent, 0, sizeof(struct gfs2_inum)); > > - switch (fh_type) { > + if (fh_type != fh_len) { > + printk("warning: fh_type=%d != fh_len=%d\n", fh_type, > fh_len); > + } > + > + switch (fh_len) { > case GFS2_LARGE_FH_SIZE: > parent.no_formal_ino = ((u64)be32_to_cpu(fh[4])) << 32; > parent.no_formal_ino |= be32_to_cpu(fh[5]); > >