From patchwork Tue Jul 28 11:13:12 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kinglong Mee X-Patchwork-Id: 6883711 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id D3C41C05AC for ; Tue, 28 Jul 2015 11:13:31 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E9F4F206B5 for ; Tue, 28 Jul 2015 11:13:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0F4A020719 for ; Tue, 28 Jul 2015 11:13:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932443AbbG1LN0 (ORCPT ); Tue, 28 Jul 2015 07:13:26 -0400 Received: from mail-pd0-f176.google.com ([209.85.192.176]:34332 "EHLO mail-pd0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755489AbbG1LNW (ORCPT ); Tue, 28 Jul 2015 07:13:22 -0400 Received: by pdbbh15 with SMTP id bh15so69255721pdb.1 for ; Tue, 28 Jul 2015 04:13:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :content-type:content-transfer-encoding; bh=kbFgY+z6toe9XP8wmBtxGSGJ686Rz30Gqy3LAKuYHdE=; b=hU4P/YKe/fWYlTQX2lUqJzEvXAEiHmQy7+LSuu1+9VIQx8V30cljquiJ2YT2NLMQ/1 6H9XzZvvKbXitD+JJoTDlIiahG5EfPMNMdN0qQWzzd6Ji5T7photz+MEFaVVy9ksRX8t Az17nWsbA9DTJX1+m6s2okmkpuCP9qTy4cisSWwKIsC7c0LOpuccUNu96mhPq8Q235VG PZJx9fuGLOG1CKX59Bmq11uIRzI944njFZZemepVC8LayDmWYWEs0OKm2U9B+0JiiCi8 hW/zhFDTxnGAzLO039U4ejvc1jP30YT15l3dPpe7hgwFHrQH+kz1RjnknT/UkIDX/8Ry sz9g== X-Received: by 10.70.49.73 with SMTP id s9mr79164151pdn.149.1438082001954; Tue, 28 Jul 2015 04:13:21 -0700 (PDT) Received: from [192.168.99.11] ([104.143.41.79]) by smtp.googlemail.com with ESMTPSA id ni14sm29856348pdb.11.2015.07.28.04.13.19 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jul 2015 04:13:21 -0700 (PDT) Message-ID: <55B763C8.1050408@gmail.com> Date: Tue, 28 Jul 2015 19:13:12 +0800 From: Kinglong Mee User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Trond Myklebust , "linux-nfs@vger.kernel.org" CC: kinglongmee@gmail.com Subject: [PATCH 4/5] NFS: Send attributes in OPEN request for NFS4_CREATE_EXCLUSIVE4_1 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Client sends a SETATTR request after OPEN for updating attributes. For create file with S_ISGID is set, the SETATTR will be not set S_ISGID as chmod of no PERMISSION. Signed-off-by: Kinglong Mee --- fs/nfs/nfs4proc.c | 2 +- fs/nfs/nfs4xdr.c | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 8bee934..801f5f4 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -2413,7 +2413,7 @@ static int _nfs4_do_open(struct inode *dir, state = ctx->state; if ((opendata->o_arg.open_flags & O_EXCL) && - (opendata->o_arg.createmode != NFS4_CREATE_GUARDED)) { + (opendata->o_arg.createmode == NFS4_CREATE_EXCLUSIVE)) { nfs4_exclusive_attrset(opendata, sattr); nfs_fattr_init(opendata->o_res.f_attr); diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index 558cd65d..b5147bc 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -1382,7 +1382,6 @@ static inline void encode_openhdr(struct xdr_stream *xdr, const struct nfs_opena static inline void encode_createmode(struct xdr_stream *xdr, const struct nfs_openargs *arg) { - struct iattr dummy; __be32 *p; p = reserve_space(xdr, 4); @@ -1402,8 +1401,7 @@ static inline void encode_createmode(struct xdr_stream *xdr, const struct nfs_op case NFS4_CREATE_EXCLUSIVE4_1: *p = cpu_to_be32(NFS4_CREATE_EXCLUSIVE4_1); encode_nfs4_verifier(xdr, &arg->u.verifier); - dummy.ia_valid = 0; - encode_attrs(xdr, &dummy, arg->label, arg->server); + encode_attrs(xdr, arg->u.attrs, arg->label, arg->server); } }