All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benny Halevy <bhalevy@panasas.com>
To: andros@netapp.com
Cc: pnfs@linux-nfs.org, linux-nfs@vger.kernel.org
Subject: Re: [pnfs] [PATCH 02/14] SQUASHME pnfs-submit: call get_device_info from filelayout_check
Date: Mon, 12 Apr 2010 16:13:58 +0300	[thread overview]
Message-ID: <4BC31C96.9070002@panasas.com> (raw)
In-Reply-To: <1270756450-5570-3-git-send-email-andros@netapp.com>

On Apr. 08, 2010, 22:53 +0300, andros@netapp.com wrote:
> From: Andy Adamson <andros@netapp.com>
> 
> filelayout_check() validates a LAYOUTGET return including the deviceid.
> If the deviceid is not cached, GETDEVICEINFO is called.
> 
> Once cached, the deviceid will only be uncached upon umount or a return of all
> refering layouts. So, there is no need for a get_device_info call in the I/O
> paths.
> 
> Remove nfs4_file_layout_dsaddr_get.
> 
> Signed-off-by: Andy Adamson <andros@netapp.com>
> ---
>  fs/nfs/nfs4filelayout.c    |   11 +++++++----
>  fs/nfs/nfs4filelayout.h    |    6 ++++--
>  fs/nfs/nfs4filelayoutdev.c |   27 +++------------------------
>  3 files changed, 14 insertions(+), 30 deletions(-)
> 
> diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
> index df6c1d0..ffc3ef2 100644
> --- a/fs/nfs/nfs4filelayout.c
> +++ b/fs/nfs/nfs4filelayout.c
> @@ -413,12 +413,15 @@ filelayout_check_layout(struct pnfs_layout_type *lo,
>  	struct nfs_server *nfss = NFS_SERVER(PNFS_INODE(lo));
>  
>  	dprintk("--> %s\n", __func__);
> -	dsaddr = nfs4_file_layout_dsaddr_get(FILE_MT(PNFS_INODE(lo)),
> +	dsaddr = nfs4_pnfs_device_item_find(FILE_MT(PNFS_INODE(lo))->hlist,
>  					     &fl->dev_id);
>  	if (dsaddr == NULL) {
> -		dprintk("%s NO device for dev_id %s\n",
> +		dsaddr = get_device_info(FILE_MT(PNFS_INODE(lo)), &fl->dev_id);
> +		if (dsaddr == NULL) {
> +			dprintk("%s NO device for dev_id %s\n",
>  				__func__, deviceid_fmt(&fl->dev_id));
> -		goto out;
> +			goto out;
> +		}
>  	}
>  	if (fl->first_stripe_index < 0 ||
>  	    fl->first_stripe_index > dsaddr->stripe_count) {
> @@ -645,7 +648,7 @@ filelayout_commit(struct pnfs_layout_type *layoutid, int sync,
>  	stripesz = filelayout_get_stripesize(layoutid);
>  	dprintk("%s stripesize %Zd\n", __func__, stripesz);
>  
> -	dsaddr = nfs4_file_layout_dsaddr_get(FILE_MT(data->inode),
> +	dsaddr = nfs4_pnfs_device_item_find(FILE_MT(data->inode)->hlist,
>  					     &nfslay->dev_id);
>  	if (dsaddr == NULL) {
>  		data->pdata.pnfs_error = -EIO;
> diff --git a/fs/nfs/nfs4filelayout.h b/fs/nfs/nfs4filelayout.h
> index d003809..3821989 100644
> --- a/fs/nfs/nfs4filelayout.h
> +++ b/fs/nfs/nfs4filelayout.h
> @@ -121,7 +121,9 @@ u32 filelayout_dserver_get_index(loff_t offset,
>  } while (0)
>  
>  struct nfs4_file_layout_dsaddr *
> -nfs4_file_layout_dsaddr_get(struct filelayout_mount_type *,
> -			  struct pnfs_deviceid *);
> +nfs4_pnfs_device_item_find(struct nfs4_pnfs_dev_hlist *hlist,
> +			   struct pnfs_deviceid *dev_id);
> +struct nfs4_file_layout_dsaddr *
> +get_device_info(struct filelayout_mount_type *mt, struct pnfs_deviceid *dev_id);
>  

Andy, this function name is too generic IMO.
better be something more specific to pnfs and file layout.
(I'm committing this patchset as is so we can fix that later)

Benny

>  #endif /* FS_NFS_NFS4FILELAYOUT_H */
> diff --git a/fs/nfs/nfs4filelayoutdev.c b/fs/nfs/nfs4filelayoutdev.c
> index e557679..ebb9845 100644
> --- a/fs/nfs/nfs4filelayoutdev.c
> +++ b/fs/nfs/nfs4filelayoutdev.c
> @@ -52,13 +52,6 @@
>  
>  #define NFSDBG_FACILITY		NFSDBG_PNFS_LD
>  
> -struct nfs4_file_layout_dsaddr *nfs4_file_layout_dsaddr_get(
> -					struct filelayout_mount_type *mt,
> -					struct pnfs_deviceid *dev_id);
> -struct nfs4_file_layout_dsaddr *nfs4_pnfs_device_item_find(
> -					struct nfs4_pnfs_dev_hlist *hlist,
> -					struct pnfs_deviceid *dev_id);
> -
>  void
>  print_ds_list(struct nfs4_multipath *multipath)
>  {
> @@ -665,7 +658,7 @@ decode_and_add_device(struct filelayout_mount_type *mt, struct pnfs_device *dev)
>  /* Retrieve the information for dev_id, add it to the list
>   * of available devices, and return it.
>   */
> -static struct nfs4_file_layout_dsaddr *
> +struct nfs4_file_layout_dsaddr *
>  get_device_info(struct filelayout_mount_type *mt,
>  		struct pnfs_deviceid *dev_id)
>  {
> @@ -737,21 +730,6 @@ out_free:
>  }
>  
>  struct nfs4_file_layout_dsaddr *
> -nfs4_file_layout_dsaddr_get(struct filelayout_mount_type *mt,
> -			    struct pnfs_deviceid *dev_id)
> -{
> -	struct nfs4_file_layout_dsaddr *dsaddr;
> -
> -	read_lock(&mt->hlist->dev_lock);
> -	dsaddr = _device_lookup(mt->hlist, dev_id);
> -	read_unlock(&mt->hlist->dev_lock);
> -
> -	if (dsaddr == NULL)
> -		dsaddr = get_device_info(mt, dev_id);
> -	return dsaddr;
> -}
> -
> -struct nfs4_file_layout_dsaddr *
>  nfs4_pnfs_device_item_find(struct nfs4_pnfs_dev_hlist *hlist,
>  			   struct pnfs_deviceid *dev_id)
>  {
> @@ -798,7 +776,8 @@ nfs4_pnfs_dserver_get(struct pnfs_layout_segment *lseg,
>  	if (!layout)
>  		return 1;
>  
> -	dsaddr = nfs4_file_layout_dsaddr_get(FILE_MT(inode), &layout->dev_id);
> +	dsaddr = nfs4_pnfs_device_item_find(FILE_MT(inode)->hlist,
> +					    &layout->dev_id);
>  	if (dsaddr == NULL)
>  		return 1;
>  


  parent reply	other threads:[~2010-04-12 13:14 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-08 19:53 [PATCH 0/14] pnfs_submit file layout client device management andros
2010-04-08 19:53 ` [PATCH 01/14] SQUASHME: pnfs_submit: remove unused getdevicelist functions andros
2010-04-08 19:53   ` [PATCH 02/14] SQUASHME pnfs-submit: call get_device_info from filelayout_check andros
2010-04-08 19:53     ` [PATCH 03/14] SQUASHME pnfs_submit: remove multilist4 caching andros
2010-04-08 19:54       ` [PATCH 04/14] SQUASHME pnfs_submit: wait for I/O for data server connect andros
2010-04-08 19:54         ` [PATCH 05/14] SQUASHME pnfs_submit: remove xdr macros andros
2010-04-08 19:54           ` [PATCH 06/14] SQUASHME pnfs_submit: remove unused nfs4_pnfs_device_put andros
2010-04-08 19:54             ` [PATCH 07/14] SQUASHME pnfs_submit: change get_device_info parameter andros
2010-04-08 19:54               ` [PATCH 08/14] SQUASHME pnfs_submit: change decode_and_add_device parameter andros
2010-04-08 19:54                 ` [PATCH 09/14] SQUASHME pnfs_submit: change decode_device parameter andros
2010-04-08 19:54                   ` [PATCH 10/14] SQUASHME pnfs_submit: change decode_and_add_ds parameter andros
2010-04-08 19:54                     ` [PATCH 11/14] SQUASHME pnfs_submit: change nfs4_pnfs_ds_add parameter andros
2010-04-08 19:54                       ` [PATCH 12/14] SQUASHME pnfs_submit: remove filelayout CB_NOTIFY_DEVICE support andros
2010-04-08 19:54                         ` [PATCH 13/14] SQUASHME pnfs_submit: stand alone data server cache andros
2010-04-08 19:54                           ` [PATCH 14/14] SQUASHME pnfs_submit: remove kfree from under spinlock andros
2010-04-12 13:24                         ` [pnfs] [PATCH 12/14] SQUASHME pnfs_submit: remove filelayout CB_NOTIFY_DEVICE support Benny Halevy
2010-04-12 13:17               ` [pnfs] [PATCH 07/14] SQUASHME pnfs_submit: change get_device_info parameter Benny Halevy
2010-04-12 13:13     ` Benny Halevy [this message]
2010-04-12 12:12 ` [pnfs] [PATCH 0/14] pnfs_submit file layout client device management J. Bruce Fields
2010-04-12 19:03 ` Benny Halevy

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=4BC31C96.9070002@panasas.com \
    --to=bhalevy@panasas.com \
    --cc=andros@netapp.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=pnfs@linux-nfs.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.