[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