[pnfs] [PATCH 19/20] 2.6-latest pnfs client no rpc nfs page cache cleanup

Dean Hildebrand seattleplus at gmail.com
Mon Dec 3 16:23:04 EST 2007


>
>
>  so pnfs_read_done calls data->call_ops->rpc_call_done() which is 
> either nfs_readpage_result_full() or nfs_readpage_result_partial()
> both of these functions call nfs_readpage_result() which in turn 
> calls  NFS_PROTO(data->inode)->read_done() which is pnfs4_read_done, 
> which does the right thing for the NO_RPC path when the PNFS_NO_RPC 
> flag is set.
Ok, I missed a 4.  How confusing is it to have a function pnfs_read_done 
and pnfs4_read_done.  Done *what* is my question.  It sounds like we 
need to rename some of these functions.  What is each function really 
finishing? 

Dean
>
>
>     If so, just remove the call to the function.
>
>
> nope. then there would be no nfs page cache cleanup on the no-rpc path.
>
> -->Andy
>
>     Dean
>     >
>     >  /*
>     > diff --git a/fs/nfs/read.c b/fs/nfs/read.c
>     > index 4cf47c5..1852434 100644
>     > --- a/fs/nfs/read.c
>     > +++ b/fs/nfs/read.c
>     > @@ -381,6 +381,10 @@ static int nfs_readpage_retry(struct
>     rpc_task *task, struct nfs_read_data *data)
>     >       struct nfs_readargs *argp = &data->args;
>     >       struct nfs_readres *resp = &data->res;
>     >
>     > +#ifdef CONFIG_PNFS
>     > +     if (data->pnfsflags & PNFS_NO_RPC)
>     > +             return 0;
>     > +#endif /* CONFIG_PNFS */
>     >       if (resp->eof || resp->count == argp->count)
>     >               return 0;
>     >
>     > diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
>     > index a6f429b..f747637 100644
>     > --- a/include/linux/nfs_xdr.h
>     > +++ b/include/linux/nfs_xdr.h
>     > @@ -1069,7 +1069,7 @@ struct nfs_read_data {
>     >  #ifdef CONFIG_PNFS
>     >  /* pnfsflag values */
>     >  #define PNFS_ISSYNC          0x0001   /* sync I/O request */
>     > -#define PNFS_USE_FULL_CB     0x0002   /* non rpc result
>     callback switch */
>     > +#define PNFS_NO_RPC          0x0002   /* non rpc result
>     callback switch */
>     >  #endif /* CONFIG_PNFS */
>     >
>     >  struct nfs_write_data {
>     >
>
>


More information about the pNFS mailing list