[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