Re: [RFC 06/27] pnfs: encode_layoutreturn

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2011-04-20 at 20:26 +0300, Benny Halevy wrote:
> From: Andy Adamson <andros@xxxxxxxxxx>
> 
> Signed-off-by: Andy Adamson <andros@xxxxxxxxxx>
> [fixup layout header pointer for encode_layoutreturn]
> Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>
> ---
>  fs/nfs/nfs4xdr.c |    9 +++++++--
>  fs/nfs/pnfs.h    |    4 ++++
>  2 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
> index 53ea3e5..6b64dd8 100644
> --- a/fs/nfs/nfs4xdr.c
> +++ b/fs/nfs/nfs4xdr.c
> @@ -1927,8 +1927,13 @@ encode_layoutreturn(struct xdr_stream *xdr,
>  		spin_unlock(&args->inode->i_lock);
>  		p = xdr_encode_opaque_fixed(p, &stateid.data,
>  					    NFS4_STATEID_SIZE);
> -		p = reserve_space(xdr, 4);
> -		*p = cpu_to_be32(0);
> +		if (NFS_SERVER(args->inode)->pnfs_curr_ld->encode_layoutreturn) {
> +			NFS_SERVER(args->inode)->pnfs_curr_ld->encode_layoutreturn(
> +				NFS_I(args->inode)->layout, xdr, args);
> +		} else {
> +			p = reserve_space(xdr, 4);
> +			*p = cpu_to_be32(0);
> +		}
>  	}
>  	hdr->nops++;
>  	hdr->replen += decode_layoutreturn_maxsz;
> diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
> index c315109..51dcbc1 100644
> --- a/fs/nfs/pnfs.h
> +++ b/fs/nfs/pnfs.h
> @@ -98,6 +98,10 @@ struct pnfs_layoutdriver_type {
>  
>  	/* device notification methods */
>  	void (*delete_deviceid)(struct nfs4_deviceid *);
> +
> +	void (*encode_layoutreturn) (struct pnfs_layout_hdr *layoutid,
> +				     struct xdr_stream *xdr,
> +				     const struct nfs4_layoutreturn_args *args);

Ugh, no... The only user of this is the OSD layout type, and it just
uses it to pass error information. Why can't we just add that particular
case to the layoutreturn XDR.

>  };
>  
>  struct pnfs_layout_hdr {

-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux