From: Boaz Harrosh Subject: Re: [PATCH 04/16] SQUASHME pnfs-submit: filelayout: use new alloc/free_layout API Date: Mon, 12 Jul 2010 19:32:44 +0300 Message-ID: <4C3B43AC.4050203@panasas.com> References: <1278542063-4009-1-git-send-email-andros@netapp.com> <1278542063-4009-2-git-send-email-andros@netapp.com> <1278542063-4009-3-git-send-email-andros@netapp.com> <1278542063-4009-4-git-send-email-andros@netapp.com> <1278542063-4009-5-git-send-email-andros@netapp.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Cc: bhalevy@panasas.com, linux-nfs@vger.kernel.org To: andros@netapp.com Return-path: Received: from daytona.panasas.com ([67.152.220.89]:2410 "EHLO daytona.int.panasas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755809Ab0GLQcs (ORCPT ); Mon, 12 Jul 2010 12:32:48 -0400 In-Reply-To: <1278542063-4009-5-git-send-email-andros@netapp.com> Sender: linux-nfs-owner@vger.kernel.org List-ID: On 07/08/2010 01:34 AM, andros@netapp.com wrote: > From: Andy Adamson > > Signed-off-by: Andy Adamson > --- > fs/nfs/nfs4filelayout.c | 15 +++++++++------ > fs/nfs/nfs4filelayout.h | 7 +++++++ > 2 files changed, 16 insertions(+), 6 deletions(-) > > diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c > index 57a0010..b49ccf4 100644 > --- a/fs/nfs/nfs4filelayout.c > +++ b/fs/nfs/nfs4filelayout.c > @@ -301,20 +301,23 @@ filelayout_write_pagelist(struct pnfs_layout_type *layoutid, > * will use the pnfs_layout_type type to refer to the layout for this > * inode from now on. > */ > -static void * > +static struct pnfs_layout_type * > filelayout_alloc_layout(struct inode *inode) > { > + struct nfs4_filelayout *flp; > + > dprintk("NFS_FILELAYOUT: allocating layout\n"); > - return kzalloc(sizeof(struct nfs4_filelayout), GFP_KERNEL); > + flp = kzalloc(sizeof(struct nfs4_filelayout), GFP_KERNEL); > + return flp ? &flp->fl_layout : NULL; > } > > /* Free a filelayout layout structure > */ > static void > -filelayout_free_layout(void *layoutid) > +filelayout_free_layout(struct pnfs_layout_type *lo) > { > dprintk("NFS_FILELAYOUT: freeing layout\n"); > - kfree(layoutid); > + kfree(lo); + kfree(FILE_LO(lo)); > } > > /* > @@ -471,7 +474,7 @@ static struct pnfs_layout_segment * > filelayout_alloc_lseg(struct pnfs_layout_type *layoutid, > struct nfs4_pnfs_layoutget_res *lgr) > { > - struct nfs4_filelayout *flo = PNFS_LD_DATA(layoutid); > + struct nfs4_filelayout *flo = FILE_LO(layoutid); > struct pnfs_layout_segment *lseg; > int rc; > > @@ -693,7 +696,7 @@ filelayout_commit(struct pnfs_layout_type *layoutid, int sync, > ssize_t > filelayout_get_stripesize(struct pnfs_layout_type *layoutid) > { > - struct nfs4_filelayout *flo = PNFS_LD_DATA(layoutid); > + struct nfs4_filelayout *flo = FILE_LO(layoutid); > > return flo->stripe_unit; > } > diff --git a/fs/nfs/nfs4filelayout.h b/fs/nfs/nfs4filelayout.h > index de8391f..fd25e76 100644 > --- a/fs/nfs/nfs4filelayout.h > +++ b/fs/nfs/nfs4filelayout.h > @@ -68,6 +68,7 @@ struct nfs4_filelayout_segment { > }; > > struct nfs4_filelayout { > + struct pnfs_layout_type fl_layout; > int uncommitted_write; > loff_t last_commit_size; > u64 layout_id; > @@ -77,6 +78,12 @@ struct nfs4_filelayout { > extern struct nfs_fh * > nfs4_fl_select_ds_fh(struct pnfs_layout_segment *lseg, loff_t offset); > > +static inline struct nfs4_filelayout * > +FILE_LO(struct pnfs_layout_type *lo) > +{ > + return container_of(lo, struct nfs4_filelayout, fl_layout); > +} > + > extern struct pnfs_client_operations *pnfs_callback_ops; > > extern void nfs4_fl_free_deviceid_callback(struct kref *); Boaz