Received: by 2002:a05:6358:e9c4:b0:b2:91dc:71ab with SMTP id hc4csp2016670rwb; Fri, 5 Aug 2022 11:37:59 -0700 (PDT) X-Google-Smtp-Source: AA6agR5utssvMFRGo6cXf6s1Ynj9kqtwNU/t43dENxg9EFAkvK1pqJS96JUuSpWmkb5vg7EDvA/p X-Received: by 2002:a17:90a:4fc7:b0:1f5:8d67:c7b7 with SMTP id q65-20020a17090a4fc700b001f58d67c7b7mr3902671pjh.106.1659724678867; Fri, 05 Aug 2022 11:37:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659724678; cv=none; d=google.com; s=arc-20160816; b=YUR4yOUHOd8Wm0UlAgDgJy1fyq/bpqc4224+dFgaiU9KRDwkNdGVlzC0vTj/+66/Da bEIfXzt5faue8+FI3IB4DyivVNYdnoGqdWvWUT6aCJQPPGNIkMWMvg/TZ5Lo8hN+CT0m UgBjm3PqTujA0xhtq7exN3V33cgp1rux7xwUuso9tv2DDMX4s49hW2TbZdkiybXLUaNJ xhWDJHRgMAkDTs6v3v1RGe74q7Z/Vn88HuGtWajLONMYCpqa6E8W2uNhz5Wh5dTcGe43 lpoD6a4668lL2QmwQ0zT3TWzbkCUfQLXgv41wO109vMCA3Hs6VtrI8DN3Shi0nGD+AHU hA5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=XDSH066p5lk9M9LT6h/WL8Wtq5Fz++3prqa4BZK5EDc=; b=aesYnzHgi3gRh/jQc2soC0oV+bdtvyVsF9Fq86R+CSV+5PWI9N3niQZXUdK1mKZ72W 7vDqRnlgF0Vii9rhUXWkwXxeID0WRW6ZigZOWy7O0GVqa87tP+YQpeFAsnN8nsJPJQ77 faecqDF51uzKIUgCGVuF9xRLqV4PGFwiQ3vEdg8G9JC8WKJbLP6osZPZCZywwh9vuPsR W0TojyolLvC5ftnNt+eBgjCpH6WtR3yDlBRxYdqEG8Ns5eIvgYqmJWoXCpNCEKnONrBx /rRrWYxUz/ZsJJNoLwOXx2oWCqLOoebwSw1mH5LyEU+8+DVEh7tzbpu4FfIpj9G0YQqC 3Xrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FC6xPAsf; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x3-20020a056a00188300b0052e4d8f39e7si5343556pfh.272.2022.08.05.11.37.42; Fri, 05 Aug 2022 11:37:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FC6xPAsf; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241520AbiHESgI (ORCPT + 99 others); Fri, 5 Aug 2022 14:36:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38866 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238385AbiHESfy (ORCPT ); Fri, 5 Aug 2022 14:35:54 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77369DFE2; Fri, 5 Aug 2022 11:35:53 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 28C2EB80D83; Fri, 5 Aug 2022 18:35:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5675C433D7; Fri, 5 Aug 2022 18:35:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1659724550; bh=EQv+UvsRrAxVqCjRTPFq4HNln4t/Rpaq3UXlIzOheYI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FC6xPAsfpgcjFytX4DmHj01ESIMdhFh7ovpKkoggYZ9EpfrYbn1X/E2JTI7yulhK/ 4/ULxbe2w2QSI32YMFAKYSFzte0w1qId2bfa4WWSWVBzRVJv3YlIGy62ihTO4cRLgF 2z3un+siyUbZVmTGCU9+GWfJYBDnaHodnaTDgBcmnlLlslUB7DFB8YDivMsfKB2GG5 s51GWHlxMxI90kl9c9rZTo2qJmIGYCmWgXkH7DdI4l8ZKauM7cyNAnn+5Ie0TKLR4/ +hU43YIkqc4ljEG3uuoPtDMLFNwZWO2WFcj0KgJ39ZdxpGzng9RpBIFk2YBT6Yt5TV F8YHIVWRPTSag== From: Jeff Layton To: linux-fsdevel@vger.kernel.org Cc: dhowells@redhat.com, lczerner@redhat.com, bxue@redhat.com, ceph-devel@vger.kernel.org, linux-nfs@vger.kernel.org, linux-afs@lists.infradead.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org Subject: [RFC PATCH 4/4] ceph: fill in the change attribute in statx requests Date: Fri, 5 Aug 2022 14:35:43 -0400 Message-Id: <20220805183543.274352-5-jlayton@kernel.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20220805183543.274352-1-jlayton@kernel.org> References: <20220805183543.274352-1-jlayton@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org When statx requests the change attribute, request the full gamut of caps (similarly to how ctime is handled). When the change attribute seems to be valid, return it in the chgattr field. Signed-off-by: Jeff Layton --- fs/ceph/inode.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 56c53ab3618e..fb2ed85f9083 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -2408,10 +2408,10 @@ static int statx_to_caps(u32 want, umode_t mode) { int mask = 0; - if (want & (STATX_MODE|STATX_UID|STATX_GID|STATX_CTIME|STATX_BTIME)) + if (want & (STATX_MODE|STATX_UID|STATX_GID|STATX_CTIME|STATX_BTIME|STATX_CHGATTR)) mask |= CEPH_CAP_AUTH_SHARED; - if (want & (STATX_NLINK|STATX_CTIME)) { + if (want & (STATX_NLINK|STATX_CTIME|STATX_CHGATTR)) { /* * The link count for directories depends on inode->i_subdirs, * and that is only updated when Fs caps are held. @@ -2422,11 +2422,10 @@ static int statx_to_caps(u32 want, umode_t mode) mask |= CEPH_CAP_LINK_SHARED; } - if (want & (STATX_ATIME|STATX_MTIME|STATX_CTIME|STATX_SIZE| - STATX_BLOCKS)) + if (want & (STATX_ATIME|STATX_MTIME|STATX_CTIME|STATX_SIZE| STATX_BLOCKS|STATX_CHGATTR)) mask |= CEPH_CAP_FILE_SHARED; - if (want & (STATX_CTIME)) + if (want & (STATX_CTIME|STATX_CHGATTR)) mask |= CEPH_CAP_XATTR_SHARED; return mask; @@ -2468,6 +2467,11 @@ int ceph_getattr(struct user_namespace *mnt_userns, const struct path *path, valid_mask |= STATX_BTIME; } + if (request_mask & STATX_CHGATTR) { + stat->chgattr = inode_peek_iversion_raw(inode); + valid_mask |= STATX_CHGATTR; + } + if (ceph_snap(inode) == CEPH_NOSNAP) stat->dev = inode->i_sb->s_dev; else -- 2.37.1