Re: [PATCH] nfs4: client: do not send empty SETATTR after OPEN_CREATE

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

 



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




[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