RE: [PATCH v3 03/25] NFS41: Let layoutcommit handle multiple segments

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

 



Hi, Boaz,

> -----Original Message-----
> From: linux-nfs-owner@xxxxxxxxxxxxxxx [mailto:linux-nfs-owner@xxxxxxxxxxxxxxx]
> On Behalf Of Boaz Harrosh
> Sent: Thursday, July 28, 2011 8:12 AM
> To: Jim Rees
> Cc: Trond Myklebust; linux-nfs@xxxxxxxxxxxxxxx; peter honeyman
> Subject: Re: [PATCH v3 03/25] NFS41: Let layoutcommit handle multiple segments
> 
> On 07/27/2011 04:40 PM, Jim Rees wrote:
> > Boaz Harrosh wrote:
> >
> >   On 07/27/2011 01:58 PM, Jim Rees wrote:
> >   >   But I thought for simplicity since this patchset was reviewed then, I've
> >   >   tested with this patch and it works good as well. If you are going to
> >   >   break things up, I can test with the minimal patches and report what is
> >   >   need in Stable. (Is anyone working on it?)
> >   >
> >   > We may have over-squashed that one for block layout.  I can dig up the
> >   > original patches if necessary, but I'm guessing you probably have them.
> >
> >   Please do. Because by now I'm confused. the first I discovered it was
> >   by git diff of a branch that worked. I lost tracked of where the code
> >   was originated from.
> >
> > Here is just the original multiple segments patch.  This is from the
> > 88-patch set I sent out before Bakeathon.  I don't know if this would still
> > apply separately.
> >
> 
> OK Thanks that one looks familiar enough. I'll test just with this one.
As Fred pointed out earlier, this one has some problem of returning a random lseg. I will split the final version and you can test which patch you need for stable.

Cheers,
Tao

> 
> Where did the other changes come from? Is there a Benny's branch that
> have them separated so I can have a look. I suspect I also need the one
> that encodes the last_byte_written.
> 
> Thanks
> Boaz
> 
> > From fc3381fa66adfcee4203b5a55ca6605bcfc8dafb Mon Sep 17 00:00:00 2001
> > From: Peng Tao <bergwolf@xxxxxxxxx>
> > Date: Tue, 31 May 2011 00:42:56 -0400
> > Subject: [PATCH 03/89] pnfs: let layoutcommit code handle multiple segments
> >
> > Some layout driver like block will have multiple segments.
> > Generic code should be able to handle it.
> > ---
> >  fs/nfs/pnfs.c |   15 ++++++++++++---
> >  fs/nfs/pnfs.h |    1 +
> >  2 files changed, 13 insertions(+), 3 deletions(-)
> >
> > diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> > index e3d618b..c18cda0 100644
> > --- a/fs/nfs/pnfs.c
> > +++ b/fs/nfs/pnfs.c
> > @@ -1193,10 +1193,18 @@ pnfs_try_to_read_data(struct nfs_read_data *rdata,
> >  static struct pnfs_layout_segment *pnfs_list_write_lseg(struct inode *inode)
> >  {
> >  	struct pnfs_layout_segment *lseg, *rv = NULL;
> > +	loff_t max_pos = 0;
> > +
> > +	list_for_each_entry(lseg, &NFS_I(inode)->layout->plh_segs, pls_list) {
> > +		if (lseg->pls_range.iomode == IOMODE_RW) {
> > +			if (max_pos < lseg->pls_end_pos)
> > +				max_pos = lseg->pls_end_pos;
> > +			if (test_and_clear_bit(NFS_LSEG_LAYOUTCOMMIT, &lseg->pls_flags))
> > +				rv = lseg;
> > +		}
> > +	}
> > +	rv->pls_end_pos = max_pos;
> >
> > -	list_for_each_entry(lseg, &NFS_I(inode)->layout->plh_segs, pls_list)
> > -		if (lseg->pls_range.iomode == IOMODE_RW)
> > -			rv = lseg;
> >  	return rv;
> >  }
> >
> > @@ -1211,6 +1219,7 @@ pnfs_set_layoutcommit(struct nfs_write_data *wdata)
> >  	if (!test_and_set_bit(NFS_INO_LAYOUTCOMMIT, &nfsi->flags)) {
> >  		/* references matched in nfs4_layoutcommit_release */
> >  		get_lseg(wdata->lseg);
> > +		set_bit(NFS_LSEG_LAYOUTCOMMIT, &wdata->lseg->pls_flags);
> >  		wdata->lseg->pls_lc_cred =
> >  			get_rpccred(wdata->args.context->state->owner->so_cred);
> >  		mark_as_dirty = true;
> > diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
> > index 53819d0..c6a9af2 100644
> > --- a/fs/nfs/pnfs.h
> > +++ b/fs/nfs/pnfs.h
> > @@ -36,6 +36,7 @@
> >  enum {
> >  	NFS_LSEG_VALID = 0,	/* cleared when lseg is recalled/returned */
> >  	NFS_LSEG_ROC,		/* roc bit received from server */
> > +	NFS_LSEG_LAYOUTCOMMIT,	/* layoutcommit bit set for layoutcommit */
> >  };
> >
> >  struct pnfs_layout_segment {
> 
> --
> 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

��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥



[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