Re: [PATCH] nfs41: Correct offset for LAYOUTCOMMIT

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

 



On Thu, 2011-05-19 at 23:45 +0400, Vitaliy Gusev wrote: 
> On 05/19/2011 11:38 PM, Trond Myklebust wrote:
> > On Thu, 2011-05-19 at 23:10 +0400, Vitaliy Gusev wrote:
> >> A client sends offset to MDS as it was seen by DS. As result,
> >> file size after copy is only half of original file size in case
> >> of 2 DS.
> >>
> >> Signed-off-by: Vitaliy Gusev<gusev.vitaliy@xxxxxxxxxxx>
> >> ---
> >>   fs/nfs/nfs4filelayout.c |    1 +
> >>   1 files changed, 1 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
> >> index be79dc9..790eb1d 100644
> >> --- a/fs/nfs/nfs4filelayout.c
> >> +++ b/fs/nfs/nfs4filelayout.c
> >> @@ -167,6 +167,7 @@ filelayout_set_layoutcommit(struct nfs_write_data *wdata)
> >>   	    wdata->res.verf->committed == NFS_FILE_SYNC)
> >>   		return;
> >>
> >> +	wdata->args.offset = wdata->mds_offset;
> >>   	pnfs_set_layoutcommit(wdata);
> >>   	dprintk("%s ionde %lu pls_end_pos %lu\n", __func__, wdata->inode->i_ino,
> >>   		(unsigned long) wdata->lseg->pls_end_pos);
> >
> > Err... Shouldn't we rather be fixing pnfs_set_layoutcommit() to use the
> > mds_offset instead of hacking args.offset?
> 
> I thought about it...  pnfs_set_layoutcommit is a generic code for all 
> type of layouts, but mds_offset is set only for file layout.

If we're going to use the struct nfs_write_data as the parameter to
pnfs_set_layoutcommit, then we can and should require that the fields be
correctly initialised. It's another matter altogether that the choice of
nfs_write_data may have been a poor one if other layouts don't use it.

-- 
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