[pnfs] [PATCH] pnfs: initialize ds_[rw]size only after the layout driver has registered
Labiaga, Ricardo
Ricardo.Labiaga at netapp.com
Wed Jan 2 17:35:14 EST 2008
Hi Dean,
As I understand it, Benny is maintaining the new "golden" repository at:
git://linux-nfs.org/~bhalevy/linux-pnfs.git
I have a clone and track the following branches: nfs41 and pnfs. I see
there are other branches. Private to Benny's work?
At least I am working under that understanding based on our last pNFS
concall.
- ricardo
> -----Original Message-----
> From: Dean Hildebrand [mailto:seattleplus at gmail.com]
> Sent: Wednesday, January 02, 2008 1:33 PM
> To: Benny Halevy
> Cc: pnfs at linux-nfs.org
> Subject: Re: [pnfs] [PATCH] pnfs: initialize ds_[rw]size only
> after the layout driver has registered
>
> I'm confused with the large numbers of git repositories that we now
> have. My understanding of the process we were using (most
> recently) for
> 2.6.18 was
> 1. Make change in local repository
> 2. "git send-email --to pnfs at linux-nfs.org ..." your changes
> 3. Andy or Bruce would apply the patches to the pNFS
> repository (or do a
> git pull I guess)
>
> If this is still the process, what is the git repository I
> should pull
> from for step 1 and then have andy/bruce push to for step 3? Is it
> Benny's? Benny, are the patches you sending out in your local
> repository or the one you created at citi? Once all of the
> patches are
> approved, to which git tree will they be applied?
>
> If someone knows, can they update the wiki?
> Dean
>
> Benny Halevy wrote:
> > Currently, nfs_server_set_fsinfo, which sets the DS I/O
> sizes, is being called
> > before pnfs has been initialized.
> >
> > Signed-off-by: Benny Halevy <bhalevy at panasas.com>
> > ---
> > fs/nfs/client.c | 15 ---------------
> > fs/nfs/pnfs.c | 22 ++++++++++++++++++++++
> > fs/nfs/pnfs.h | 1 +
> > fs/nfs/super.c | 1 +
> > 4 files changed, 24 insertions(+), 15 deletions(-)
> >
> > diff --git a/fs/nfs/client.c b/fs/nfs/client.c
> > index f96aa40..6db3b83 100644
> > --- a/fs/nfs/client.c
> > +++ b/fs/nfs/client.c
> > @@ -620,9 +620,6 @@ error:
> > static void nfs_server_set_fsinfo(struct nfs_server
> *server, struct nfs_fsinfo *fsinfo)
> > {
> > unsigned long max_rpc_payload;
> > -#ifdef CONFIG_PNFS
> > - unsigned long dssize;
> > -#endif
> >
> > /* Work out a lot of parameters */
> > if (server->rsize == 0)
> > @@ -652,18 +649,6 @@ static void
> nfs_server_set_fsinfo(struct nfs_server *server, struct nfs_fsinfo *
> > #ifdef CONFIG_PNFS
> > /* Save the layout type for use during init of layout driver */
> > server->pnfs_fs_ltype = fsinfo->layoutclass;
> > -
> > - /* Set buffer size for data servers */
> > - dssize = pnfs_getiosize(server);
> > - if (dssize > 0) {
> > - server->ds_rsize = server->ds_wsize =
> nfs_block_size(dssize, NULL);
> > - server->ds_rpages = server->ds_wpages =
> (server->ds_rsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
> > - } else {
> > - server->ds_wsize = server->wsize;
> > - server->ds_rsize = server->rsize;
> > - server->ds_rpages = server->rpages;
> > - server->ds_wpages = server->wpages;
> > - }
> > #endif /* CONFIG_PNFS */
> >
> > server->wtmult = nfs_block_bits(fsinfo->wtmult, NULL);
> > diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> > index ca99c44..d49f9ce 100644
> > --- a/fs/nfs/pnfs.c
> > +++ b/fs/nfs/pnfs.c
> > @@ -46,6 +46,8 @@
> > #include <linux/pnfs_xdr.h>
> > #include <linux/nfs4_pnfs.h>
> >
> > +#include "internal.h"
> > +
> > #include "nfs4_fs.h"
> > #include "pnfs.h"
> >
> > @@ -859,6 +861,26 @@ pnfs_getiosize(struct nfs_server *server)
> > return ld->ld_policy_ops->get_blocksize(mounttype);
> > }
> >
> > +void
> > +pnfs_set_ds_iosize(struct nfs_server *server)
> > +{
> > + unsigned dssize = pnfs_getiosize(server);
> > +
> > + /* Set buffer size for data servers */
> > + if (dssize > 0) {
> > + server->ds_rsize = server->ds_wsize =
> > + nfs_block_size(dssize, NULL);
> > + server->ds_rpages = server->ds_wpages =
> > + (server->ds_rsize + PAGE_CACHE_SIZE - 1) >>
> > + PAGE_CACHE_SHIFT;
> > + } else {
> > + server->ds_wsize = server->wsize;
> > + server->ds_rsize = server->rsize;
> > + server->ds_rpages = server->rpages;
> > + server->ds_wpages = server->wpages;
> > + }
> > +}
> > +
> > /* Invoked by all non-NFSv4 I/O layout drivers to mark
> pages for commit
> > */
> > static void
> > diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
> > index 50e3797..bb7b091 100644
> > --- a/fs/nfs/pnfs.h
> > +++ b/fs/nfs/pnfs.h
> > @@ -46,6 +46,7 @@ int pnfs_enabled_sb(struct nfs_server *nfss);
> > int pnfs_use_nfsv4_wproto(struct inode *inode, ssize_t count);
> > int pnfs_use_nfsv4_rproto(struct inode *inode, ssize_t count);
> > unsigned int pnfs_getiosize(struct nfs_server *server);
> > +void pnfs_set_ds_iosize(struct nfs_server *server);
> > int pnfs_commit(struct inode *inode, struct list_head
> *head, int sync, struct nfs_write_data *data);
> > int pnfs_try_to_commit(struct inode *, struct
> nfs_write_data *, struct list_head *, int);
> > int pnfs_wsize(struct inode *, unsigned int, struct
> nfs_write_data *);
> > diff --git a/fs/nfs/super.c b/fs/nfs/super.c
> > index b4aecb1..bb6ffa2 100644
> > --- a/fs/nfs/super.c
> > +++ b/fs/nfs/super.c
> > @@ -1705,6 +1705,7 @@ int nfs4_init_pnfs(struct super_block
> *sb, struct nfs_server *server,
> > switch (clp->cl_minorversion) {
> > case 1:
> > set_pnfs_layoutdriver(sb, fh, server->pnfs_fs_ltype);
> > + pnfs_set_ds_iosize(server);
> > break;
> > case 0:
> > break;
> >
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>
More information about the pNFS
mailing list