From patchwork Tue Jul 11 21:54:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 9835515 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6A98B60363 for ; Tue, 11 Jul 2017 21:54:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5AFC22856A for ; Tue, 11 Jul 2017 21:54:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4E37928572; Tue, 11 Jul 2017 21:54:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CD99F2856A for ; Tue, 11 Jul 2017 21:54:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933356AbdGKVyk (ORCPT ); Tue, 11 Jul 2017 17:54:40 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:36237 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933186AbdGKVyj (ORCPT ); Tue, 11 Jul 2017 17:54:39 -0400 Received: by mail-io0-f196.google.com with SMTP id h134so488465iof.3 for ; Tue, 11 Jul 2017 14:54:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id; bh=Q3tH6iq6mo4jMJb3dN1H89AVYTha/Ynf0ORsM0h0+T4=; b=f4TrzQmE1sIc7zgJa3pmy5vdi4z/GB3Bhg3JoaWm2zdzV4Lxi5FfjI96eljRvZEee8 74MLGp6qKSBhw5GaZBC0nEgCgHYDR/hpY1Ntur/jxSvdLAATCskFxSOUhSNNpP53GmrA IhNs9VC/g1IeA6GfeRrgwhev0hmIrnI1K6kCbLRKsjF/Xyd7aXX00IbJ3/0i70T+gK2x 2uW/BQDo/3NfO0kt7ylrt5mBMscCOoLr2A0D5ZRjQw1PKZhI820zfeqWwpJpu81aJitj pXZVy44oQ1qKZ7JamBbJnDiATEi0FgYyNfTf//QvahLqkaWpOjs7ZHfO8TOV4BhOCs1S YINw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=Q3tH6iq6mo4jMJb3dN1H89AVYTha/Ynf0ORsM0h0+T4=; b=rNOyCH6Cw7C/vzK0jc+t9qldNvsDMTZQ0OCTcTSBsa3rzE3WZkSSV1g2Y8iuALQ+45 VmtHmXO72uq78lCrjzkDZmGaVuW/FD8XyPfQ7S128/HgqEYO0uUZ/p9FRamAdyVkfJNB TWnk5glOyfybRG+JjcmM+aXjFpM4Q++CL/sj7N5//4dy9EToUVvFXbMcpmrydj6L37pv X2RTooXm0Zf/MB4bD5sysNUqdssmxSWBz1qMsCtAf4dwDeLYsRCWeMs2XNF5i6Ujpqbz 7w1QnoHuSzYxnKO4IAlwA4i8r/AyO6gpcxxreq6dYnAJDCNfIbA1yHL6sT84hI/eq0ob Hkzg== X-Gm-Message-State: AIVw110iBz1kwCAmKQxlr1jUzCuxcxFslrm7FOpw6ppmEV8US/OIX9w8 +TLYE4VGfmpF8yZb7nw= X-Received: by 10.107.19.168 with SMTP id 40mr2304456iot.51.1499810078645; Tue, 11 Jul 2017 14:54:38 -0700 (PDT) Received: from leira.trondhjem.org (c-68-49-162-121.hsd1.mi.comcast.net. [68.49.162.121]) by smtp.gmail.com with ESMTPSA id d188sm570285ioe.52.2017.07.11.14.54.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 11 Jul 2017 14:54:38 -0700 (PDT) From: Trond Myklebust To: anna.schumaker@netapp.com Cc: linux-nfs@vger.kernel.org Subject: [PATCH 1/4] NFS: Refactor NFS access to kernel access mask calculation Date: Tue, 11 Jul 2017 17:54:32 -0400 Message-Id: <20170711215435.18736-1-trond.myklebust@primarydata.com> X-Mailer: git-send-email 2.13.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Trond Myklebust --- fs/nfs/dir.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 2ac00bf4ecf1..13f9ec3d4d8e 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -2362,16 +2362,31 @@ void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set) } EXPORT_SYMBOL_GPL(nfs_access_add_cache); +#define NFS_MAY_READ (NFS4_ACCESS_READ) +#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \ + NFS4_ACCESS_EXTEND | \ + NFS4_ACCESS_DELETE) +#define NFS_MAY_LOOKUP (NFS4_ACCESS_LOOKUP) +#define NFS_MAY_EXECUTE (NFS4_ACCESS_EXECUTE) +static int +nfs_access_calc_mask(u32 access_result) +{ + int mask = 0; + + if (access_result & NFS_MAY_READ) + mask |= MAY_READ; + if (access_result & NFS_MAY_WRITE) + mask |= MAY_WRITE; + if (access_result & NFS_MAY_LOOKUP) + mask |= MAY_EXEC; + if (access_result & NFS_MAY_EXECUTE) + mask |= MAY_EXEC; + return mask; +} + void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result) { - entry->mask = 0; - if (access_result & NFS4_ACCESS_READ) - entry->mask |= MAY_READ; - if (access_result & - (NFS4_ACCESS_MODIFY | NFS4_ACCESS_EXTEND | NFS4_ACCESS_DELETE)) - entry->mask |= MAY_WRITE; - if (access_result & (NFS4_ACCESS_LOOKUP|NFS4_ACCESS_EXECUTE)) - entry->mask |= MAY_EXEC; + entry->mask = nfs_access_calc_mask(access_result); } EXPORT_SYMBOL_GPL(nfs_access_set_mask);