Linux NFS development
 help / color / mirror / Atom feed
From: Tom Haynes <thomas.haynes@primarydata.com>
To: Anna Schumaker <Anna.Schumaker@netapp.com>
Cc: Trond Myklebust <Trond.Myklebust@primarydata.com>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH v2 11/49] pnfs: Add nfs_rpc_ops in calls to nfs_initiate_pgio
Date: Mon, 5 Jan 2015 10:26:31 -0800	[thread overview]
Message-ID: <20150105182631.GA3268@kitty.kitty> (raw)
In-Reply-To: <54AAD37C.9050401@Netapp.com>

On Mon, Jan 05, 2015 at 01:10:04PM -0500, Anna Schumaker wrote:
> Hey Tom,
> 
> On 12/24/2014 02:12 AM, Tom Haynes wrote:
> > Signed-off-by: Tom Haynes <loghyr@primarydata.com>
> > ---
> >  fs/nfs/filelayout/filelayout.c | 4 ++--
> >  fs/nfs/internal.h              | 1 +
> >  fs/nfs/pagelist.c              | 6 ++++--
> >  fs/nfs/read.c                  | 3 ++-
> >  fs/nfs/write.c                 | 3 ++-
> >  include/linux/nfs_page.h       | 1 +
> >  6 files changed, 12 insertions(+), 6 deletions(-)
> > 
> > diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c
> > index bc36ed3..25c4896 100644
> > --- a/fs/nfs/filelayout/filelayout.c
> > +++ b/fs/nfs/filelayout/filelayout.c
> > @@ -501,7 +501,7 @@ filelayout_read_pagelist(struct nfs_pgio_header *hdr)
> >  	hdr->mds_offset = offset;
> >  
> >  	/* Perform an asynchronous read to ds */
> > -	nfs_initiate_pgio(ds_clnt, hdr,
> > +	nfs_initiate_pgio(ds_clnt, hdr, NFS_PROTO(hdr->inode),
> >  			    &filelayout_read_call_ops, 0, RPC_TASK_SOFTCONN);
> >  	return PNFS_ATTEMPTED;
> >  }
> > @@ -542,7 +542,7 @@ filelayout_write_pagelist(struct nfs_pgio_header *hdr, int sync)
> >  	hdr->args.offset = filelayout_get_dserver_offset(lseg, offset);
> >  
> >  	/* Perform an asynchronous write */
> > -	nfs_initiate_pgio(ds_clnt, hdr,
> > +	nfs_initiate_pgio(ds_clnt, hdr, NFS_PROTO(hdr->inode),
> >  				    &filelayout_write_call_ops, sync,
> >  				    RPC_TASK_SOFTCONN);
> >  	return PNFS_ATTEMPTED;
> > diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
> > index 5543850..1d15ffa 100644
> > --- a/fs/nfs/internal.h
> > +++ b/fs/nfs/internal.h
> > @@ -251,6 +251,7 @@ void nfs_pgio_header_free(struct nfs_pgio_header *);
> >  void nfs_pgio_data_destroy(struct nfs_pgio_header *);
> >  int nfs_generic_pgio(struct nfs_pageio_descriptor *, struct nfs_pgio_header *);
> >  int nfs_initiate_pgio(struct rpc_clnt *, struct nfs_pgio_header *,
> > +		      const struct nfs_rpc_ops *,
> >  		      const struct rpc_call_ops *, int, int);
> >  void nfs_free_request(struct nfs_page *req);
> >  
> > diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
> > index 2b5e769..35a2626 100644
> > --- a/fs/nfs/pagelist.c
> > +++ b/fs/nfs/pagelist.c
> > @@ -597,6 +597,7 @@ static void nfs_pgio_prepare(struct rpc_task *task, void *calldata)
> >  }
> >  
> >  int nfs_initiate_pgio(struct rpc_clnt *clnt, struct nfs_pgio_header *hdr,
> > +		      const struct nfs_rpc_ops *rpc_ops,
> >  		      const struct rpc_call_ops *call_ops, int how, int flags)
> >  {
> >  	struct rpc_task *task;
> > @@ -616,7 +617,7 @@ int nfs_initiate_pgio(struct rpc_clnt *clnt, struct nfs_pgio_header *hdr,
> >  	};
> >  	int ret = 0;
> >  
> > -	hdr->rw_ops->rw_initiate(hdr, &msg, &task_setup_data, how);
> > +	hdr->rw_ops->rw_initiate(hdr, &msg, rpc_ops, &task_setup_data, how);
> >  
> >  	dprintk("NFS: %5u initiated pgio call "
> >  		"(req %s/%llu, %u bytes @ offset %llu)\n",
> > @@ -792,7 +793,8 @@ static int nfs_generic_pg_pgios(struct nfs_pageio_descriptor *desc)
> >  	ret = nfs_generic_pgio(desc, hdr);
> >  	if (ret == 0)
> >  		ret = nfs_initiate_pgio(NFS_CLIENT(hdr->inode),
> > -					hdr, desc->pg_rpc_callops,
> > +					hdr, NFS_PROTO(hdr->inode),
> > +					desc->pg_rpc_callops,
> >  					desc->pg_ioflags, 0);
> >  	return ret;
> >  }
> > diff --git a/fs/nfs/read.c b/fs/nfs/read.c
> > index c91a479..092ab49 100644
> > --- a/fs/nfs/read.c
> > +++ b/fs/nfs/read.c
> > @@ -168,13 +168,14 @@ out:
> >  
> >  static void nfs_initiate_read(struct nfs_pgio_header *hdr,
> >  			      struct rpc_message *msg,
> > +			      const struct nfs_rpc_ops *rpc_ops,
> >  			      struct rpc_task_setup *task_setup_data, int how)
> >  {
> >  	struct inode *inode = hdr->inode;
> >  	int swap_flags = IS_SWAPFILE(inode) ? NFS_RPC_SWAPFLAGS : 0;
> >  
> >  	task_setup_data->flags |= swap_flags;
> > -	NFS_PROTO(inode)->read_setup(hdr, msg);
> > +	rpc_ops->read_setup(hdr, msg);
> >  }
> >  
> >  static void
> > diff --git a/fs/nfs/write.c b/fs/nfs/write.c
> > index af3af68..e5ed21c 100644
> > --- a/fs/nfs/write.c
> > +++ b/fs/nfs/write.c
> > @@ -1240,13 +1240,14 @@ static int flush_task_priority(int how)
> >  
> >  static void nfs_initiate_write(struct nfs_pgio_header *hdr,
> >  			       struct rpc_message *msg,
> > +			       const struct nfs_rpc_ops *rpc_ops,
> >  			       struct rpc_task_setup *task_setup_data, int how)
> >  {
> >  	struct inode *inode = hdr->inode;
> >  	int priority = flush_task_priority(how);
> >  
> >  	task_setup_data->priority = priority;
> > -	NFS_PROTO(inode)->write_setup(hdr, msg);
> > +	rpc_ops->write_setup(hdr, msg);
> >  
> >  	nfs4_state_protect_write(NFS_SERVER(inode)->nfs_client,
> >  				 &task_setup_data->rpc_client, msg, hdr);
> 
> When I compile without NFS v4 I get:
> 
> fs/nfs/write.c: In function 'nfs_initiate_write':
> fs/nfs/write.c:1246:16: error: unused variable 'inode' [-Werror=unused-variable]
>   struct inode *inode = hdr->inode;
> 
> The call to nfs4_state_protect_write() is getting optimized out?
> 
> Anna

Hi Anna,

If it is getting optimized out, then the issue is a compiler bug.

I.e., if it optimized out the call, then it should optimize out the
variable and not whine about it.

If you tell it not to optimize, does the warning go away?

Tom

> 
> > diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h
> > index 6c3e06e..4c3aa80 100644
> > --- a/include/linux/nfs_page.h
> > +++ b/include/linux/nfs_page.h
> > @@ -69,6 +69,7 @@ struct nfs_rw_ops {
> >  			struct inode *);
> >  	void (*rw_result)(struct rpc_task *, struct nfs_pgio_header *);
> >  	void (*rw_initiate)(struct nfs_pgio_header *, struct rpc_message *,
> > +			    const struct nfs_rpc_ops *,
> >  			    struct rpc_task_setup *, int);
> >  };
> >  
> > 
> 

  reply	other threads:[~2015-01-05 18:26 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-24  7:12 [PATCH v2 00/49] *** Add Flexfile Layout Module *** Tom Haynes
2014-12-24  7:12 ` [PATCH v2 01/49] pnfs: Prepare for flexfiles by pulling out common code Tom Haynes
2014-12-24  7:12 ` [PATCH v2 02/49] pnfs: Do not grab the commit_info lock twice when rescheduling writes Tom Haynes
2014-12-24  7:12 ` [PATCH v2 03/49] nfs41: pull data server cache from file layout to generic pnfs Tom Haynes
2014-12-24  7:12 ` [PATCH v2 04/49] nfs41: pull nfs4_ds_connect " Tom Haynes
2015-01-05 15:51   ` Anna Schumaker
2015-01-05 19:36     ` Tom Haynes
2014-12-24  7:12 ` [PATCH v2 05/49] nfs41: pull decode_ds_addr " Tom Haynes
2014-12-24  7:12 ` [PATCH v2 06/49] nfs41: allow LD to choose DS connection auth flavor Tom Haynes
2014-12-24  7:12 ` [PATCH v2 07/49] nfs41: move file layout macros to generic pnfs Tom Haynes
2014-12-24  7:12 ` [PATCH v2 08/49] nfsv3: introduce nfs3_set_ds_client Tom Haynes
2015-01-05 16:17   ` Anna Schumaker
2015-01-05 16:25     ` Anna Schumaker
2015-01-06  0:02       ` Tom Haynes
2015-01-06 15:11         ` Anna Schumaker
2015-01-05 23:23     ` Tom Haynes
2014-12-24  7:12 ` [PATCH v2 09/49] nfs41: allow LD to choose DS connection version/minor_version Tom Haynes
2014-12-24  7:12 ` [PATCH v2 10/49] nfs41: create NFSv3 DS connection if specified Tom Haynes
2015-01-05 16:57   ` Anna Schumaker
2015-01-06  0:13     ` Tom Haynes
2014-12-24  7:12 ` [PATCH v2 11/49] pnfs: Add nfs_rpc_ops in calls to nfs_initiate_pgio Tom Haynes
2015-01-05 18:10   ` Anna Schumaker
2015-01-05 18:26     ` Tom Haynes [this message]
2015-01-05 18:35       ` Anna Schumaker
2014-12-24  7:12 ` [PATCH v2 12/49] nfs: allow different protocol in nfs_initiate_commit Tom Haynes
2014-12-24  7:12 ` [PATCH v2 13/49] nfs4: pass slot table to nfs40_setup_sequence Tom Haynes
2014-12-24  7:12 ` [PATCH v2 14/49] nfs4: export nfs4_sequence_done Tom Haynes
2015-01-05 20:11   ` Anna Schumaker
2015-01-06  0:31     ` Tom Haynes
2014-12-24  7:12 ` [PATCH v2 15/49] nfs: allow to specify cred in nfs_initiate_pgio Tom Haynes
2014-12-24  7:12 ` [PATCH v2 16/49] NFSv4.1/NFSv3: Add pNFS callbacks for nfs3_(read|write|commit)_done() Tom Haynes
2014-12-24  7:12 ` [PATCH v2 17/49] sunrpc: add rpc_count_iostats_idx Tom Haynes
2014-12-24  7:12 ` [PATCH v2 18/49] nfs: set hostname when creating nfsv3 ds connection Tom Haynes
2014-12-24  7:12 ` [PATCH v2 19/49] nfs/flexclient: export pnfs_layoutcommit_inode Tom Haynes
2014-12-24  7:12 ` [PATCH v2 20/49] nfs41: close a small race window when adding new layout to global list Tom Haynes
2015-01-05 20:59   ` Anna Schumaker
     [not found]     ` <CAHQdGtTdb5Uhm=1GR3Oh3DU-HNRN+f6WvRocc4fV6OyurD7t9Q@mail.gmail.com>
2015-01-05 21:31       ` Anna Schumaker
2014-12-24  7:13 ` [PATCH v2 21/49] nfs41: serialize first layoutget of a file Tom Haynes
2014-12-24  7:13 ` [PATCH v2 22/49] nfs: save server READ/WRITE/COMMIT status Tom Haynes
2015-01-05 21:41   ` Anna Schumaker
2015-01-06 11:02     ` Peng Tao
2014-12-24  7:13 ` [PATCH v2 23/49] nfs41: pass iomode through layoutreturn args Tom Haynes
2014-12-24  7:13 ` [PATCH v2 24/49] nfs41: make a helper function to send layoutreturn Tom Haynes
2014-12-24  7:13 ` [PATCH v2 25/49] nfs41: add a helper to mark layout for return Tom Haynes
2014-12-24  7:13 ` [PATCH v2 26/49] nfs41: don't use a layout if it is marked for returning Tom Haynes
2014-12-24  7:13 ` [PATCH v2 27/49] nfs41: send layoutreturn in last put_lseg Tom Haynes
2014-12-24  7:13 ` [PATCH v2 28/49] nfs41: clear NFS_LAYOUT_RETURN if layoutreturn is sent or failed to send Tom Haynes
2014-12-24  7:13 ` [PATCH v2 29/49] nfs/filelayout: use pnfs_error_mark_layout_for_return Tom Haynes
2014-12-24  7:13 ` [PATCH v2 30/49] nfs: introduce pg_cleanup op for pgio descriptors Tom Haynes
2014-12-24  7:13 ` [PATCH v2 31/49] pnfs: release lseg in pnfs_generic_pg_cleanup Tom Haynes
2014-12-24  7:13 ` [PATCH v2 32/49] nfs: handle overlapping reqs in lock_and_join Tom Haynes
2014-12-24  7:13 ` [PATCH v2 33/49] nfs: rename pgio header ds_idx to ds_commit_idx Tom Haynes
2014-12-24  7:13 ` [PATCH v2 34/49] pnfs: pass ds_commit_idx through the commit path Tom Haynes
2014-12-24  7:13 ` [PATCH v2 35/49] nfs: add mirroring support to pgio layer Tom Haynes
2015-01-06 18:11   ` Anna Schumaker
2015-01-06 18:27     ` Weston Andros Adamson
2015-01-06 18:32       ` Anna Schumaker
2015-01-06 18:38         ` Weston Andros Adamson
2014-12-24  7:13 ` [PATCH v2 36/49] nfs: mirroring support for direct io Tom Haynes
2014-12-24  7:13 ` [PATCH v2 37/49] pnfs: fail comparison when bucket verifier not set Tom Haynes
2014-12-24  7:13 ` [PATCH v2 38/49] nfs41: add a debug warning if we destroy an unempty layout Tom Haynes
2014-12-24  7:13 ` [PATCH v2 39/49] nfs: only reset desc->pg_mirror_idx when mirroring is supported Tom Haynes
2014-12-24  7:13 ` [PATCH v2 40/49] nfs: add nfs_pgio_current_mirror helper Tom Haynes
2014-12-24  7:13 ` [PATCH v2 41/49] pnfs: allow LD to ask to resend read through pnfs Tom Haynes
2014-12-24  7:13 ` [PATCH v2 42/49] nfs41: add range to layoutreturn args Tom Haynes
2014-12-24  7:13 ` [PATCH v2 43/49] nfs41: allow async version layoutreturn Tom Haynes
2015-01-06 18:59   ` Anna Schumaker
2015-01-06 19:41     ` Tom Haynes
2014-12-24  7:13 ` [PATCH v2 44/49] nfs41: introduce NFS_LAYOUT_RETURN_BEFORE_CLOSE Tom Haynes
2014-12-24  7:13 ` [PATCH v2 45/49] nfs/flexfiles: send layoutreturn before freeing lseg Tom Haynes
2014-12-24  7:13 ` [PATCH v2 46/49] nfs41: add NFS_LAYOUT_RETRY_LAYOUTGET to layout header flags Tom Haynes
2014-12-24  7:13 ` [PATCH v2 47/49] nfs: add a helper to set NFS_ODIRECT_RESCHED_WRITES to direct writes Tom Haynes
2014-12-24  7:13 ` [PATCH v2 48/49] nfs41: wait for LAYOUTRETURN before retrying LAYOUTGET Tom Haynes
2014-12-24  7:13 ` [PATCH v2 49/49] pnfs/flexfiles: Add the FlexFile Layout Driver Tom Haynes
2015-01-06 19:59   ` Anna Schumaker
2015-01-06 20:42     ` Tom Haynes
2014-12-24  7:17 ` [PATCH v2 00/49] *** Add Flexfile Layout Module *** Tom Haynes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150105182631.GA3268@kitty.kitty \
    --to=thomas.haynes@primarydata.com \
    --cc=Anna.Schumaker@netapp.com \
    --cc=Trond.Myklebust@primarydata.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox