On 5/11/16, 18:14, "Tigran Mkrtchyan" <tigran.mkrtchyan@xxxxxxx> wrote: >OPEN_CREATE with EXCLUSIVE4_1 sends initial file permission. >Ignoring fact, that server have indicated that file mod is set, client >will send yet another SETATTR request, but, as mode is already set, >new SETATTR will be empty. This is not a problem, nevertheless >an extra roundtrip and slow open on high latency networks. > >This change is aims to by-pass setattr if there are no attributes defined. > >Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@xxxxxxx> >--- > fs/nfs/nfs4proc.c | 6 ++++++ > 1 file changed, 6 insertions(+) > >diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c >index 327b8c3..f6b278f 100644 >--- a/fs/nfs/nfs4proc.c >+++ b/fs/nfs/nfs4proc.c >@@ -2724,6 +2724,12 @@ static int nfs4_do_setattr(struct inode *inode, struct rpc_cred *cred, > .inode = inode, > }; > int err; >+ /* >+ * a shortcut: it there are no attributes to be updated, do not send setattr at all >+ */ >+ if (sattr->ia_valid == ATTR_OPEN) >+ return 0; >+ There is already a similar optimization in nfs_setattr(), so I don’t think it makes sense to put this in nfs4_do_setattr(). We should rather just fix _nfs4_do_open(). > do { > err = _nfs4_do_setattr(inode, cred, fattr, sattr, state, ilabel, olabel); > switch (err) { >-- >2.5.5 > ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥