> On Jan 17, 2017, at 11:20, Olga Kornievskaia <kolga@xxxxxxxxxx> wrote: > > Hi Trond, > > Honestly, I haven’t retried the 4.10-rc. I haven’t recalled any patches that dealt with out of order RPCs and attributes and therefore assumed it was still an issue. I will recheck the 4.10-rc if you think the issue should have been addressed. > > I would assume that commit ca0daa277aca ("NFS: Cache aggressively when file is open for writing”) should have helped. Please let me know if that is not the case. >> On Jan 17, 2017, at 11:14 AM, Trond Myklebust <trondmy@xxxxxxxxxxxxxxx> wrote: >> >> Is there a problem with 4.10-rc? >> >>> On Jan 17, 2017, at 09:33, Olga Kornievskaia <aglo@xxxxxxxxx> wrote: >>> >>> Hi Trond, >>> >>> I'd like bring up this issue again as I was asked again that linux >>> nfsv3 client experiences poor performance when it receives >>> out-of-order write rpcs. If a general change to ignore "before" ctime >>> is not acceptable, what about something that is configurable via a >>> sysctl perhaps? >>> >>> On Fri, Apr 1, 2016 at 4:19 PM, Olga Kornievskaia <kolga@xxxxxxxxxx> wrote: >>>> Commit 7c2dad99d60c86ec686b3bfdcb787c450a7ea89f >>>> "Don't let the ctime override attribute barriers" introduced a problem >>>> of invalidating the cache when receiving in-order WRITE replies. Because >>>> ctime is no longer checked then attributes are not updated appropriately >>>> and then leads to mismatch of received "before" with what's stored. >>>> >>>> Given that sending the wcc attributes is not mandatory (and linux >>>> server doesn't), we can ignore the received "before" ctime. It fixes >>>> the current problem and also help when we receive out-of-order WRITEs. >>>> >>>> Signed-off-by: Olga Kornievskaia <kolga@xxxxxxxxxx> >>>> --- >>>> fs/nfs/nfs3xdr.c | 2 -- >>>> 1 file changed, 2 deletions(-) >>>> >>>> diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c >>>> index 267126d..feca07f 100644 >>>> --- a/fs/nfs/nfs3xdr.c >>>> +++ b/fs/nfs/nfs3xdr.c >>>> @@ -732,14 +732,12 @@ static int decode_wcc_attr(struct xdr_stream *xdr, struct nfs_fattr *fattr) >>>> goto out_overflow; >>>> >>>> fattr->valid |= NFS_ATTR_FATTR_PRESIZE >>>> - | NFS_ATTR_FATTR_PRECHANGE >>>> | NFS_ATTR_FATTR_PREMTIME >>>> | NFS_ATTR_FATTR_PRECTIME; >>>> >>>> p = xdr_decode_size3(p, &fattr->pre_size); >>>> p = xdr_decode_nfstime3(p, &fattr->pre_mtime); >>>> xdr_decode_nfstime3(p, &fattr->pre_ctime); >>>> - fattr->pre_change_attr = nfs_timespec_to_change_attr(&fattr->pre_ctime); >>>> >>>> return 0; >>>> out_overflow: >>>> -- >>>> 1.8.3.1 >>>> >>>> -- >>>> 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�����٥