From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B71D4C04A94 for ; Thu, 3 Aug 2023 14:00:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235824AbjHCOAv (ORCPT ); Thu, 3 Aug 2023 10:00:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47210 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235909AbjHCOAl (ORCPT ); Thu, 3 Aug 2023 10:00:41 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3248A170D for ; Thu, 3 Aug 2023 07:00:15 -0700 (PDT) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 81B9D42418 for ; Thu, 3 Aug 2023 14:00:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071212; bh=GFNwWvhavDkNrI4eqwez7OWrv+w+Iw1WNhnwQW/Fw7E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LkxSgFGPREHqri4xcSlBNKn5t2D2FW4SfnQPDYSHOCXGMCToyBx3y2afjQjC05xgR xKxUIXxLjTi6mI9ggkj+isg39VeUj0sX4zUGdkHV4ajDziNaP2Qzs7iu7dbCu2fxaQ D8Fpn5SXmJcHGs2gkCn7OTfxwDsmMsu46oJsJwWEwyAJ0KPXETJAtshHBUXIqUZe3Z ZMC4Rtpkc73vs2mrAYEfqG6dxKk+ih40mYRoi5dY8w9D/ktm9LEulU7gyQK6tOcWA0 DcxI4qH4zXQPp2zhrSyqe4Dm77lZ64+3DSWw28xSytF7BqeLhCeNdCa6beq22MC4hx iuplb6FUOSbgw== Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-52291e49dbcso696169a12.2 for ; Thu, 03 Aug 2023 07:00:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071212; x=1691676012; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GFNwWvhavDkNrI4eqwez7OWrv+w+Iw1WNhnwQW/Fw7E=; b=AthLNGNfPkBIyROlGsRgb8SOBwvO8ltlcPaCkvY3zTkhUf9MtL9RITbp+r0LMFVQ0H hdKtDHpo8JYF6griTGGqkQVNEENL5ZLQZ69eQlvMAG/Ht/WBeYZs3g/8X5ukPOy20FPQ uOpWsPet62sUpukj0bPk1l3L6mNUqyTC7vsDlnccXhQ3oEdn/+sP5sbZEdJ1JrFuuMT/ 33lv4qG71OsqVc1s95/CQ7I8Q1dJWX6l563UDoEL5U33Ko/QFVBqkds6SzSsrTyM3sve BLlZdL16hk4FF23HA0MArLXw5Aw+UnZ9Pz5geeP7CtT8ATTPdgUkY+VYHKZt5gTrGZFH +j5A== X-Gm-Message-State: ABy/qLZVP6DtWr4K2nfPzp5PNakhfU11CEu4GzclmvSissPE9lI+miQS yVhswk6iQqvV6AsgwAuVN1Ovg68cm1gf/XOfNQSg8qDkGIJlE9LDTc8F3bo6UMc55SgWytSYIKJ CSI9+qOAfFpwUhHzQs+YbOJ515D3hOS1xaaONhd5U+w== X-Received: by 2002:aa7:c49a:0:b0:522:3855:7ec5 with SMTP id m26-20020aa7c49a000000b0052238557ec5mr8584108edq.10.1691071212142; Thu, 03 Aug 2023 07:00:12 -0700 (PDT) X-Google-Smtp-Source: APBJJlEfIOUItlo0hjwrY4HJh2AtdBwv8To0WNWjW3o7KEaguO5IXHRwEyXe3XNgge+1GeScqXxVOA== X-Received: by 2002:aa7:c49a:0:b0:522:3855:7ec5 with SMTP id m26-20020aa7c49a000000b0052238557ec5mr8584083edq.10.1691071211914; Thu, 03 Aug 2023 07:00:11 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:11 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , Alexander Viro , Seth Forshee , linux-kernel@vger.kernel.org Subject: [PATCH v8 01/12] fs: export mnt_idmap_get/mnt_idmap_put Date: Thu, 3 Aug 2023 15:59:44 +0200 Message-Id: <20230803135955.230449-2-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" These helpers are required to support idmapped mounts in the Cephfs. Cc: Christian Brauner Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org Signed-off-by: Alexander Mikhalitsyn Reviewed-by: Christian Brauner --- v3: - EXPORT_SYMBOL -> EXPORT_SYMBOL_GPL as Christoph Hellwig suggested --- fs/mnt_idmapping.c | 2 ++ include/linux/mnt_idmapping.h | 3 +++ 2 files changed, 5 insertions(+) diff --git a/fs/mnt_idmapping.c b/fs/mnt_idmapping.c index 4905665c47d0..57d1dedf3f8f 100644 --- a/fs/mnt_idmapping.c +++ b/fs/mnt_idmapping.c @@ -256,6 +256,7 @@ struct mnt_idmap *mnt_idmap_get(struct mnt_idmap *idmap) =20 return idmap; } +EXPORT_SYMBOL_GPL(mnt_idmap_get); =20 /** * mnt_idmap_put - put a reference to an idmapping @@ -271,3 +272,4 @@ void mnt_idmap_put(struct mnt_idmap *idmap) kfree(idmap); } } +EXPORT_SYMBOL_GPL(mnt_idmap_put); diff --git a/include/linux/mnt_idmapping.h b/include/linux/mnt_idmapping.h index 057c89867aa2..b8da2db4ecd2 100644 --- a/include/linux/mnt_idmapping.h +++ b/include/linux/mnt_idmapping.h @@ -115,6 +115,9 @@ static inline bool vfsgid_eq_kgid(vfsgid_t vfsgid, kgid= _t kgid) =20 int vfsgid_in_group_p(vfsgid_t vfsgid); =20 +struct mnt_idmap *mnt_idmap_get(struct mnt_idmap *idmap); +void mnt_idmap_put(struct mnt_idmap *idmap); + vfsuid_t make_vfsuid(struct mnt_idmap *idmap, struct user_namespace *fs_userns, kuid_t kuid); =20 --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9BE8C41513 for ; Thu, 3 Aug 2023 14:01:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236549AbjHCOBI (ORCPT ); Thu, 3 Aug 2023 10:01:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236325AbjHCOAn (ORCPT ); Thu, 3 Aug 2023 10:00:43 -0400 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3DD69212A for ; Thu, 3 Aug 2023 07:00:20 -0700 (PDT) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 736553F7B7 for ; Thu, 3 Aug 2023 14:00:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071218; bh=StxqveXF5moq9iJU4D0IjENKfN6jaIfCw60woBc2a1E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=T4cv9VgyoJCSqFrKHBoK3YK5vFZg/TDb4VZdAdn9Jd70cefT3MDGgoPQG0bvTtKK/ vx5j9EFJirL1daNFeUARvNaBe6wVcQKFmhSCkLs1WhL7aBueqiKXp00lUHdsQ5P4l2 +VKp4hYOE/pPmTm6tvwRSJRTxA3w/nAlIvuZUstVlQ3zWqmow3Rfmsi7AfYSBJ1EmV 6Y9xVvZSETbsNwsy1DLumdtfz64y+f8RNGdeqV/LI0sC04lCrQSFiODpHHI9za8lZD wRFHiy81XMA8Q6uQCSCRJUtcivyTdA3dLDSqPHpG5784yVA1jRblmsnhYv3Lk8Cioc reOjsdxNclkgA== Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-521da4c99d4so698884a12.1 for ; Thu, 03 Aug 2023 07:00:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071215; x=1691676015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=StxqveXF5moq9iJU4D0IjENKfN6jaIfCw60woBc2a1E=; b=JYHHWwpIiCJwBCu0DgP/6RPgVCklh5HK0iNllCLwM5It9x3HisZWB+KmbZN0BborzF ChNq8IvAXahss7KE2nwNZaPRWHF9w7s0IilU/85LQwBKY1u5FgEottzUEkr/PEdb401/ VUhRNUlBfiLwm4Ma8KngHwsnakTbExaRuI1FqlH4YFN3XUyYxtetXUEFX14Q0ExL3crh ZyoyP7uSEKGQNSKgzaz+CsdKEeeFJpjZCSlUUgDmwr/mIDF3KRJL/CPnGmRaDIJBZsR5 4wFTlNzjxDJSm0Qqu+TMnQQ7C1mqE87Ve9nIsvk6Yq5cIuVTypDztXMfhm82v3Wc3XG1 pjvw== X-Gm-Message-State: ABy/qLadBdXuKgoOiLgcN4bwQXSx+v81pFix9UkP8zrR+60ilqa9N49f YAAn9z+mswkjo/8Skic472+gsPpR3CxY3NYaF60vWKg7bbpYG0Ff1aS6CgZlSPNrpcubstk0QRr lVTU6SQ5JWRLZhmnEW+T/yudXiIxhi3GRB+o0IlmGEg== X-Received: by 2002:aa7:de14:0:b0:519:6a6a:7659 with SMTP id h20-20020aa7de14000000b005196a6a7659mr8931901edv.18.1691071214978; Thu, 03 Aug 2023 07:00:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlG5paflJLz4JBRbHPhL+2+ULYp98vUnpGsRBpJboWm8CHBV4DSIx5ONfbc9tYUeWfPNtNGOIA== X-Received: by 2002:aa7:de14:0:b0:519:6a6a:7659 with SMTP id h20-20020aa7de14000000b005196a6a7659mr8931880edv.18.1691071214671; Thu, 03 Aug 2023 07:00:14 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:14 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 02/12] ceph: stash idmapping in mdsc request Date: Thu, 3 Aug 2023 15:59:45 +0200 Message-Id: <20230803135955.230449-3-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner When sending a mds request cephfs will send relevant data for the requested operation. For creation requests the caller's fs{g,u}id is used to set the ownership of the newly created filesystem object. For setattr requests the caller can pass in arbitrary {g,u}id values to which the relevant filesystem object is supposed to be changed. If the caller is performing the relevant operation via an idmapped mount cephfs simply needs to take the idmapping into account when it sends the relevant mds request. In order to support idmapped mounts for cephfs we stash the idmapping whenever they are relevant for the operation for the duration of the request. Since mds requests can be queued and performed asynchronously we make sure to keep the idmapping around and release it once the request has finished. In follow-up patches we will use this to send correct ownership information over the wire. This patch just adds the basic infrastructure to keep the idmapping around. The actual conversion patches are all fairly minimal. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner Signed-off-by: Alexander Mikhalitsyn --- v4: - don't call mnt_idmap_get(..) in __register_request --- fs/ceph/mds_client.c | 5 +++++ fs/ceph/mds_client.h | 1 + 2 files changed, 6 insertions(+) diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 9aae39289b43..8829f55103da 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -12,6 +12,7 @@ #include #include #include +#include =20 #include "super.h" #include "crypto.h" @@ -1121,6 +1122,8 @@ void ceph_mdsc_release_request(struct kref *kref) kfree(req->r_path1); kfree(req->r_path2); put_cred(req->r_cred); + if (req->r_mnt_idmap) + mnt_idmap_put(req->r_mnt_idmap); if (req->r_pagelist) ceph_pagelist_release(req->r_pagelist); kfree(req->r_fscrypt_auth); @@ -1180,6 +1183,8 @@ static void __register_request(struct ceph_mds_client= *mdsc, insert_request(&mdsc->request_tree, req); =20 req->r_cred =3D get_current_cred(); + if (!req->r_mnt_idmap) + req->r_mnt_idmap =3D &nop_mnt_idmap; =20 if (mdsc->oldest_tid =3D=3D 0 && req->r_op !=3D CEPH_MDS_OP_SETFILELOCK) mdsc->oldest_tid =3D req->r_tid; diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index 717a7399bacb..e3bbf3ba8ee8 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -300,6 +300,7 @@ struct ceph_mds_request { int r_fmode; /* file mode, if expecting cap */ int r_request_release_offset; const struct cred *r_cred; + struct mnt_idmap *r_mnt_idmap; struct timespec64 r_stamp; =20 /* for choosing which mds to send this request to */ --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A53AC04A94 for ; Thu, 3 Aug 2023 14:01:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229617AbjHCOB2 (ORCPT ); Thu, 3 Aug 2023 10:01:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236263AbjHCOBR (ORCPT ); Thu, 3 Aug 2023 10:01:17 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45A5D198A for ; Thu, 3 Aug 2023 07:00:39 -0700 (PDT) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id D70AB40822 for ; Thu, 3 Aug 2023 14:00:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071218; bh=SRA2CxbC6ceQPxXoZHupL9znEMzT1kYcPE4TFQwQ4sw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LgWNtHaWnBZZ3vI1FqFYr1XdMz9ELdXGNsKXKTMUbVUqTQp8U9VgkmLJl79nut1f5 wyApUmZeb8jxLkTGHa69bQJOlZtqkVHi+r8NZSgQROXPV1HhUdl/xvVZKVOmJJR0YI zJvj+nC7/5+O7SPd8AaWUQ80u11qap/ilbtm1gbIt/hqLjlNGbKhFEeuZ0mNiv2DmR OT77JqC/APlGsjyymRhJCnFE/2bx6b2/Njcz6/Byv9bfBaWU0d3B7e6mt2qHLCnwU2 4uaogCxjb6Q0ZoccE8udKEvF+GJGGWic1OrdQTUiZNckeJtQQ9IH5RpeG+LM0Y7P0j LeMvCK8sRGo8Q== Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-52258599da2so678120a12.3 for ; Thu, 03 Aug 2023 07:00:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071218; x=1691676018; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SRA2CxbC6ceQPxXoZHupL9znEMzT1kYcPE4TFQwQ4sw=; b=XpQtf9eTjjO3j94Cutoygu6EGA3SgZ6nRZmH0+Vt/Kdgm+Co96S+xnF2GbC/TT9aJy it8rX25ogYc+lxCaauUFdqraeO0HIIbpeGMgxbVSVGC7uldYIyujKLFETWAhIqMmpdJl SE43aDhnkF7J9T0v1rqIUbfy6UG2CYDr3oVu0/yVYVKUtt6f596cHXdPAzXDuAvmcB9t Sc8j6gKgDlUS6MkfPs402Dbi9WJmBwnWPhO5sapFTXTKTNjebtKimz4e/rFZ5glo5YoX WpMGGWFmdBBjxoEX/KNUqFaSZEbLm45xe4b8IegpmuFiUpukGqrBL2BjgJYUZwBVu2qE raEw== X-Gm-Message-State: ABy/qLZDWNksvme5QW7m7724L+em3qNP1edV1fT3brm54L18YCbSV7k6 kt2nDO79cEbv5pPpjV5/qKJblpha0xJ7kZ2Flq/JHOE1bgfJ81J/981EuNwmCmf9m8yFcYMz9pX WXZEwFiBsmSyBIE07ogKoEpv6XlpFbL+UvENtCy8glw== X-Received: by 2002:aa7:ca50:0:b0:522:39b7:da3a with SMTP id j16-20020aa7ca50000000b0052239b7da3amr8004197edt.31.1691071218112; Thu, 03 Aug 2023 07:00:18 -0700 (PDT) X-Google-Smtp-Source: APBJJlFZDwcdmjl6HdMcQMLVnKLyAyrPvUFUxG6kRGiaI4UWCyJqXsMhNiMTsHJmAnGr/1ax69BTEQ== X-Received: by 2002:aa7:ca50:0:b0:522:39b7:da3a with SMTP id j16-20020aa7ca50000000b0052239b7da3amr8004184edt.31.1691071217918; Thu, 03 Aug 2023 07:00:17 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:17 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 03/12] ceph: handle idmapped mounts in create_request_message() Date: Thu, 3 Aug 2023 15:59:46 +0200 Message-Id: <20230803135955.230449-4-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Inode operations that create a new filesystem object such as ->mknod, ->create, ->mkdir() and others don't take a {g,u}id argument explicitly. Instead the caller's fs{g,u}id is used for the {g,u}id of the new filesystem object. In order to ensure that the correct {g,u}id is used map the caller's fs{g,u}id for creation requests. This doesn't require complex changes. It suffices to pass in the relevant idmapping recorded in the request message. If this request message was triggered from an inode operation that creates filesystem objects it will have passed down the relevant idmaping. If this is a request message that was triggered from an inode operation that doens't need to take idmappings into account the initial idmapping is passed down which is an identity mapping. This change uses a new cephfs protocol extension CEPHFS_FEATURE_HAS_OWNER_U= IDGID which adds two new fields (owner_{u,g}id) to the request head structure. So, we need to ensure that MDS supports it otherwise we need to fail any IO that comes through an idmapped mount because we can't process it in a proper way. MDS server without such an extension will use caller_{u,g}= id fields to set a new inode owner UID/GID which is incorrect because caller_{= u,g}id values are unmapped. At the same time we can't map these fields with an idmapping as it can break UID/GID-based permission checks logic on the MDS side. This problem was described with a lot of details at [1], [2]. [1] https://lore.kernel.org/lkml/CAEivzxfw1fHO2TFA4dx3u23ZKK6Q+EThfzuibrhA3= RKM=3DZOYLg@mail.gmail.com/ [2] https://lore.kernel.org/all/20220104140414.155198-3-brauner@kernel.org/ https://github.com/ceph/ceph/pull/52575 https://tracker.ceph.com/issues/62217 Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Co-Developed-by: Alexander Mikhalitsyn Signed-off-by: Christian Brauner Signed-off-by: Alexander Mikhalitsyn --- v7: - reworked to use two new fields for owner UID/GID (https://github.com/cep= h/ceph/pull/52575) v8: - properly handled case when old MDS used with new kernel client --- fs/ceph/mds_client.c | 46 +++++++++++++++++++++++++++++++++--- fs/ceph/mds_client.h | 5 +++- include/linux/ceph/ceph_fs.h | 4 +++- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 8829f55103da..7d3106d3b726 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -2902,6 +2902,17 @@ static void encode_mclientrequest_tail(void **p, con= st struct ceph_mds_request * } } =20 +static inline u16 mds_supported_head_version(struct ceph_mds_session *sess= ion) +{ + if (!test_bit(CEPHFS_FEATURE_32BITS_RETRY_FWD, &session->s_features)) + return 1; + + if (!test_bit(CEPHFS_FEATURE_HAS_OWNER_UIDGID, &session->s_features)) + return 2; + + return CEPH_MDS_REQUEST_HEAD_VERSION; +} + static struct ceph_mds_request_head_legacy * find_legacy_request_head(void *p, u64 features) { @@ -2923,6 +2934,7 @@ static struct ceph_msg *create_request_message(struct= ceph_mds_session *session, { int mds =3D session->s_mds; struct ceph_mds_client *mdsc =3D session->s_mdsc; + struct ceph_client *cl =3D mdsc->fsc->client; struct ceph_msg *msg; struct ceph_mds_request_head_legacy *lhead; const char *path1 =3D NULL; @@ -2936,7 +2948,7 @@ static struct ceph_msg *create_request_message(struct= ceph_mds_session *session, void *p, *end; int ret; bool legacy =3D !(session->s_con.peer_features & CEPH_FEATURE_FS_BTIME); - bool old_version =3D !test_bit(CEPHFS_FEATURE_32BITS_RETRY_FWD, &session-= >s_features); + u16 request_head_version =3D mds_supported_head_version(session); =20 ret =3D set_request_path_attr(mdsc, req->r_inode, req->r_dentry, req->r_parent, req->r_path1, req->r_ino1.ino, @@ -2977,8 +2989,10 @@ static struct ceph_msg *create_request_message(struc= t ceph_mds_session *session, */ if (legacy) len =3D sizeof(struct ceph_mds_request_head_legacy); - else if (old_version) + else if (request_head_version =3D=3D 1) len =3D sizeof(struct ceph_mds_request_head_old); + else if (request_head_version =3D=3D 2) + len =3D offsetofend(struct ceph_mds_request_head, ext_num_fwd); else len =3D sizeof(struct ceph_mds_request_head); =20 @@ -3028,6 +3042,16 @@ static struct ceph_msg *create_request_message(struc= t ceph_mds_session *session, lhead =3D find_legacy_request_head(msg->front.iov_base, session->s_con.peer_features); =20 + if ((req->r_mnt_idmap !=3D &nop_mnt_idmap) && + !test_bit(CEPHFS_FEATURE_HAS_OWNER_UIDGID, &session->s_features)) { + pr_err_ratelimited_client(cl, + "idmapped mount is used and CEPHFS_FEATURE_HAS_OWNER_UIDGID" + " is not supported by MDS. Fail request with -EIO.\n"); + + ret =3D -EIO; + goto out_err; + } + /* * The ceph_mds_request_head_legacy didn't contain a version field, and * one was added when we moved the message version from 3->4. @@ -3035,17 +3059,33 @@ static struct ceph_msg *create_request_message(stru= ct ceph_mds_session *session, if (legacy) { msg->hdr.version =3D cpu_to_le16(3); p =3D msg->front.iov_base + sizeof(*lhead); - } else if (old_version) { + } else if (request_head_version =3D=3D 1) { struct ceph_mds_request_head_old *ohead =3D msg->front.iov_base; =20 msg->hdr.version =3D cpu_to_le16(4); ohead->version =3D cpu_to_le16(1); p =3D msg->front.iov_base + sizeof(*ohead); + } else if (request_head_version =3D=3D 2) { + struct ceph_mds_request_head *nhead =3D msg->front.iov_base; + + msg->hdr.version =3D cpu_to_le16(6); + nhead->version =3D cpu_to_le16(2); + + p =3D msg->front.iov_base + offsetofend(struct ceph_mds_request_head, ex= t_num_fwd); } else { struct ceph_mds_request_head *nhead =3D msg->front.iov_base; + kuid_t owner_fsuid; + kgid_t owner_fsgid; =20 msg->hdr.version =3D cpu_to_le16(6); nhead->version =3D cpu_to_le16(CEPH_MDS_REQUEST_HEAD_VERSION); + + owner_fsuid =3D from_vfsuid(req->r_mnt_idmap, &init_user_ns, + VFSUIDT_INIT(req->r_cred->fsuid)); + owner_fsgid =3D from_vfsgid(req->r_mnt_idmap, &init_user_ns, + VFSGIDT_INIT(req->r_cred->fsgid)); + nhead->owner_uid =3D cpu_to_le32(from_kuid(&init_user_ns, owner_fsuid)); + nhead->owner_gid =3D cpu_to_le32(from_kgid(&init_user_ns, owner_fsgid)); p =3D msg->front.iov_base + sizeof(*nhead); } =20 diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index e3bbf3ba8ee8..8f683e8203bd 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -33,8 +33,10 @@ enum ceph_feature_type { CEPHFS_FEATURE_NOTIFY_SESSION_STATE, CEPHFS_FEATURE_OP_GETVXATTR, CEPHFS_FEATURE_32BITS_RETRY_FWD, + CEPHFS_FEATURE_NEW_SNAPREALM_INFO, + CEPHFS_FEATURE_HAS_OWNER_UIDGID, =20 - CEPHFS_FEATURE_MAX =3D CEPHFS_FEATURE_32BITS_RETRY_FWD, + CEPHFS_FEATURE_MAX =3D CEPHFS_FEATURE_HAS_OWNER_UIDGID, }; =20 #define CEPHFS_FEATURES_CLIENT_SUPPORTED { \ @@ -49,6 +51,7 @@ enum ceph_feature_type { CEPHFS_FEATURE_NOTIFY_SESSION_STATE, \ CEPHFS_FEATURE_OP_GETVXATTR, \ CEPHFS_FEATURE_32BITS_RETRY_FWD, \ + CEPHFS_FEATURE_HAS_OWNER_UIDGID, \ } =20 /* diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index 5f2301ee88bc..6eb83a51341c 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h @@ -499,7 +499,7 @@ struct ceph_mds_request_head_legacy { union ceph_mds_request_args args; } __attribute__ ((packed)); =20 -#define CEPH_MDS_REQUEST_HEAD_VERSION 2 +#define CEPH_MDS_REQUEST_HEAD_VERSION 3 =20 struct ceph_mds_request_head_old { __le16 version; /* struct version */ @@ -530,6 +530,8 @@ struct ceph_mds_request_head { =20 __le32 ext_num_retry; /* new count retry attempts */ __le32 ext_num_fwd; /* new count fwd attempts */ + + __le32 owner_uid, owner_gid; /* used for OPs which create inodes */ } __attribute__ ((packed)); =20 /* cap/lease release record */ --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9AC9EB64DD for ; Thu, 3 Aug 2023 14:01:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236648AbjHCOBw (ORCPT ); Thu, 3 Aug 2023 10:01:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236554AbjHCOBU (ORCPT ); Thu, 3 Aug 2023 10:01:20 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 314D31BE4 for ; Thu, 3 Aug 2023 07:00:42 -0700 (PDT) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 1453A4247B for ; Thu, 3 Aug 2023 14:00:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071221; bh=9W3amFuCFaMdLEZWgVp07pDZ7km3dCVDUs8gQZd55IA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=ZfLQ7d/coFIGTAiabuzKvyh3jTxGGdSP6hTasz+TsZZyZzVB81Os76ZVo+5a5/fMr hPyvjFYHBC85tbd6bE0EnniQL/x89N/gQS7Iraayrp4V+PVE/kAt3REiA3gBvV/jO7 0vVxvIK1nV/3fP30/m4btNFvH/CeFtfXb76LVeclv8IP1ADgbry+Lt4PXXZ5UE1E9l 5objCIIQeiuq1yWrKmNO3HnpOP3CJQfezFh3WIoUBebnCx0jDaIiT27JagFAjNivHs BBdtCEc70vBWU9kz873R2lWp8pfYWriYgFnezd1xdRt0S3X2qDrxTCl5NR7gxOo1sM NNbu+kDHs9OaA== Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-5230e9ef0e6so538852a12.0 for ; Thu, 03 Aug 2023 07:00:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071220; x=1691676020; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9W3amFuCFaMdLEZWgVp07pDZ7km3dCVDUs8gQZd55IA=; b=S91pXpWB68GyHKKKNlFcvvWL3SpE5XeUYNCFKQpvde2Gtj4GSqdpY16sY5G9lAmQQ9 EhC/avh1VNh+mBPmPiL9OoJM/y8T9VSdGG+FZ5U2LclVE2paqPgHJyb+NlKmCRxheIwo UzBJbUBFcAUHo/oYqMZEzpnuxGr4oZVWM7NLl2mLRt/zcTFSCGhzM24+nfNfZl5xUY4/ vu8Dy4spNTeaf1AvVWDWXGEMmnq6yGlf46QXqszIBGsMsQ7G4jf19hrqW8QQNo+jJWJI yU/+rcEQApfq9YIGfm6w3wXdQHPEYY0TZTHWKPW/T1eDb8kb9Iw0lSYgNg6cW9LDDYfB bJNw== X-Gm-Message-State: ABy/qLagWSKigvHZpcerHTi6SjaQ0kj6QfSt/veJSicmYaGIHLmY2bEj AjbxGxSQtURElxepz8C5mfhfoP6iWE/RBr9YiEYrZ6O9N4OCEzdZimQCjR331GB9LKpJRt7Rl4v uM67/UH3r/c4+NvZrRHZgOiNAtv+TL+H4+O0F9Md8nA== X-Received: by 2002:a50:fa8d:0:b0:522:38cb:d8cb with SMTP id w13-20020a50fa8d000000b0052238cbd8cbmr6675510edr.20.1691071220747; Thu, 03 Aug 2023 07:00:20 -0700 (PDT) X-Google-Smtp-Source: APBJJlFSUBGl00xYVgZu1n5QXjWGAchYdp2zZyXd+HoKtwgE5xEvzgdLvZUVhlHU8FZGINndDOCSng== X-Received: by 2002:a50:fa8d:0:b0:522:38cb:d8cb with SMTP id w13-20020a50fa8d000000b0052238cbd8cbmr6675499edr.20.1691071220564; Thu, 03 Aug 2023 07:00:20 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:20 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 04/12] ceph: add enable_unsafe_idmap module parameter Date: Thu, 3 Aug 2023 15:59:47 +0200 Message-Id: <20230803135955.230449-5-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This parameter is used to decide if we allow to perform IO on idmapped mount in case when MDS lacks support of CEPHFS_FEATURE_HAS_OWNER_UIDGID feature. In this case we can't properly handle MDS permission checks and if UID/GID-based restrictions are enabled on the MDS side then IO requests which go through an idmapped mount may fail with -EACCESS/-EPERM. Fortunately, for most of users it's not a case and everything should work fine. But we put work "unsafe" in the module parameter name to warn users about possible problems with this feature and encourage update of cephfs MDS. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Suggested-by: St=C3=A9phane Graber Signed-off-by: Alexander Mikhalitsyn --- fs/ceph/mds_client.c | 28 +++++++++++++++++++++------- fs/ceph/mds_client.h | 2 ++ fs/ceph/super.c | 5 +++++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 7d3106d3b726..d8097e84a5ee 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -2949,6 +2949,8 @@ static struct ceph_msg *create_request_message(struct= ceph_mds_session *session, int ret; bool legacy =3D !(session->s_con.peer_features & CEPH_FEATURE_FS_BTIME); u16 request_head_version =3D mds_supported_head_version(session); + kuid_t caller_fsuid =3D req->r_cred->fsuid; + kgid_t caller_fsgid =3D req->r_cred->fsgid; =20 ret =3D set_request_path_attr(mdsc, req->r_inode, req->r_dentry, req->r_parent, req->r_path1, req->r_ino1.ino, @@ -3044,12 +3046,24 @@ static struct ceph_msg *create_request_message(stru= ct ceph_mds_session *session, =20 if ((req->r_mnt_idmap !=3D &nop_mnt_idmap) && !test_bit(CEPHFS_FEATURE_HAS_OWNER_UIDGID, &session->s_features)) { - pr_err_ratelimited_client(cl, - "idmapped mount is used and CEPHFS_FEATURE_HAS_OWNER_UIDGID" - " is not supported by MDS. Fail request with -EIO.\n"); + if (enable_unsafe_idmap) { + pr_warn_once_client(cl, + "idmapped mount is used and CEPHFS_FEATURE_HAS_OWNER_UIDGID" + " is not supported by MDS. UID/GID-based restrictions may" + " not work properly.\n"); + + caller_fsuid =3D from_vfsuid(req->r_mnt_idmap, &init_user_ns, + VFSUIDT_INIT(req->r_cred->fsuid)); + caller_fsgid =3D from_vfsgid(req->r_mnt_idmap, &init_user_ns, + VFSGIDT_INIT(req->r_cred->fsgid)); + } else { + pr_err_ratelimited_client(cl, + "idmapped mount is used and CEPHFS_FEATURE_HAS_OWNER_UIDGID" + " is not supported by MDS. Fail request with -EIO.\n"); =20 - ret =3D -EIO; - goto out_err; + ret =3D -EIO; + goto out_err; + } } =20 /* @@ -3094,9 +3108,9 @@ static struct ceph_msg *create_request_message(struct= ceph_mds_session *session, lhead->mdsmap_epoch =3D cpu_to_le32(mdsc->mdsmap->m_epoch); lhead->op =3D cpu_to_le32(req->r_op); lhead->caller_uid =3D cpu_to_le32(from_kuid(&init_user_ns, - req->r_cred->fsuid)); + caller_fsuid)); lhead->caller_gid =3D cpu_to_le32(from_kgid(&init_user_ns, - req->r_cred->fsgid)); + caller_fsgid)); lhead->ino =3D cpu_to_le64(req->r_deleg_ino); lhead->args =3D req->r_args; =20 diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index 8f683e8203bd..0945ae4cf3c5 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -619,4 +619,6 @@ static inline int ceph_wait_on_async_create(struct inod= e *inode) extern int ceph_wait_on_conflict_unlink(struct dentry *dentry); extern u64 ceph_get_deleg_ino(struct ceph_mds_session *session); extern int ceph_restore_deleg_ino(struct ceph_mds_session *session, u64 in= o); + +extern bool enable_unsafe_idmap; #endif diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 49fd17fbba9f..18bfdfd48cef 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -1680,6 +1680,11 @@ static const struct kernel_param_ops param_ops_mount= _syntax =3D { module_param_cb(mount_syntax_v1, ¶m_ops_mount_syntax, &mount_support, = 0444); module_param_cb(mount_syntax_v2, ¶m_ops_mount_syntax, &mount_support, = 0444); =20 +bool enable_unsafe_idmap =3D false; +module_param(enable_unsafe_idmap, bool, 0644); +MODULE_PARM_DESC(enable_unsafe_idmap, + "Allow to use idmapped mounts with MDS without CEPHFS_FEATURE_HAS_OWNER= _UIDGID"); + module_init(init_ceph); module_exit(exit_ceph); =20 --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1815FC04A6A for ; Thu, 3 Aug 2023 14:01:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235503AbjHCOBj (ORCPT ); Thu, 3 Aug 2023 10:01:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236560AbjHCOBV (ORCPT ); Thu, 3 Aug 2023 10:01:21 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FA2030D7 for ; Thu, 3 Aug 2023 07:00:43 -0700 (PDT) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id D2F864247D for ; Thu, 3 Aug 2023 14:00:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071224; bh=mZe9Srkw8mk9+UpxCgBj79JVdzJ8PXD8OnJawp13C+4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EY6/g++g/fpUSThgktpyIUfWc81ZZ9AffggXY8V1VNU1g3iyPxYRADDrk52E8Qknb 0dx0C8RMiexwhhDZEijOdR5IEuYsLO3jLyqDxL+ggW2tpszuENsUIIQD3Xtlx8nyzv DXKA9s1/TUSkx3YVj27d8vV8yx8y/6TDFoZItHBWNCdTMlKRmNo02FfLxZiWqKrIzc MZ4jmhfFzdPDIGaiLBDq6jtFlAt4TKRrxxMDTiW1jvMYr4zCbu3iNtkOySgGztIL8u WKC0BK1QYMNUM8Oe3vX+/8WdI+7uDTe5diWKXPFYHlPb9f5a3CEJ+gHWP/eXSB1i3f C5afrNffacBVw== Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-521a38098faso678371a12.2 for ; Thu, 03 Aug 2023 07:00:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071223; x=1691676023; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mZe9Srkw8mk9+UpxCgBj79JVdzJ8PXD8OnJawp13C+4=; b=UeE/jxFP5TYA4I3MGD7KLWS2OIHp5R3bHpNOhqvF3U1Ajyp2wW1oVjZv/w+/X7UKXK 79A3CVa5MKTmqq1gmsXcl8R5a3+izdZIVTDGUAa0rqmij6zDlIUwpDSbeBn0zUxCvQ5e 0xcfhpxXJ3JVf6tJ457IvGvRHwhKvSZzLAZPailsrh7TGLn/+fPsGywsMoBZBeS75KIZ a8/48cl7ghlu5mkW7OMI2Ri632dd6Vfe1X+2nvBYzu2ohxrC9bwjbhZJnIYyFZ12idob xgYek47OpS06jMq+5rIm2HiKh5r6GOycabi7iSqcnZ3p+kqeIFeUzG3xEAS2xQTtjLUv XX9Q== X-Gm-Message-State: AOJu0YzapRHMe+KLUzWalw0kaO6YskohCeDvKskQg9LZlNtwftXgfZch dKGIds8uPUIKwWXFU920dQS2/Z5aStqJpFCgO9reF/bsrNpY+W+ll6T5PIRlmpulGgp9daOLoBt 3ka0MrcLvfg0ZkbqgEXJdCUxsqU62LbPOKTwOia62cw== X-Received: by 2002:aa7:dbda:0:b0:523:f29:a912 with SMTP id v26-20020aa7dbda000000b005230f29a912mr1338864edt.21.1691071223233; Thu, 03 Aug 2023 07:00:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHNXClq9w1vu3j+/MCpqQ1qf7yVb7U3H47Lv374blmqMtgY6wWk79A9/cAXoEkoeyvY03jUKw== X-Received: by 2002:aa7:dbda:0:b0:523:f29:a912 with SMTP id v26-20020aa7dbda000000b005230f29a912mr1338852edt.21.1691071223066; Thu, 03 Aug 2023 07:00:23 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:22 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 05/12] ceph: pass an idmapping to mknod/symlink/mkdir Date: Thu, 3 Aug 2023 15:59:48 +0200 Message-Id: <20230803135955.230449-6-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Enable mknod/symlink/mkdir iops to handle idmapped mounts. This is just a matter of passing down the mount's idmapping. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner Signed-off-by: Alexander Mikhalitsyn --- v4: - call mnt_idmap_get v7: - don't pass idmapping for ceph_rename (no need) --- fs/ceph/dir.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index b752ed3ccdf0..397656ae7787 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -952,6 +952,7 @@ static int ceph_mknod(struct mnt_idmap *idmap, struct i= node *dir, req->r_parent =3D dir; ihold(dir); set_bit(CEPH_MDS_R_PARENT_LOCKED, &req->r_req_flags); + req->r_mnt_idmap =3D mnt_idmap_get(idmap); req->r_args.mknod.mode =3D cpu_to_le32(mode); req->r_args.mknod.rdev =3D cpu_to_le32(rdev); req->r_dentry_drop =3D CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL | @@ -1067,6 +1068,7 @@ static int ceph_symlink(struct mnt_idmap *idmap, stru= ct inode *dir, } =20 set_bit(CEPH_MDS_R_PARENT_LOCKED, &req->r_req_flags); + req->r_mnt_idmap =3D mnt_idmap_get(idmap); req->r_dentry =3D dget(dentry); req->r_num_caps =3D 2; req->r_dentry_drop =3D CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL | @@ -1146,6 +1148,7 @@ static int ceph_mkdir(struct mnt_idmap *idmap, struct= inode *dir, req->r_parent =3D dir; ihold(dir); set_bit(CEPH_MDS_R_PARENT_LOCKED, &req->r_req_flags); + req->r_mnt_idmap =3D mnt_idmap_get(idmap); req->r_args.mkdir.mode =3D cpu_to_le32(mode); req->r_dentry_drop =3D CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL | CEPH_CAP_XATTR_EXCL; --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06A9FC04A6A for ; Thu, 3 Aug 2023 14:01:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236639AbjHCOBd (ORCPT ); Thu, 3 Aug 2023 10:01:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235909AbjHCOBV (ORCPT ); Thu, 3 Aug 2023 10:01:21 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5F7AB1716 for ; Thu, 3 Aug 2023 07:00:43 -0700 (PDT) Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 076644247C for ; Thu, 3 Aug 2023 14:00:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071227; bh=dbq6NgAMN4t7wxNwyddA+VrJjiC20GkONqywDZDeteI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hw3g/Zns/5itz8A/VvNbRb4bP8ld5EoG5tkka7lz1s8Wz1jhYUIgGUixWB2KdGpoQ 9yA0Nu1eiKCoLXwGx7LKMLpXI0rn9koeVHSfrOUSw+lKbvxuzG7YR1nIrMsGS61ql1 B6Dq8n5YsnnNR+ufExcakvOOP+5Ll3bdsGjrLlqY27KtB/P1AyrLSag05nAgGmvhZk kNdL2KXT99bOSQkJWKwLkJ1Rsof7x7PAbqFufA0H4ttOoXCQ2Ssq1cx4hdIa6OJLoi vaH9RreyDTYbRfq/A62tNCv2IJpT8jPqp7/xhyxwo8fNqFrQ+4ztBdNeEfFRy76vfX A48/Uvi4N6n3w== Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-4fe3fb358easo1056104e87.2 for ; Thu, 03 Aug 2023 07:00:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071225; x=1691676025; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dbq6NgAMN4t7wxNwyddA+VrJjiC20GkONqywDZDeteI=; b=bF/d6dNHa6UkYM7kAwaeffAwm+VZHfhHo98KOqYb72/WE1mFIDUSUqpoiWFzoZ7BJm 6WKQGA94gUMxTbG0ffHSsiKfGDq247wqbCfYJwhlJHelb7hPAZg6jhUDifXQr2u+rNt3 Iv6GhAZYwzCJEQknym4bmKstCreSDDkR1CNcBh6CsVKa8JKkeGv4mYh7vF8D4Ez1auR8 ogD2WsOXR7RYwVI853UIdAqJbnjbobfWgmSHKwRee9O1ypxmmoJUtnkaV05C6nTaLUvL qfmrpNXuaq3byZ8IhG4p838XVC/USXWXsfnqMnU+hJe3+4iwGNE4Kdw9vZ5z8g+ghBns uu6g== X-Gm-Message-State: ABy/qLYfi8sJwroQhP97ji1uebLnC3fAn7yAC/ftf81NNLvZaRXswSgB SB3MNXzwZxSfED3hJVgAqSJ7Vm+jhBuu4s2mwTMsOE5ejHEuiME+bF2xDiCkl0ixs4OlxefCJvN 6blXxltxLN6ZJgLC4gj7dKQzrPVska7uwXuZomHJKnw== X-Received: by 2002:a19:504a:0:b0:4fb:94fd:645f with SMTP id z10-20020a19504a000000b004fb94fd645fmr6531915lfj.68.1691071225618; Thu, 03 Aug 2023 07:00:25 -0700 (PDT) X-Google-Smtp-Source: APBJJlHGwj0wtDI8iNxIwzK1IOpeEx1Ty6UrtKDYlpyeVt4cmW1eycKEacTWhMO/37ZGK1a8a68Q6A== X-Received: by 2002:a19:504a:0:b0:4fb:94fd:645f with SMTP id z10-20020a19504a000000b004fb94fd645fmr6531906lfj.68.1691071225425; Thu, 03 Aug 2023 07:00:25 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:25 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 06/12] ceph: allow idmapped getattr inode op Date: Thu, 3 Aug 2023 15:59:49 +0200 Message-Id: <20230803135955.230449-7-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Enable ceph_getattr() to handle idmapped mounts. This is just a matter of passing down the mount's idmapping. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner Signed-off-by: Alexander Mikhalitsyn --- fs/ceph/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 3ff4f57f223f..136b68ccdbef 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -3034,7 +3034,7 @@ int ceph_getattr(struct mnt_idmap *idmap, const struc= t path *path, return err; } =20 - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(idmap, inode, stat); stat->ino =3D ceph_present_inode(inode); =20 /* --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C78FDEB64DD for ; Thu, 3 Aug 2023 14:01:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236573AbjHCOBr (ORCPT ); Thu, 3 Aug 2023 10:01:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236500AbjHCOBV (ORCPT ); Thu, 3 Aug 2023 10:01:21 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0333330E4 for ; Thu, 3 Aug 2023 07:00:43 -0700 (PDT) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 905C4420C0 for ; Thu, 3 Aug 2023 14:00:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071228; bh=dyWOzKMsgYqMEu72C+uRJxx6NqzlAitmeRu8HoKY4M0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AEAArPRqZNJ0vesOF8RCUdDwSEncyLzF1iUVsRhZj62DtXGrLEK3VI1t3m5SaPD9W x+dSd0n1zQBqWj/fz8OfWltlOlFITioytdxEs9S4SNdwLaC8jPeUFzntH2zflr6lVb jv0j+CdLaWjhcJ9ziRw44hGh2doSUAX4Vl81yGW+N8BL8uyMVGOib28SpWmA+M9wUG nznHWbXegj20ETANM3vNOFIsd81diig1DFD+rSIMoKni4X5Th4R0D8/9Ev+WyMq9zt CAjsx1FcICwAoRIHW4tqHQdScfbDaqh6kHq5bFFmAwyG80q8g4eBz/3s2ZytR64udU R+tA39vo67MQQ== Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-522a85b4caaso1376484a12.0 for ; Thu, 03 Aug 2023 07:00:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071228; x=1691676028; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dyWOzKMsgYqMEu72C+uRJxx6NqzlAitmeRu8HoKY4M0=; b=DSWtzgEKvB3AKbbMOUtzeJX5HGwzDmJumA4TYcDpoz9ve77WdAJz8cdMEJV7Ql/QqB uud4ax3lr2SCMqeWk/ipYvg/mu35rYiGHyKNJQfmee5v1ALN+lu1JpYLkWQTD5jt7vzf Jrua9ZlhBLjvy3lBFdVJ/wT/UaGD4k6cNdagL2+Wi2lSsvouLQeW83Es48pKRy2GaFZL c9xkatMKrqBxgN79DaZ3o1vyhE8wq7tuLhGl/1Lmlae0izTFu4Zv5ij3lCZZE+Jarffl J4XBQ2WP0jp2SSwpoeAEJvR+k7I7lOkwDvtcTZ0u30BIqUKOjDwO/CoVS4djFtctWyKU mBBQ== X-Gm-Message-State: AOJu0YyvvqqCq8EFmX/i3vwysBRiTs/8RZLv/jSa3YkrW2ecN6QcBC05 oSF+gp933Rxa3k4rBxrzVYkxn8RtJ43uxlyhAIA6v+ZzQTYXBoKyUXt9lzjDCAhrqhpPPdUgMK+ pB+oaATxQnViyVK+jBrta+z/VeG/9Y7zESSH9/YnGfg== X-Received: by 2002:a05:6402:1e92:b0:523:108c:9da1 with SMTP id f18-20020a0564021e9200b00523108c9da1mr1310097edf.15.1691071228225; Thu, 03 Aug 2023 07:00:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGXIWH00hAA9JhRO4ltGaLPgi5HRMsa3dnowPuj7IPYkjIJeJxq8gWd9F+PV91tcL+ROU9eWQ== X-Received: by 2002:a05:6402:1e92:b0:523:108c:9da1 with SMTP id f18-20020a0564021e9200b00523108c9da1mr1310065edf.15.1691071228019; Thu, 03 Aug 2023 07:00:28 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:27 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 07/12] ceph: allow idmapped permission inode op Date: Thu, 3 Aug 2023 15:59:50 +0200 Message-Id: <20230803135955.230449-8-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Enable ceph_permission() to handle idmapped mounts. This is just a matter of passing down the mount's idmapping. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner Signed-off-by: Alexander Mikhalitsyn --- fs/ceph/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 136b68ccdbef..9b50861bd2b5 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -2977,7 +2977,7 @@ int ceph_permission(struct mnt_idmap *idmap, struct i= node *inode, err =3D ceph_do_getattr(inode, CEPH_CAP_AUTH_SHARED, false); =20 if (!err) - err =3D generic_permission(&nop_mnt_idmap, inode, mask); + err =3D generic_permission(idmap, inode, mask); return err; } =20 --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40C64C04FE0 for ; Thu, 3 Aug 2023 14:01:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236574AbjHCOBn (ORCPT ); Thu, 3 Aug 2023 10:01:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47212 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236568AbjHCOBW (ORCPT ); Thu, 3 Aug 2023 10:01:22 -0400 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F8E530F3 for ; Thu, 3 Aug 2023 07:00:44 -0700 (PDT) Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 780DC413CC for ; Thu, 3 Aug 2023 14:00:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071231; bh=nLZMqtT0BTuD0r3ld9T+VcVOIz8LP+RVDN6gyhT7tPs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n41ONHbnupQ7Tsn2U099FutAo4tozFz+TyztHNUwNOQuT+r5iTW347Y7u14kCy9X9 BoV42FrPc+Va87fIwKlOTkV0TUJaukW4U2lCmrudBMwwQ+FUrvCWNEar5FFawkwtY0 t0LPYk2TrC83b3xzFIHTQjoQgJzk/iWJ9uyxL1b0NXoe7f5/XyixyAgKH0N8d9aVA2 Ak0Sg6f0MZhBqx39wvp9rltWs9r9dHZ/yuqqFZ7uyn9VfC5GHxDg9mQKF7i8vQdy01 X4l2TBau3auLf5m5ubwO63iieEm+b4kowxh+5U6ypaBVj0gzyW4voqNDQJsYzmBsa9 kEVpgE/yr3Flg== Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-4fe356c71d6so1059777e87.1 for ; Thu, 03 Aug 2023 07:00:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071231; x=1691676031; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nLZMqtT0BTuD0r3ld9T+VcVOIz8LP+RVDN6gyhT7tPs=; b=gOoPbhwb26SCrPfP8q2u+SV80g+G83WmJ9mtNakry3iWCnF6OD9yq+U0iu1G3fq+8w DMpQXKfX9zh43SWxtej1TYkKw+bQ6Jlf8OPZw0DtrmaPXDLRQQloBn7GjZY5J1BzVakq i92s/zioM5RWnjDLGCD+swYM8TjW2mLvTe5D+OTywypTAO8tUMzEsvEPAupvGqWRqS8T e3gdCeWPT5jAsOSlwiWbUN/ROXzpj9EmfKDfvtuOUGXaEals3Nxve9odVtlvLPRgCvd/ 5Fm6vJj5++d55lcsNEQZhYewMyXDTTGH8SxTcwmSqBI+2Hw8iKBys/t9Wss4CIf5iPoe cslQ== X-Gm-Message-State: ABy/qLamho/a+2dIxv6vl/FhRav6hUKgnXg86K64ylXgi6nHSOJ3RG6Z 4LXkkIakEy6wpvTb4rLUztz3m2PA45VArCiwgZbfaK8UL9AMwJxyhS5U/Q4KKzhIHORJs9DH9/V QjZGmQxaizS/lf5+/dflkrKq1AE1DVDh91VYWQ7BL9g== X-Received: by 2002:a19:2d17:0:b0:4f9:69af:9857 with SMTP id k23-20020a192d17000000b004f969af9857mr6618071lfj.51.1691071230958; Thu, 03 Aug 2023 07:00:30 -0700 (PDT) X-Google-Smtp-Source: APBJJlG7tSVwtfZPt17hde6VkgzoI0n5qb+fDHHvUxsRIf2WmuuuskJA8Kt16XnZNxTZtNp51Rx5pQ== X-Received: by 2002:a19:2d17:0:b0:4f9:69af:9857 with SMTP id k23-20020a192d17000000b004f969af9857mr6618048lfj.51.1691071230642; Thu, 03 Aug 2023 07:00:30 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:30 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 08/12] ceph: pass idmap to __ceph_setattr Date: Thu, 3 Aug 2023 15:59:51 +0200 Message-Id: <20230803135955.230449-9-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Just pass down the mount's idmapping to __ceph_setattr, because we will need it later. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: brauner@kernel.org Cc: ceph-devel@vger.kernel.org Signed-off-by: Alexander Mikhalitsyn --- fs/ceph/acl.c | 4 ++-- fs/ceph/crypto.c | 2 +- fs/ceph/inode.c | 5 +++-- fs/ceph/super.h | 3 ++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 32b26deb1741..89280c168acb 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -142,7 +142,7 @@ int ceph_set_acl(struct mnt_idmap *idmap, struct dentry= *dentry, newattrs.ia_ctime =3D current_time(inode); newattrs.ia_mode =3D new_mode; newattrs.ia_valid =3D ATTR_MODE | ATTR_CTIME; - ret =3D __ceph_setattr(inode, &newattrs, NULL); + ret =3D __ceph_setattr(idmap, inode, &newattrs, NULL); if (ret) goto out_free; } @@ -153,7 +153,7 @@ int ceph_set_acl(struct mnt_idmap *idmap, struct dentry= *dentry, newattrs.ia_ctime =3D old_ctime; newattrs.ia_mode =3D old_mode; newattrs.ia_valid =3D ATTR_MODE | ATTR_CTIME; - __ceph_setattr(inode, &newattrs, NULL); + __ceph_setattr(idmap, inode, &newattrs, NULL); } goto out_free; } diff --git a/fs/ceph/crypto.c b/fs/ceph/crypto.c index b9071bba3b08..8cf32e7f59bf 100644 --- a/fs/ceph/crypto.c +++ b/fs/ceph/crypto.c @@ -112,7 +112,7 @@ static int ceph_crypt_set_context(struct inode *inode, = const void *ctx, size_t l =20 cia.fscrypt_auth =3D cfa; =20 - ret =3D __ceph_setattr(inode, &attr, &cia); + ret =3D __ceph_setattr(&nop_mnt_idmap, inode, &attr, &cia); if (ret =3D=3D 0) inode_set_flags(inode, S_ENCRYPTED, S_ENCRYPTED); kfree(cia.fscrypt_auth); diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 9b50861bd2b5..6c4cc009d819 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -2466,7 +2466,8 @@ static int fill_fscrypt_truncate(struct inode *inode, return ret; } =20 -int __ceph_setattr(struct inode *inode, struct iattr *attr, struct ceph_ia= ttr *cia) +int __ceph_setattr(struct mnt_idmap *idmap, struct inode *inode, + struct iattr *attr, struct ceph_iattr *cia) { struct ceph_inode_info *ci =3D ceph_inode(inode); unsigned int ia_valid =3D attr->ia_valid; @@ -2818,7 +2819,7 @@ int ceph_setattr(struct mnt_idmap *idmap, struct dent= ry *dentry, ceph_quota_is_max_bytes_exceeded(inode, attr->ia_size)) return -EDQUOT; =20 - err =3D __ceph_setattr(inode, attr, NULL); + err =3D __ceph_setattr(idmap, inode, attr, NULL); =20 if (err >=3D 0 && (attr->ia_valid & ATTR_MODE)) err =3D posix_acl_chmod(&nop_mnt_idmap, dentry, attr->ia_mode); diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 4e78de1be23e..e729cde7b4a0 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -1101,7 +1101,8 @@ struct ceph_iattr { struct ceph_fscrypt_auth *fscrypt_auth; }; =20 -extern int __ceph_setattr(struct inode *inode, struct iattr *attr, struct = ceph_iattr *cia); +extern int __ceph_setattr(struct mnt_idmap *idmap, struct inode *inode, + struct iattr *attr, struct ceph_iattr *cia); extern int ceph_setattr(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr); extern int ceph_getattr(struct mnt_idmap *idmap, --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 02B3FC04A6A for ; Thu, 3 Aug 2023 14:02:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234236AbjHCOC0 (ORCPT ); Thu, 3 Aug 2023 10:02:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236616AbjHCOB1 (ORCPT ); Thu, 3 Aug 2023 10:01:27 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60DF74481 for ; Thu, 3 Aug 2023 07:00:56 -0700 (PDT) Received: from mail-lf1-f70.google.com (mail-lf1-f70.google.com [209.85.167.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 4C564423E9 for ; Thu, 3 Aug 2023 14:00:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071234; bh=CQAHRH/ms/cFOl3S4jtiakCJJYzaMB08Yq0KPV8/UVY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=L9SQQCM2L1t0eF+GcnbEpskA8H2VXKalllhgVsx0RXSdoJ0HSOrrH71ZTDiYFXkZb x84H8VgnQwsSqj0R3+GQIDlmuuqfeABsO9qHU717A6eNq/ZRQdTqtNu2nLEt0UzF0l VIQ5rfCCFVpTryRkdpOALw4bbhHvJHNeFnnLKaZ3va7jEuHHU20u4oQKd+NA1s7xA+ tYJqqlHLzYOwvftTjjI0nm8/TfdvmM4T/INuJhDp8uIrrX7Q/2VB0arxc4pM+bBpvi onCuMI18GyGKt/7w56ICIbQJsb8/OF+cvyYnENifXh1jIyXVYuiFt6Q995MnBsG3Oo FFp5/M+uu37hw== Received: by mail-lf1-f70.google.com with SMTP id 2adb3069b0e04-4fe0e1dfdbaso1000190e87.1 for ; Thu, 03 Aug 2023 07:00:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071233; x=1691676033; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CQAHRH/ms/cFOl3S4jtiakCJJYzaMB08Yq0KPV8/UVY=; b=RCa9bLYZDW45HccihFA/APmqbxnsuq+pfAXPpeaF/4HGkJdP299KYwOAFrMZizWeE7 +MhnF4X6fb5goUvpr4/9Ocwm9/iqAuaKFxR4EfBS1BU2yX6wBVilq6gZCicFfoeoNI/z PsIfiKGK8y6OGhnMWR+lfc8iQw/nTLpGoHqfntAriP6nZrkRxlNfQeJHbyxsPizCLuZw Co3mgpjwyYSScNeR/rOiN0qhLDyIW/M12kgmZFZo6U8SiMFYeFTzEUonLW/gcHsOaViF Cnpjr3QlJhKex/3mYEP5kYfJRie0EGUdvCGuv0OLI4oHEwIKMxI09sG6UrIEkE0KFrc7 vEzQ== X-Gm-Message-State: ABy/qLZdJOBpK6lX2C9kJVYGvEqc7WghVf0XMiy0x+dzau+yuKxLtueT OOmX/PBioT/oqGUcyqUaLoBIcUFU4UNFCBNULT6SxTcwSCH2s3Aj6J4elIF8yaZli2qiWN9tGJ8 uGy2q719Lfq0Nf+LdjO5VPzo80zHcQocsEk+4qwnkwg== X-Received: by 2002:a19:7b12:0:b0:4fe:958:88ac with SMTP id w18-20020a197b12000000b004fe095888acmr6943483lfc.6.1691071233259; Thu, 03 Aug 2023 07:00:33 -0700 (PDT) X-Google-Smtp-Source: APBJJlG2TlvShKJZGbBHpD/d9LrhdQiwMDiZTZ4bezS5dBphDImXuO3CGQo3Us9u6iBPnakIcoP6jQ== X-Received: by 2002:a19:7b12:0:b0:4fe:958:88ac with SMTP id w18-20020a197b12000000b004fe095888acmr6943455lfc.6.1691071232890; Thu, 03 Aug 2023 07:00:32 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:32 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 09/12] ceph: allow idmapped setattr inode op Date: Thu, 3 Aug 2023 15:59:52 +0200 Message-Id: <20230803135955.230449-10-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Enable __ceph_setattr() to handle idmapped mounts. This is just a matter of passing down the mount's idmapping. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner [ adapted to b27c82e12965 ("attr: port attribute changes to new types") ] Signed-off-by: Alexander Mikhalitsyn --- v4: - introduced fsuid/fsgid local variables v3: - reworked as Christian suggested here: https://lore.kernel.org/lkml/20230602-vorzeichen-praktikum-f17931692301@br= auner/ --- fs/ceph/inode.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 6c4cc009d819..0a8cc0327f85 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -2553,33 +2553,37 @@ int __ceph_setattr(struct mnt_idmap *idmap, struct = inode *inode, #endif /* CONFIG_FS_ENCRYPTION */ =20 if (ia_valid & ATTR_UID) { + kuid_t fsuid =3D from_vfsuid(idmap, i_user_ns(inode), attr->ia_vfsuid); + doutc(cl, "%p %llx.%llx uid %d -> %d\n", inode, ceph_vinop(inode), from_kuid(&init_user_ns, inode->i_uid), from_kuid(&init_user_ns, attr->ia_uid)); if (issued & CEPH_CAP_AUTH_EXCL) { - inode->i_uid =3D attr->ia_uid; + inode->i_uid =3D fsuid; dirtied |=3D CEPH_CAP_AUTH_EXCL; } else if ((issued & CEPH_CAP_AUTH_SHARED) =3D=3D 0 || - !uid_eq(attr->ia_uid, inode->i_uid)) { + !uid_eq(fsuid, inode->i_uid)) { req->r_args.setattr.uid =3D cpu_to_le32( - from_kuid(&init_user_ns, attr->ia_uid)); + from_kuid(&init_user_ns, fsuid)); mask |=3D CEPH_SETATTR_UID; release |=3D CEPH_CAP_AUTH_SHARED; } } if (ia_valid & ATTR_GID) { + kgid_t fsgid =3D from_vfsgid(idmap, i_user_ns(inode), attr->ia_vfsgid); + doutc(cl, "%p %llx.%llx gid %d -> %d\n", inode, ceph_vinop(inode), from_kgid(&init_user_ns, inode->i_gid), from_kgid(&init_user_ns, attr->ia_gid)); if (issued & CEPH_CAP_AUTH_EXCL) { - inode->i_gid =3D attr->ia_gid; + inode->i_gid =3D fsgid; dirtied |=3D CEPH_CAP_AUTH_EXCL; } else if ((issued & CEPH_CAP_AUTH_SHARED) =3D=3D 0 || - !gid_eq(attr->ia_gid, inode->i_gid)) { + !gid_eq(fsgid, inode->i_gid)) { req->r_args.setattr.gid =3D cpu_to_le32( - from_kgid(&init_user_ns, attr->ia_gid)); + from_kgid(&init_user_ns, fsgid)); mask |=3D CEPH_SETATTR_GID; release |=3D CEPH_CAP_AUTH_SHARED; } @@ -2807,7 +2811,7 @@ int ceph_setattr(struct mnt_idmap *idmap, struct dent= ry *dentry, if (err) return err; =20 - err =3D setattr_prepare(&nop_mnt_idmap, dentry, attr); + err =3D setattr_prepare(idmap, dentry, attr); if (err !=3D 0) return err; =20 @@ -2822,7 +2826,7 @@ int ceph_setattr(struct mnt_idmap *idmap, struct dent= ry *dentry, err =3D __ceph_setattr(idmap, inode, attr, NULL); =20 if (err >=3D 0 && (attr->ia_valid & ATTR_MODE)) - err =3D posix_acl_chmod(&nop_mnt_idmap, dentry, attr->ia_mode); + err =3D posix_acl_chmod(idmap, dentry, attr->ia_mode); =20 return err; } --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A0F7EB64DD for ; Thu, 3 Aug 2023 14:02:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236649AbjHCOCI (ORCPT ); Thu, 3 Aug 2023 10:02:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234858AbjHCOBX (ORCPT ); Thu, 3 Aug 2023 10:01:23 -0400 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5D4AA3AA3 for ; Thu, 3 Aug 2023 07:00:47 -0700 (PDT) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 5EFBC417A3 for ; Thu, 3 Aug 2023 14:00:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071237; bh=ARhwDsiPa3Ci/G2xteJutduXCGuj42UUR3o8sfJhjpo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YPaEm74UBhZ4IswqsnXdrKtiZbfGJIDdznc2z5O/+/Hw7R9h1SUf8zDpa5fl/i7uQ hhO8ROyTwnrq4du4AkmmqVw1ChicBQ6AURI2Q0yJnh689LIN7YRTzsEj8ia9wTU7Xh AcqXQo4YPLWw54oqezQUVi7CaQMnfJg72CyH+BnA2u2sOssyESlTMcO1RgaP4NR0mK HLSW3j/eho+ucQ+bhpfiJ348Bsj+WZjimmD+REjsTgz8ZnK3o4NSVP0br3BEDDroqw cs8LKK9cKSfzc/pjXjYTqmVhwcZbXeUUyiaJHw6SHsJIn2xAVC0ywkhuMwcRuE1ibj L4U0/SeC+FQow== Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-51a5296eb8eso788422a12.2 for ; Thu, 03 Aug 2023 07:00:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071236; x=1691676036; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ARhwDsiPa3Ci/G2xteJutduXCGuj42UUR3o8sfJhjpo=; b=fTWYIOd0HHgHiSBNHmuoqJUGjIAFtYoDUUQKGvlovUwE9lNHtUGjicMESgbzKo8BCU xM884s/BgTrCj7tfkjmGuFZmhfrCRWorqXwou/r5D5DKL2/NYn0bZwoZEti2Qbmf8U0p DoIXWJKB7vJJ9TfvvVhYxPWUzdO9kvHkzMePnIXoq4c9FnTf2isIgTMPaafKAUxzRvLl 8ANoRnvFbS+F0xZTefd0i/a54780Xs+rjCXVddPJgkeJCLQg3hjokBxgKNIJ5SNggLhu P9wlz2DiXpgDuSDujXjU4kf2hnULDaqbq27rK/Fhlo6Ow3hbUSJ68qtAz+xmKCmRbBBu CwmQ== X-Gm-Message-State: ABy/qLaupMBuYj4QUv550gK51xtDfRRIyim7dUAoAAUg78xp8eNaxgg5 Ql1uowhCMozKy0Ob2ttXvDdhRlq+pDSxK9EAJr5Exq0zlxmS9Qy4EmX65J3BoJ7qUckZmlBIPDu wqyaQTfsu6MtUr8bhdqfImBEk+NBJ+yLPODP79/CT7g== X-Received: by 2002:a05:6402:3d8:b0:522:3a0d:38c2 with SMTP id t24-20020a05640203d800b005223a0d38c2mr7901997edw.9.1691071235957; Thu, 03 Aug 2023 07:00:35 -0700 (PDT) X-Google-Smtp-Source: APBJJlHqUeh1b6pdCPnI6/QplOiCygliR0OiJNslAGmiFZTzhfRRFy9liUqsb+aWN3xG2roMQBYCqw== X-Received: by 2002:a05:6402:3d8:b0:522:3a0d:38c2 with SMTP id t24-20020a05640203d800b005223a0d38c2mr7901988edw.9.1691071235823; Thu, 03 Aug 2023 07:00:35 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:35 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 10/12] ceph/acl: allow idmapped set_acl inode op Date: Thu, 3 Aug 2023 15:59:53 +0200 Message-Id: <20230803135955.230449-11-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Enable ceph_set_acl() to handle idmapped mounts. This is just a matter of passing down the mount's idmapping. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner Signed-off-by: Alexander Mikhalitsyn --- fs/ceph/acl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 89280c168acb..ffc6a1c02388 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -107,7 +107,7 @@ int ceph_set_acl(struct mnt_idmap *idmap, struct dentry= *dentry, case ACL_TYPE_ACCESS: name =3D XATTR_NAME_POSIX_ACL_ACCESS; if (acl) { - ret =3D posix_acl_update_mode(&nop_mnt_idmap, inode, + ret =3D posix_acl_update_mode(idmap, inode, &new_mode, &acl); if (ret) goto out; --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A30EAEB64DD for ; Thu, 3 Aug 2023 14:02:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235843AbjHCOCL (ORCPT ); Thu, 3 Aug 2023 10:02:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236578AbjHCOBX (ORCPT ); Thu, 3 Aug 2023 10:01:23 -0400 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5D3DC3A9F for ; Thu, 3 Aug 2023 07:00:47 -0700 (PDT) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id EC7C1413D5 for ; Thu, 3 Aug 2023 14:00:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071238; bh=3z9qgb9ifPvjMsignbqopXQPiRZw936kb1zQwGNpHt4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KpxGdts9ohXv2liGir1FzV+8kXas8YpOpHIKcrcTvISOoqQt5lQJajchAfNsiHCNt 1OVhNIQ1LL0Z7F2vyQdAPdE8l3IhgTyoblROFT4B9sa6c+SjTdaP2ljFK+pCtrPWji QOTf2ETUpz0VMHVH2tg9QD9p/RafZqUab6XalD5UqaJMjJcfk7tCJ52kNqZlt9DUfS TTMFJKLeWknzudLmijWDacvyQLbgdJ9kpH+ZW95vZ54utovhzdipCkzE1M4277rs7S q/gi1KkoPDKcbhVF9A2VJ6rytwUZWxP3OmvIWUmiovu1hlCJPD8W7CcWPt6Y540Ln8 ZcUcEoh2cAlFw== Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-521a38098faso678596a12.2 for ; Thu, 03 Aug 2023 07:00:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071238; x=1691676038; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3z9qgb9ifPvjMsignbqopXQPiRZw936kb1zQwGNpHt4=; b=Laj3Nu1WOExFvJYZKsh2gh56p996m0hAGaeTTn41DrWsBlAug1VLe9SqFOmXLxmMQd N3FXgTmknY1vnAuJ5+Z11bWuY98lQyNqDuizpWAuog96ajTcTxti0NAKhytm5eb6bB/7 f3iVDEXDraf3Yxs/SeJfxapWxhoB8G64HozVTI+PhFNRQ0aMKu1Jj7UjjNZ7bhtpWYTE ipZx39uWZtd82FWuIAowPPrtWvpHgMl7Rray3O1FbH2F0VqocZgsKIsyemtIrtv1Boe7 UWe+91EJB+yapECynK/gvGTtU/nNStMo2WWFklrJPy7p5u/SKEqh37PSyMogn+wMAvWT efEQ== X-Gm-Message-State: ABy/qLaEFK5ZxrMIYRipc19oW3h4btZv1koAXIZnhoz7kKrIymxQh10i l3Q4deY5edykNBCON0W9KIKMfdA5htfyG/D1qYOJWekVc5VNJxkagwCP1St2+l+JZ8Axho+7WAi i5I9LqS1ROAbk7DRmgDDOsTRhcp7JQbpGM8CKfer6Og== X-Received: by 2002:aa7:d7c9:0:b0:522:2b76:1985 with SMTP id e9-20020aa7d7c9000000b005222b761985mr7132495eds.2.1691071238722; Thu, 03 Aug 2023 07:00:38 -0700 (PDT) X-Google-Smtp-Source: APBJJlE0pp6lmcBwuEsjLXRAH6NybsqxtfW1AOq9hV5+FXgfxFhIOUTjX8q9MHOhwq4qu7jI+RVc6Q== X-Received: by 2002:aa7:d7c9:0:b0:522:2b76:1985 with SMTP id e9-20020aa7d7c9000000b005222b761985mr7132484eds.2.1691071238558; Thu, 03 Aug 2023 07:00:38 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:38 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 11/12] ceph/file: allow idmapped atomic_open inode op Date: Thu, 3 Aug 2023 15:59:54 +0200 Message-Id: <20230803135955.230449-12-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Enable ceph_atomic_open() to handle idmapped mounts. This is just a matter of passing down the mount's idmapping. Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner [ adapted to 5fadbd9929 ("ceph: rely on vfs for setgid stripping") ] Signed-off-by: Alexander Mikhalitsyn --- v4: - call mnt_idmap_get --- fs/ceph/file.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 7470daafe595..f73d8b760682 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -668,7 +668,9 @@ static int ceph_finish_async_create(struct inode *dir, = struct inode *inode, in.truncate_seq =3D cpu_to_le32(1); in.truncate_size =3D cpu_to_le64(-1ULL); in.xattr_version =3D cpu_to_le64(1); - in.uid =3D cpu_to_le32(from_kuid(&init_user_ns, current_fsuid())); + in.uid =3D cpu_to_le32(from_kuid(&init_user_ns, + mapped_fsuid(req->r_mnt_idmap, + &init_user_ns))); if (dir->i_mode & S_ISGID) { in.gid =3D cpu_to_le32(from_kgid(&init_user_ns, dir->i_gid)); =20 @@ -676,7 +678,9 @@ static int ceph_finish_async_create(struct inode *dir, = struct inode *inode, if (S_ISDIR(mode)) mode |=3D S_ISGID; } else { - in.gid =3D cpu_to_le32(from_kgid(&init_user_ns, current_fsgid())); + in.gid =3D cpu_to_le32(from_kgid(&init_user_ns, + mapped_fsgid(req->r_mnt_idmap, + &init_user_ns))); } in.mode =3D cpu_to_le32((u32)mode); =20 @@ -743,6 +747,7 @@ static int ceph_finish_async_create(struct inode *dir, = struct inode *inode, int ceph_atomic_open(struct inode *dir, struct dentry *dentry, struct file *file, unsigned flags, umode_t mode) { + struct mnt_idmap *idmap =3D file_mnt_idmap(file); struct ceph_fs_client *fsc =3D ceph_sb_to_fs_client(dir->i_sb); struct ceph_client *cl =3D fsc->client; struct ceph_mds_client *mdsc =3D fsc->mdsc; @@ -802,6 +807,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *= dentry, mask |=3D CEPH_CAP_XATTR_SHARED; req->r_args.open.mask =3D cpu_to_le32(mask); req->r_parent =3D dir; + req->r_mnt_idmap =3D mnt_idmap_get(idmap); ihold(dir); if (IS_ENCRYPTED(dir)) { set_bit(CEPH_MDS_R_FSCRYPT_FILE, &req->r_req_flags); --=20 2.34.1 From nobody Thu Sep 11 12:49:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F7EFC04A94 for ; Thu, 3 Aug 2023 14:02:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235656AbjHCOCg (ORCPT ); Thu, 3 Aug 2023 10:02:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47212 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236633AbjHCOBa (ORCPT ); Thu, 3 Aug 2023 10:01:30 -0400 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7682644A6 for ; Thu, 3 Aug 2023 07:00:58 -0700 (PDT) Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 75EE642418 for ; Thu, 3 Aug 2023 14:00:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691071241; bh=VUgFUdqFi9+fVf4KBmHgMSHcrOKks48HLHXKSZR7nM0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JIRRfFumk1KY9LDcMpWwjJ90vLnQarrxyxZjplJtu/Vurq9gBwGboIOlerOQhzlKO c8NpAmjijcKMOiQ+O5XzppV//nZ6aECE9D4/UWeo8/x1h/Yinop9Oh+/+1JKGdE5dN 24NWgAR/6NAwkg3GVrZlk2DoMIF77B1eg2CVvWdqanxnF6HwZ9+flPObW//Kv2xDuN bbrmz5AmcSXAdYZHShoGAjORp65Bw0v37GbU0ygaQETLLpoZtJMzw5KdspRvXlrIMe JB8pCRbin34GBqST0G0hJuVsMhjNre9ak+iwBt7cNJo05IFB1OQJhGKgt5pV9BZ+6S zZ6xOsiG4o06g== Received: by mail-ed1-f72.google.com with SMTP id 4fb4d7f45d1cf-5223854ef71so685389a12.1 for ; Thu, 03 Aug 2023 07:00:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691071240; x=1691676040; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VUgFUdqFi9+fVf4KBmHgMSHcrOKks48HLHXKSZR7nM0=; b=l7iXpSvU8c4pVezwAsa04w15jmQyQKBcpeKkMVUlYfv6WQFolO3b11TRLNTvJkwZLs B5EdnwPci5tPXQY/CZ9m6jQBCsEypFFmigakMyRhc+lUOI5jmjzvUS9Eux39/CZEBBnu uO5romNiq37k6+/OwBdvOCclPaXBNn2m6VpiKC7KYX+v5Y4R1U3LaPSOeJ1IsZ0L41eN krHy58YE0gOOpZwPZLF3uhOvLeUgaplt2EyA1GyzuZraf1UdH87cgnJKZzZnoSgzB6eY C6yJ6edd2AehSbeWni/mYmVECcxL8ht1oogIQDGES0cL1N9RFOYlhzCmxIWtStrttaZ4 dqPw== X-Gm-Message-State: ABy/qLbHQIDlqYrP1eCp4WtWLRAfK/kro7NiJBLA31YIN8DKVK1wN/Mv qkYWCMAnoOZxqXsHqh5FyB0ZmZ9W/P3mhzPzcl6EaO4DkPad9ARketcsyVCjTAa9eaXxPtpF8oI 3riRhsNA54vmeyO+eYouDkaVfdvM4hwARDWLp8mN6jg== X-Received: by 2002:aa7:cb48:0:b0:522:37ca:a51c with SMTP id w8-20020aa7cb48000000b0052237caa51cmr7051507edt.40.1691071240822; Thu, 03 Aug 2023 07:00:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlG6Q02R9Pwuh55imXZTjVXNaetMucDVc5mJ3+DcQHv4FmT8HpUH72N1OhXDUzrzxEYbQpmVdA== X-Received: by 2002:aa7:cb48:0:b0:522:37ca:a51c with SMTP id w8-20020aa7cb48000000b0052237caa51cmr7051500edt.40.1691071240663; Thu, 03 Aug 2023 07:00:40 -0700 (PDT) Received: from amikhalitsyn.local (dslb-088-066-182-192.088.066.pools.vodafone-ip.de. [88.66.182.192]) by smtp.gmail.com with ESMTPSA id bc21-20020a056402205500b0052229882fb0sm10114822edb.71.2023.08.03.07.00.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:00:40 -0700 (PDT) From: Alexander Mikhalitsyn To: xiubli@redhat.com Cc: brauner@kernel.org, stgraber@ubuntu.com, linux-fsdevel@vger.kernel.org, Jeff Layton , Ilya Dryomov , ceph-devel@vger.kernel.org, Alexander Mikhalitsyn , linux-kernel@vger.kernel.org Subject: [PATCH v8 12/12] ceph: allow idmapped mounts Date: Thu, 3 Aug 2023 15:59:55 +0200 Message-Id: <20230803135955.230449-13-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> References: <20230803135955.230449-1-aleksandr.mikhalitsyn@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Christian Brauner Now that we converted cephfs internally to account for idmapped mounts allow the creation of idmapped mounts on by setting the FS_ALLOW_IDMAP flag. https://github.com/ceph/ceph/pull/52575 https://tracker.ceph.com/issues/62217 Cc: Xiubo Li Cc: Jeff Layton Cc: Ilya Dryomov Cc: ceph-devel@vger.kernel.org Signed-off-by: Christian Brauner Signed-off-by: Alexander Mikhalitsyn --- fs/ceph/super.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 18bfdfd48cef..ad6d40309ebe 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -1581,7 +1581,7 @@ static struct file_system_type ceph_fs_type =3D { .name =3D "ceph", .init_fs_context =3D ceph_init_fs_context, .kill_sb =3D ceph_kill_sb, - .fs_flags =3D FS_RENAME_DOES_D_MOVE, + .fs_flags =3D FS_RENAME_DOES_D_MOVE | FS_ALLOW_IDMAP, }; MODULE_ALIAS_FS("ceph"); =20 --=20 2.34.1