Thanks Andy. I've squashed this into my just submitted patchset. Fred On Thu, Jun 10, 2010 at 5:26 PM, <andros@xxxxxxxxxx> wrote: > From: Andy Adamson <andros@xxxxxxxxxx> > > Signed-off-by: Andy Adamson <andros@xxxxxxxxxx> > --- > fs/nfs/write.c | 18 +++++++++++++----- > 1 files changed, 13 insertions(+), 5 deletions(-) > > diff --git a/fs/nfs/write.c b/fs/nfs/write.c > index 482d41e..a47f03d 100644 > --- a/fs/nfs/write.c > +++ b/fs/nfs/write.c > @@ -422,6 +422,17 @@ static void nfs_inode_remove_request(struct nfs_page *req) > nfs_clear_request(req); > nfs_release_request(req); > } > +static void > +nfs_mark_request_nopnfs(struct nfs_page *req) > +{ > + struct pnfs_layout_segment *lseg = req->wb_lseg; > + > + if (req->wb_lseg == NULL) > + return; > + req->wb_lseg = NULL; > + put_lseg(lseg); > + dprintk(" retry through MDS\n"); > +} > > static void > nfs_mark_request_dirty(struct nfs_page *req) > @@ -1463,11 +1474,7 @@ static void nfs_commit_release(void *calldata) > (long long)req_offset(req)); > if (status < 0) { > if (req->wb_lseg) { > - struct pnfs_layout_segment *lseg = req->wb_lseg; > - > - req->wb_lseg = NULL; > - put_lseg(lseg); > - dprintk(" retry through MDS\n"); > + nfs_mark_request_nopnfs(req); > nfs_mark_request_dirty(req); > goto next; > } > @@ -1487,6 +1494,7 @@ static void nfs_commit_release(void *calldata) > } > /* We have a mismatch. Write the page again */ > dprintk(" mismatch\n"); > + nfs_mark_request_nopnfs(req); > nfs_mark_request_dirty(req); > next: > nfs_clear_page_tag_locked(req); > -- > 1.6.6 > > -- > 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 > -- 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