[pnfs] Query about {p,}nfs4_commit_done() calls in rpc_ops...
William A.(Andy) Adamson
andros at citi.umich.edu
Mon Sep 18 15:30:38 EDT 2006
hi fergal
thanks for spotting this - it's a bug (typo..)
i'll submit the change.
-->Andy
> While doing some recent testing with NFSV4_FILES_LAYOUT I encountered
> errors like the following:
>
> =20
>
> NFS: server zen4 error: fileid changed
>
> fsid 0:1b: expected fileid 0xc007, got 0x808009
>
> =20
>
> For my test env the DS fileids are not necessarily (or usually) the same
> as the MDS fileid, which may be why I'm seeing this.
>
> =20
>
> After a little investigation I found that the problem only presented
> itself if I was writing multiple stripes of data. I stuck in a
> dump_stack() call just before this error message was being printed and
> noticed that the call stack was including the call to
> nfs4_commit_done(). Some further debug messages identified that the RPCs
> for which this was being invoked appeared to be targeted at my DS nodes,
> and not my MDS node.
>
> =20
>
> I then noticed that the set of pNFS override rpc_ops (pnfs_v4_clientops)
> was including the nfs4_commit_done() routine as it's commit_done()
> method, whereas the standard NFS rpc_ops are including
> pnfs4_commit_done() as their commit_done() method.
>
> =20
>
> I just tested with the follow change, to reverse the placement of these
> two functions in the respective rpc_ops tables, and I'm not seeing the
> error messages anymore...
>
> =20
>
> --- fs/nfs/nfs4proc.c (revision 26)
>
> +++ fs/nfs/nfs4proc.c (working copy)
>
> @@ -4075,7 +4103,7 @@ struct nfs_rpc_ops nfs_v4_clientops =3D {
>
> .write_setup =3D nfs4_proc_write_setup,
>
> .write_done =3D nfs4_write_done,
>
> .commit_setup =3D nfs4_proc_commit_setup,
>
> - .commit_done =3D pnfs4_commit_done,
>
> + .commit_done =3D nfs4_commit_done,
>
> .file_open =3D nfs_open,
>
> .file_release =3D nfs_release,
>
> .lock =3D nfs4_proc_lock,
>
> @@ -4124,7 +4152,7 @@ struct nfs_rpc_ops pnfs_v4_clientops =3D {
>
> .write_setup =3D nfs4_proc_write_setup,
>
> .write_done =3D pnfs4_write_done,
>
> .commit_setup =3D pnfs4_proc_commit_setup,
>
> - .commit_done =3D nfs4_commit_done,
>
> + .commit_done =3D pnfs4_commit_done,
>
> .file_open =3D nfs_open,
>
> .file_release =3D nfs_release,
>
> .lock =3D nfs4_proc_lock,
>
> =20
>
> [Line numbers differ because I've dropped some debug changes]
>
> =20
>
> So my question is whether or not this is a type-O of some sort, or was
> there a reason for the this being in the code?
>
> =20
>
> Fergal.
>
> --
>
> Fergal.McCarthy at HP.com
>
> (The contents of this message and any attachments to it are confidential
> and may be legally privileged. If you have received this message in
> error you should delete it from your system immediately and advise the
> sender. To any recipient of this message within HP, unless otherwise
> stated, you should consider this message and attachments as "HP
> CONFIDENTIAL".)
> =20
>
> =20
>
>
>
More information about the pNFS
mailing list