From: Jim Rees <rees@umich.edu>
To: Boaz Harrosh <bharrosh@panasas.com>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>,
linux-nfs@vger.kernel.org, peter honeyman <honey@citi.umich.edu>
Subject: Re: [PATCH v3 03/25] NFS41: Let layoutcommit handle multiple segments
Date: Wed, 27 Jul 2011 19:40:41 -0400 [thread overview]
Message-ID: <20110727234041.GC14319@merit.edu> (raw)
In-Reply-To: <4E307E6F.6090309@panasas.com>
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.
>From fc3381fa66adfcee4203b5a55ca6605bcfc8dafb Mon Sep 17 00:00:00 2001
From: Peng Tao <bergwolf@gmail.com>
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 {
--
1.7.4.2
next prev parent reply other threads:[~2011-07-27 23:40 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-27 18:40 [PATCH v3 00/25] add block layout driver to pnfs client Jim Rees
2011-07-27 18:40 ` [PATCH v3 01/25] pnfs: GETDEVICELIST Jim Rees
2011-07-27 19:33 ` Trond Myklebust
2011-07-28 18:27 ` Benny Halevy
2011-07-27 18:40 ` [PATCH v3 02/25] pnfs: add set-clear layoutdriver interface Jim Rees
2011-07-27 19:36 ` Trond Myklebust
2011-07-27 18:40 ` [PATCH v3 03/25] NFS41: Let layoutcommit handle multiple segments Jim Rees
2011-07-27 20:05 ` Boaz Harrosh
2011-07-27 20:22 ` Trond Myklebust
2011-07-27 20:33 ` Boaz Harrosh
2011-07-27 20:58 ` Jim Rees
2011-07-27 21:09 ` Boaz Harrosh
2011-07-27 23:40 ` Jim Rees [this message]
2011-07-28 0:12 ` Boaz Harrosh
2011-07-28 2:02 ` tao.peng
2011-07-28 3:19 ` Jim Rees
2011-07-27 18:40 ` [PATCH v3 04/25] NFS41: save layoutcommit cred after first successful layoutget Jim Rees
2011-07-27 19:47 ` Trond Myklebust
2011-07-28 3:29 ` tao.peng
2011-07-27 18:40 ` [PATCH v3 05/25] pnfs: ask for layout_blksize and save it in nfs_server Jim Rees
2011-07-27 18:40 ` [PATCH v3 06/25] pnfs: cleanup_layoutcommit Jim Rees
2011-07-27 19:53 ` Trond Myklebust
2011-07-27 20:20 ` Boaz Harrosh
2011-07-27 20:25 ` Trond Myklebust
2011-07-27 20:42 ` Boaz Harrosh
2011-07-27 20:59 ` Trond Myklebust
2011-07-27 21:33 ` Boaz Harrosh
2011-07-27 18:40 ` [PATCH v3 07/25] pnfsblock: add blocklayout Kconfig option, Makefile, and stubs Jim Rees
2011-07-27 18:40 ` [PATCH v3 08/25] pnfsblock: basic extent code Jim Rees
2011-07-27 18:40 ` [PATCH v3 09/25] pnfsblock: add device operations Jim Rees
2011-07-27 18:40 ` [PATCH v3 10/25] pnfsblock: remove " Jim Rees
2011-07-27 18:40 ` [PATCH v3 11/25] pnfsblock: lseg alloc and free Jim Rees
2011-07-27 18:40 ` [PATCH v3 12/25] pnfsblock: merge extents Jim Rees
2011-07-27 18:40 ` [PATCH v3 13/25] pnfsblock: call and parse getdevicelist Jim Rees
2011-07-27 18:40 ` [PATCH v3 14/25] pnfsblock: xdr decode pnfs_block_layout4 Jim Rees
2011-07-27 18:40 ` [PATCH v3 15/25] pnfsblock: bl_find_get_extent Jim Rees
2011-07-27 18:40 ` [PATCH v3 16/25] pnfsblock: add extent manipulation functions Jim Rees
2011-07-27 18:40 ` [PATCH v3 17/25] pnfsblock: merge rw extents Jim Rees
2011-07-27 18:40 ` [PATCH v3 18/25] pnfsblock: encode_layoutcommit Jim Rees
2011-07-27 18:40 ` [PATCH v3 19/25] pnfsblock: cleanup_layoutcommit Jim Rees
2011-07-27 18:40 ` [PATCH v3 20/25] pnfsblock: bl_read_pagelist Jim Rees
2011-07-27 20:09 ` Trond Myklebust
2011-07-27 18:40 ` [PATCH v3 21/25] pnfsblock: bl_write_pagelist Jim Rees
2011-07-27 20:11 ` Trond Myklebust
2011-07-27 18:40 ` [PATCH v3 22/25] pnfsblock: note written INVAL areas for layoutcommit Jim Rees
2011-07-27 20:13 ` Trond Myklebust
2011-07-28 2:30 ` tao.peng
2011-07-27 18:40 ` [PATCH v3 23/25] pnfsblock: use pageio_ops api Jim Rees
2011-07-27 20:15 ` Trond Myklebust
2011-07-28 2:27 ` tao.peng
2011-07-28 3:52 ` Trond Myklebust
2011-07-28 4:10 ` tao.peng
2011-07-27 18:40 ` [PATCH v3 24/25] pnfsblock: write_pagelist handle zero invalid extents Jim Rees
2011-07-27 18:40 ` [PATCH v3 25/25] NFS41: Drop lseg ref before fallthru to MDS Jim Rees
2011-07-27 20:16 ` Trond Myklebust
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=20110727234041.GC14319@merit.edu \
--to=rees@umich.edu \
--cc=Trond.Myklebust@netapp.com \
--cc=bharrosh@panasas.com \
--cc=honey@citi.umich.edu \
--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;
as well as URLs for NNTP newsgroup(s).