From nobody Mon Feb 9 01:12:12 2026 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 3A45BC001DB for ; Fri, 4 Aug 2023 08:50:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229804AbjHDIuF (ORCPT ); Fri, 4 Aug 2023 04:50:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42502 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229723AbjHDItd (ORCPT ); Fri, 4 Aug 2023 04:49:33 -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 1108B49E1 for ; Fri, 4 Aug 2023 01:49:31 -0700 (PDT) Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.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 46CB4417BE for ; Fri, 4 Aug 2023 08:49:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138970; bh=GFNwWvhavDkNrI4eqwez7OWrv+w+Iw1WNhnwQW/Fw7E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZdFh0yafbC1h4o4Creja86XLjlgPqIw/8g5zh1Q0AtHR/4uzszzMuJlGO4lyCf9Be jAhiXOyM/aRWrGH4Wx4sz4dt2tv3ArPqt+n7+IBT9Hlu568dxViaJFyj8kVDclsdTP q0ymyzearB/6eY2LF7LBhFC8uf73UVi/L1+2REXLtLOpA/0lQfWcq9G9Av3NZp2vWg dujJ8ovwsNtYcbi0pXOtwLKH6Oq7XBVqHG0ywFvD8CnFTeOkPIgct944T2/cIXmZte Bo6TqW76euy/qTRxSWNM/Ha6fy6zBQQ/PjI+q/RKaMOaN3FS6JIoZ9TJv6HEpyXo48 Z8SWEK4uH/9mA== Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-99bcf6ae8e1so122979066b.0 for ; Fri, 04 Aug 2023 01:49:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138970; x=1691743770; 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=M4XAPdKroPwGhcGD4IJifOJY9mw5KZjr0o7Dd/5Urt3hvG5w+1fmBUbjM8Zt3/yp9P xoChKVH6AkcNM5gg6A6RnsHBMIMQGt6V5GoARrIJaQ01+Sm6qAHQJS676E8nTeQijKDo X0y/vtgavAZNMGZE6sifQR4BSJ9S3LbdfJ1DDax5xIWt60btduYfT/8j3bBpF6flWYjt KikdyK9C/bkWmaRM3GYS6+OKss+hdvYgyR4hX9MTU/zjLPBPyk8zgBm3OMEFTSg+GuUu j+927ils7goDNbagm+BoFnDydxSaHghYcQhLzqzad9sa2axzFAcCyCu15Vf7YsooRkJ5 sGpg== X-Gm-Message-State: AOJu0YyDhydI9bHhKtiYILZ0eICDX3sCGBE8Lt/JXM0I7ZxCzu4Ip3Nr Xnuot4i0VPJP7jBUe+iRA5IlgixN7G8G0QsOJUUaUgx0REeqsePWu2mg2si+MCMtXKiXASEu5FV Bpu65505UxbOK/GCrlvNnxyduvCFOBl5wWmkKpAdXFg== X-Received: by 2002:a17:907:75c9:b0:98e:26ae:9b07 with SMTP id jl9-20020a17090775c900b0098e26ae9b07mr856011ejc.35.1691138969807; Fri, 04 Aug 2023 01:49:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGzJvUEdQ1szBS20TzLv4pF+D/kH4bm1Trv3iQThRWbQMHWUfpqSKG2LY+85emIKvwXfeMoXA== X-Received: by 2002:a17:907:75c9:b0:98e:26ae:9b07 with SMTP id jl9-20020a17090775c900b0098e26ae9b07mr856001ejc.35.1691138969650; Fri, 04 Aug 2023 01:49:29 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:29 -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 v9 01/12] fs: export mnt_idmap_get/mnt_idmap_put Date: Fri, 4 Aug 2023 10:48:47 +0200 Message-Id: <20230804084858.126104-2-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 8468FC001DF for ; Fri, 4 Aug 2023 08:50:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229739AbjHDIuV (ORCPT ); Fri, 4 Aug 2023 04:50:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229735AbjHDIth (ORCPT ); Fri, 4 Aug 2023 04:49:37 -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 816C54C03 for ; Fri, 4 Aug 2023 01:49:34 -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 32A7C44271 for ; Fri, 4 Aug 2023 08:49:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138972; bh=StxqveXF5moq9iJU4D0IjENKfN6jaIfCw60woBc2a1E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dV95e+C6a8+U9YNmwYyII74LQQbMgCqRI2qE7d4jbZ8XgNEPoftl2N8GyUbCXIBdv gJ79USRnE/uMQtTg+//vj1HJ7ACh6h5wsiQrls2ehb6TZdxLyu4SZGZoO+UALGGIg1 oCQSAmBBtE/dRBAKqwtT9AxXKak6L4cv/ne1OGOvYFPMaiwaG435V0UP/ySBvwcmYw 26aTldcnxGaOoGb2O2Omk5P2h0tSDAgnfb26lgV9FG8SrbW0J8Zg99CA4A22MBlq7F 3Sbd/wGrhewOcfM9yifdT60aHednsSDpzb8bTV8c0B1DuOmZ6szcyPJsOzM1zPS8GZ 88hlgEj6ij2jg== Received: by mail-ed1-f72.google.com with SMTP id 4fb4d7f45d1cf-52279f6305bso1308139a12.0 for ; Fri, 04 Aug 2023 01:49:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138972; x=1691743772; 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=Ee+ZUiZ4a/J3waKouRfn27+Ckt/cmXnSCWlLmyns2Nr6gks74Qo6TIB+Dq7dG8vHz+ rvo8ejOmHPwaMtdmAawHaZW8pPpWucdaWPu0xW/CK18PDN7ec0TZViTA9fJM5zDMmwYJ C1Unxoj8jBc5/FuIO56Zla+njSOpyBwr4Y9TeDSU2cL8q3ixS83xzTVbKULF15QR2Ofy bXdMsDYue7UV4WKcRH9ySutGHNSkAf7oJmEUhLuuyXpfHroDaADhx9TAPvv+tjulj0a2 AX5zofdL1MD7+PE+498cIQxq7dz/zMcTsS/GBnOJ6t9dblb0YQtRybGlxX5of+jIvosW vo9g== X-Gm-Message-State: AOJu0YygzrJ8O3kQwJa2ZUJbT9UoR32mK4D97rPkdN+JMHTtSr+L/h5k /OulUd9ZYsU4U6eQPkta6IsAOJPCJotEyLr/4j5x+TI5Kyzo7kgx2qRMlm/6ecaVWm4XASdyrZb 2jyAwi5FTNj9foLJwbxoW5YSjkZYlXew3lixpTMxl+w== X-Received: by 2002:a17:907:2c4d:b0:99b:bf8d:b7e1 with SMTP id hf13-20020a1709072c4d00b0099bbf8db7e1mr863831ejc.17.1691138971899; Fri, 04 Aug 2023 01:49:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHt0cJxyxNVN8MFBPcovFv21DNeI/vcPblkJxrD4B89INifTjeigoUO/zvfSlO7YIYpAZQAKA== X-Received: by 2002:a17:907:2c4d:b0:99b:bf8d:b7e1 with SMTP id hf13-20020a1709072c4d00b0099bbf8db7e1mr863822ejc.17.1691138971748; Fri, 04 Aug 2023 01:49:31 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:31 -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 v9 02/12] ceph: stash idmapping in mdsc request Date: Fri, 4 Aug 2023 10:48:48 +0200 Message-Id: <20230804084858.126104-3-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 7CF92C001DB for ; Fri, 4 Aug 2023 08:50:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229863AbjHDIuq (ORCPT ); Fri, 4 Aug 2023 04:50:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229757AbjHDItl (ORCPT ); Fri, 4 Aug 2023 04:49: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 2F9FB4C38 for ; Fri, 4 Aug 2023 01:49:38 -0700 (PDT) Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.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 5C73D44275 for ; Fri, 4 Aug 2023 08:49:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138974; bh=Sm84/KT93swuS/ikVEAwSnx6TJ8Tr5bzLLYRGJZTQPA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ETsG7J1SVkjD7bA7aDMbcMogsJdV7zbpbnY77WKzdPdK4ELDje+5qO2jugfg0cGMh PbVKbCutnTjaDCt3IciwUsns3WS1CZNUl+TcCxa/x1WxILY7NbGg9DsqnO0mfPTn// ZTJNk+HTBiDlVHnwr1uPh6mmJp/H+80vNa8og0FLyVHpflyqc0vTa31aIVAGHjJozZ HjIodifTOLJo6q51O8D7cmfduOxXTRSZs70p9G3z8iyEoxjsZLvbJxmtD2a0J9rtjX LjHqEsYlHf+iVXiuug07msgpRsU0iktd75P1WWjETKBY8k7AaQulBhrKj7K6ZpS9DR Px12znWVBt5Kw== Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-993eeb3a950so127551566b.2 for ; Fri, 04 Aug 2023 01:49:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138974; x=1691743774; 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=Sm84/KT93swuS/ikVEAwSnx6TJ8Tr5bzLLYRGJZTQPA=; b=IZWy8aDiq3LnCzGGHeSX8QYWXF0Ne0nzDaVL2q8WNxGdBKtfh9SFfo55Wb8Cf3YipZ sNgksEBDB6RJ6LcSL7z+w2Pdw+IwNAOKxTKMQiV/Qd+gkvAQh7tNlgACNoLc7T8D2rP2 b7Sl6nBVxLd2ls23dz9UlqsRAzcqKfNwkR4/FSao9Tge+tvu0+YXSOCXp5Du75FfnUMJ 48KjaH/1h+oj4LesckePT6b5Zx6RO+qnpflUEQ9Y9SRRDzvDo4w9E7auRgH33LuT383E CdFoJV7NxOR5bR439UTe/zwN5VVzrvaGBcwiRKUnpk76UZBGoLw4l85zeYbkI1cncIpP sRnQ== X-Gm-Message-State: AOJu0YxYbi5KYas18joLJ9WPbfAKzRjm0Qkk/NR77ID2qp5Cqr0mI9Fh mtuYV76LxQ7eQzqFQmY9o5YhY3cqhK6qqVwuP5uRmvQSXYHIpJEmzO4t2DdaEoJNWc2VtUmbk+9 w9A9QHR42EgFYc4+hfFcjAhJicoBcnXXLoN34mlbaTA== X-Received: by 2002:a17:906:2112:b0:99c:4ea0:ed18 with SMTP id 18-20020a170906211200b0099c4ea0ed18mr952383ejt.8.1691138973828; Fri, 04 Aug 2023 01:49:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGgdSPLTZJvYlL3Mzi5CnZ68sMi9r2jxcre66CKNzUiIEhpEQczFn48u3hw7bTM9iJAgWJeVg== X-Received: by 2002:a17:906:2112:b0:99c:4ea0:ed18 with SMTP id 18-20020a170906211200b0099c4ea0ed18mr952369ejt.8.1691138973644; Fri, 04 Aug 2023 01:49:33 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:33 -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 v9 03/12] ceph: handle idmapped mounts in create_request_message() Date: Fri, 4 Aug 2023 10:48:49 +0200 Message-Id: <20230804084858.126104-4-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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/ Link: https://github.com/ceph/ceph/pull/52575 Link: 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 Acked-by: Christian Brauner --- 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 | 47 +++++++++++++++++++++++++++++++++--- fs/ceph/mds_client.h | 5 +++- include/linux/ceph/ceph_fs.h | 5 +++- 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 8829f55103da..41e4bf3811c4 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,34 @@ 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); + nhead->struct_len =3D sizeof(struct ceph_mds_request_head); + + 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..b91699b08f26 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,9 @@ struct ceph_mds_request_head { =20 __le32 ext_num_retry; /* new count retry attempts */ __le32 ext_num_fwd; /* new count fwd attempts */ + + __le32 struct_len; /* to store size of struct ceph_mds_reques= t_head */ + __le32 owner_uid, owner_gid; /* used for OPs which create inodes */ } __attribute__ ((packed)); =20 /* cap/lease release record */ --=20 2.34.1 From nobody Mon Feb 9 01:12:12 2026 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 32E89C001DB for ; Fri, 4 Aug 2023 08:50:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229872AbjHDIuu (ORCPT ); Fri, 4 Aug 2023 04:50:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229598AbjHDItm (ORCPT ); Fri, 4 Aug 2023 04:49:42 -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 2FEF34EC5 for ; Fri, 4 Aug 2023 01:49:38 -0700 (PDT) Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.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 BC87F44279 for ; Fri, 4 Aug 2023 08:49:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138975; bh=vA7Z34zBj4jzvwwxICC6DC+yM3ZqeVgNJDmT3zJBPQ8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=kfIgkHpXsJ238I7eMhLRd77KExHJ1PXoUky7a99WBnSjfAfzaAkGmaXtNId2VZDOa P+h6nW54W65b1Re2l7QFXuPGTcaAcgZ15Nu2ZYeemzQbMffTxih8ayhm/qFxO1jLZ8 IvzCukjDmnW/RaNIDh2+2dlne6mKwyCpp5AV86PEVn+dVduILz+u5eAMDiw1zDfEgK POWMzHhYCTy+0KstNqN6gxwjJNsm1NQn+cBIADxVlB4I3e52SLyRL6tKRHVq13ElyD prmDWf94aaVwFUvSfoXmPQGMkFhgHk9tEqRuGE72XRZ3uDVaM5sPQ4TYG+lbL9RLl8 PNx7JHmLvb/Tg== Received: by mail-ej1-f69.google.com with SMTP id a640c23a62f3a-99bdee94b84so243390566b.0 for ; Fri, 04 Aug 2023 01:49:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138975; x=1691743775; 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=vA7Z34zBj4jzvwwxICC6DC+yM3ZqeVgNJDmT3zJBPQ8=; b=hCszZb4ZDzCLgzQOz7v7KGp02oHM+MXzwz9WMKQolgtbxzAmnM94gPOES9XEbS8s0k JvmGmgR06nUz8tquQqWV5qGVtUlv5pHoNunX2944FzfKUZ6uLeCAZMCnCZadEr108W3V qoKNLYG3+fHea3+oD7AoRI1vqcmgkpFHrN1lvFNMKcDsQ66kEQ2I9eLBjiM0fcNTL328 cbOm/m46BzLCYz9ZCVo/umhxFTCoDd5OfCQMzZHjA1eITdUlGz/1Iv8CQ5YdJ4rCLAbs ZGaMxHyg/y0FQ1tu4D7/WOig9fdgSY5chnL32UE5zE7FaMHWEVr4wIE8Dyy0dPveqwmE XEWw== X-Gm-Message-State: AOJu0YzxhJ1+C1jR2kNmRz0APk2MKjhqFHYlcFHAHW0Tl6XyB4gQv966 wyLPffeMVrDQHhAEon/o4FNPgIUvoWUwE2Bgr60R84i62hMVtHWtISMVMXYsftsV7xu4atctoX4 nT7/0RA+WQhmlFrRjDXSCrBS0jRb5Hg/6s28F4774Gg== X-Received: by 2002:a17:907:1ca5:b0:96f:9cea:a34d with SMTP id nb37-20020a1709071ca500b0096f9ceaa34dmr1440490ejc.21.1691138975508; Fri, 04 Aug 2023 01:49:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHaLHd/m8ShBoFoitgZ3ppJ4N/JTnjCwUDlUN77awev8PwhYvcw899vgUcnvDYDfWuRJ/FGTg== X-Received: by 2002:a17:907:1ca5:b0:96f:9cea:a34d with SMTP id nb37-20020a1709071ca500b0096f9ceaa34dmr1440479ejc.21.1691138975358; Fri, 04 Aug 2023 01:49: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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:34 -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 v9 04/12] ceph: add enable_unsafe_idmap module parameter Date: Fri, 4 Aug 2023 10:48:50 +0200 Message-Id: <20230804084858.126104-5-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Acked-by: Christian Brauner --- 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 41e4bf3811c4..42c0afbb6376 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 /* @@ -3095,9 +3109,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 Mon Feb 9 01:12:12 2026 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 E1471C04A94 for ; Fri, 4 Aug 2023 08:50:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229889AbjHDIuz (ORCPT ); Fri, 4 Aug 2023 04:50:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229761AbjHDItm (ORCPT ); Fri, 4 Aug 2023 04:49:42 -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 8CE994C3B for ; Fri, 4 Aug 2023 01:49:39 -0700 (PDT) Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.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 C7CC03F205 for ; Fri, 4 Aug 2023 08:49:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138977; bh=mZe9Srkw8mk9+UpxCgBj79JVdzJ8PXD8OnJawp13C+4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SwHT3qEFYsgQTrcZKivEqLIyocWHk2VxMCYuienXEU18fS4cv6hal/HXWkDzmt0oh Pm45Cs2lIcWL99S8Tyz8F7Njb0RorTEg0+vD9iyULOra7alfT0gn4t1492ra1bNlFI qQYdK+GbdZ5dt57SU/y9BrInO+GFuTXW72Fu3dnWs9NEWPBMqtQhPLS2hgbm+68FDI zFNd3fyxY2XOCZXjIASAmt1Qk8GUobh62c7RsYQoAtqTHrIx6HDWBAc4dztBIbhWvA uMdyUKDH/Mwij9CJqlHBJmTMWD86kmcO71VpmavIDTffnYcRR+Ixu5nBH2n43SyQSV Q2mHx0+ud503w== Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-99bfe3dd009so356603366b.0 for ; Fri, 04 Aug 2023 01:49:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138977; x=1691743777; 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=IUlLz1ZNScspN6dIy3JOxGrSgHz6S3mCTcXRrgqrMiXUjtVlK7hl8gWy/ZlVkfQUBz 1IyfFa2Fnj3UH4foeBHtS6KF8U+I1eVILwMk+KqPtouQOKFuc8UhgZut1N/QFP8ncNwd BqixfCGuDjorMjaiOklGs4vv8ofP+t+EaPaA5fLKLt0on/uo6538HsFZ73AM36JhQJ9f GsbJxEroD2VdJKJWCDUrtM6sZ7u6bV6HTQbWG6GiKsCq4H/EtOoWtrXiMO6TJ2yTY1Co 2/JV8WU/5ecydaDBYlS4bCKPPxhowCg537WDOmHMk9Y21yhL9gCYj68eF4bhsEb5ab/b hkMw== X-Gm-Message-State: AOJu0YzeY7aa9wRCAbS5EtYZHYehJuY3YkGi9O7SbnaIJkWNH2ayneZJ 0X+3oBwzXSMDq5PFE6Q5WLqNMz6Ds344bLsZOm+QxrPmG6FpqaNbQAl54IkpyA4O0FApkDrVmJh ZvCEHSBCEYhQF6XcXExuZZ/wYNrAU5j9+QqWg+4bDBA== X-Received: by 2002:a17:906:30c4:b0:99b:50ea:2f96 with SMTP id b4-20020a17090630c400b0099b50ea2f96mr1353116ejb.12.1691138977189; Fri, 04 Aug 2023 01:49:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IENvJC3KHm+M7be5nN+fqKwo0plcwe5syTouQ0tjPAcuDJqmboM6FZDl+R6VHCgZD1KqsNuNA== X-Received: by 2002:a17:906:30c4:b0:99b:50ea:2f96 with SMTP id b4-20020a17090630c400b0099b50ea2f96mr1353099ejb.12.1691138976964; Fri, 04 Aug 2023 01:49:36 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:36 -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 v9 05/12] ceph: pass an idmapping to mknod/symlink/mkdir Date: Fri, 4 Aug 2023 10:48:51 +0200 Message-Id: <20230804084858.126104-6-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 3F3AAC001DB for ; Fri, 4 Aug 2023 08:51:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229894AbjHDIvF (ORCPT ); Fri, 4 Aug 2023 04:51:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229634AbjHDItn (ORCPT ); Fri, 4 Aug 2023 04:49:43 -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 17D5249EB for ; Fri, 4 Aug 2023 01:49:41 -0700 (PDT) Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.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 D58354248D for ; Fri, 4 Aug 2023 08:49:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138979; bh=dbq6NgAMN4t7wxNwyddA+VrJjiC20GkONqywDZDeteI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=edXdGDcEtsqo8doV8kunlQD0coNauOaZVaUTViowv+QcRw+CVs1fZojjFCTALl84e Dy4VIouV/7PIzHeiRU1pkGewYL/EeBCU513DzJoZwbOFb0gSr3sJQMUdHfuaelygzO hBz3BIEGL6AujCjvuzD6MA37w/ZVOrWOltPo6e7XK+h9uFk994w7CzRyiNZ1cmddXf jLzonDlrVp4GM1WQGp3Mg9FzjG4NxPLVyQduc1dBzWwJtMz4gVSGIzeh/lum3B1Teo 7YwJ4wryXuhE9A+fQ3gru7APn+CURcSgcoFS5PIs41qEJ9pJjxgVZmcF5GtB7Lk0z2 VhvxQZcS1kU1A== Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-94a34e35f57so118538366b.3 for ; Fri, 04 Aug 2023 01:49:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138979; x=1691743779; 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=MhdJoz9EOY9Zruoh9NZLEy1pzWwbnvewkKtY7OQ+QL3bm5r8HQjDLlM6PkPA4ZCLcG l1pRTot/cUAwLJM4ngZ0hZB8SEE3k83PuA2STtEdgg6gnszi6ybp86BGemFOQg6yvcSo bSzqJ56RK+tCLcyQ8u+87xblt2T0k+yGgZzeN5/2JiuHphdgYOY7Kjc+jPBiKGRPoBIs 5xc9MLg3UD9UXwOTbUaye+na3KxDmF1CRaI7rAOtMijLhsmbVh1whIEyQW5pWqfifbI8 VeDm4cps48UwkHmhpCNVbMhr0Sz6kg0hwkGG5eW9v5O+Adj4YhFjAdJkl+S4FO3iqfcW dhUQ== X-Gm-Message-State: AOJu0YzaCXbOjv/p/PGa/kbAi6cZ8WgsUzyvVGCTX6y0dzxyXl/izWxl 5AVD418ivldjHJSufuHVu4uw2+LTuPgljHffuV8vEJmG60kA5YuMMzITJecpf+39hVwd/fGcMb8 MxiPzLBG6HnHEl00WyKHJoAyB2aBV87CTj15zSPwaEe9aYlN/Hw== X-Received: by 2002:a17:907:2c75:b0:99c:331:4194 with SMTP id ib21-20020a1709072c7500b0099c03314194mr876530ejc.45.1691138979382; Fri, 04 Aug 2023 01:49:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IESWXoXKkpSChoFK7yg9A+13bbRcRctLrscoYkM2GH7k6ZkVluHa/bbcpxuaBSQemmgRG6ytQ== X-Received: by 2002:a17:907:2c75:b0:99c:331:4194 with SMTP id ib21-20020a1709072c7500b0099c03314194mr876517ejc.45.1691138979203; Fri, 04 Aug 2023 01:49:39 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49: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 v9 06/12] ceph: allow idmapped getattr inode op Date: Fri, 4 Aug 2023 10:48:52 +0200 Message-Id: <20230804084858.126104-7-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 B8D57C001DB for ; Fri, 4 Aug 2023 08:51:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229926AbjHDIvR (ORCPT ); Fri, 4 Aug 2023 04:51:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229656AbjHDItr (ORCPT ); Fri, 4 Aug 2023 04:49:47 -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 EAB8249E6 for ; Fri, 4 Aug 2023 01:49:43 -0700 (PDT) Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.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 D6F7C417BD for ; Fri, 4 Aug 2023 08:49:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138981; bh=dyWOzKMsgYqMEu72C+uRJxx6NqzlAitmeRu8HoKY4M0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ixIVluzVEEFVnTs+B8ywrPN+MsLVxAOgurQvirTbsMHHw43QikshPOzToXoS7Klip 4lkpteGQ2xNUMsKQFIc+ySJbnmvJpRVzyWZKdKz7yajCFJ49hjNg51Qg2I13w4a2AO 377yZOEy2xKeFE8LZt6q6vkJg67wtEJHQy40wftWDc7IvaT5CD05Tc4YAQgEYxIlNf ZsyKaVDLZ2EvgW9068Rh2cYqGF9dnIAY8ZhEWD88QxksROM8efWlFkkYgR6I+3yYzQ XAapETm1KHzlQm1T7j/GgzHtmPyro/u9sePhBxYC8uJDaDonk+2qvriwtZuKwYcmR2 RDku7PVfkkk5g== Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-94a34d3e5ebso124417466b.3 for ; Fri, 04 Aug 2023 01:49:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138981; x=1691743781; 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=CN4Y03YgG5o1rEqvPveoQPbKBVJEKuJHYJot0GdAXNm4YSMull4unedo8X10Vxq/CK iz0BB/7OOw46KZnmu6DaxjzjUD5HkcBNbA11we2F/Cd5O9DSn5WnkKP7jO0VJIB//hqA d/8gA0wFP07UhPmM0zZP0ZFD6KmvX5/nUCOAJ1sPClptEpk9gQ3z6LTBIcvvvgL7spKZ ccDDgStsBv/fAM+s/Q8KXC1Y/XEOs/iP+Ql0I5bb3x4X8Uc9ODh/LhIIb/8Fc8peeaUe pk6ySGfittJj0VHEbBK6r4vgdR7FxhP/Vjx8reBD6P8Jz1oePdEEOvW7tux0FJsCopbx FjZw== X-Gm-Message-State: AOJu0YxYxE+DXcvkv2WILN+oGODtW6Q6YiKn6143bAsRl4tPkZBxHvPV Xo0ddNkKqH36uUUT8Z6uyH3ZlIGKvtqqH7hnlzdZfA8divqngjR9mHzAUU6qCI27yVD2UTMkZKv Jrllj55qLu2ymvKJ/ODgAhDbJCgpxlEWaBEfBIgqE/A== X-Received: by 2002:a17:906:1045:b0:997:e9a3:9c59 with SMTP id j5-20020a170906104500b00997e9a39c59mr1098706ejj.6.1691138981178; Fri, 04 Aug 2023 01:49:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH95AAsx4OwruricX0LBMySZoccvHc9K7IbrBk/rcTzsxclDEI57KHtgRFatiy3JlDtPKgKBw== X-Received: by 2002:a17:906:1045:b0:997:e9a3:9c59 with SMTP id j5-20020a170906104500b00997e9a39c59mr1098698ejj.6.1691138981036; Fri, 04 Aug 2023 01:49:41 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49: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 v9 07/12] ceph: allow idmapped permission inode op Date: Fri, 4 Aug 2023 10:48:53 +0200 Message-Id: <20230804084858.126104-8-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 5001CC001DB for ; Fri, 4 Aug 2023 08:51:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229935AbjHDIvV (ORCPT ); Fri, 4 Aug 2023 04:51:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229659AbjHDIts (ORCPT ); Fri, 4 Aug 2023 04:49:48 -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 A39AE4EC4 for ; Fri, 4 Aug 2023 01:49:44 -0700 (PDT) Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.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 5C40D417C1 for ; Fri, 4 Aug 2023 08:49:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138983; bh=nLZMqtT0BTuD0r3ld9T+VcVOIz8LP+RVDN6gyhT7tPs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kPXWFDv4IaWNdstC8tRD6ftykQZ0hcsdvqVN3fA48GNJBDTmBaxh4X5ucm/Crxo7w 3xWVR9TV9WLcHPqVmXHFe858m1qWaIAuifPvsWeUFi0Rt0yrx32vkzItQnu/m/1th3 8+XO/a8mdmT1XO2gPYgHjMUP+8aR9VHL1kRLfvcr6lEXprQgQU3dDJ93Ts9s4Ueel5 xIyW6+xmKOaWIBLNeWAhQSywywqMM+VnxLbB4AvbwOu5NiNwh45BhMjLUk9NcxCnJ6 MRr980wphPQX2bl7iE67KCRSLYcokPTy/fw5OwOBS11QppxaFFln/o+P2Tqbms3eCu Sg9HBS+RvHg6g== Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-94f7a2b21fdso132783966b.2 for ; Fri, 04 Aug 2023 01:49:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138983; x=1691743783; 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=brFugBxzGLR4WRsn+/9jbHuFOihPQlI7ZRBO+4WtTrBueg9G7wGM0WdhoEd+i8TfNV lBPK7SyAHVtB8rgEVyKqHNUPEHi2xiqz2x7CBLY1jbq8dMDZaCldgz+MUo02oyG2QZA9 rCKAwC7dSmmf2qbf7PSHoUSnhMg9ABXIpKgOHDxa70XbDvk/6j5HmFYoN9oZCnan2zjp wyRP/dKma8hXOvdwnBxuTTKkLnRIpGcJmGkYuPnamwZDb+ydhZTKuWnC6Xzv0DaehbQ+ dPjMX5M7k50SNEoPK53FUXkcOJZAplVujpwxa41bpWQ8wva+til4fKgr+yaJaSWx7VZh 5lMQ== X-Gm-Message-State: AOJu0Yz3hWe4m779DD4or68Li+8IAN+5JgdcYJd3eAWyinvVyvLIPSwx x7F/2AZlpnQz3tmBzBC+HpwoB06ipBosVSlIE7jorlRqRE6Vh0aefivCY5ydBJv3W2KIQvaMJNX fEUe1JaOCoLgihZyLlBTv1AO6p6/Yzfsq5dvkKEDM8w== X-Received: by 2002:a17:906:3002:b0:99b:f66a:3189 with SMTP id 2-20020a170906300200b0099bf66a3189mr1057461ejz.8.1691138983095; Fri, 04 Aug 2023 01:49:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHYz1ENmxKq5uJlqK2BTiCUQ/3Q6puy0cdofBV5YjhsVwU4EydDgdIUCcgv/xVB11YsU0I69w== X-Received: by 2002:a17:906:3002:b0:99b:f66a:3189 with SMTP id 2-20020a170906300200b0099bf66a3189mr1057451ejz.8.1691138982931; Fri, 04 Aug 2023 01:49:42 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:42 -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 v9 08/12] ceph: pass idmap to __ceph_setattr Date: Fri, 4 Aug 2023 10:48:54 +0200 Message-Id: <20230804084858.126104-9-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Acked-by: Christian Brauner --- 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 Mon Feb 9 01:12:12 2026 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 92568C41513 for ; Fri, 4 Aug 2023 08:51:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229952AbjHDIve (ORCPT ); Fri, 4 Aug 2023 04:51:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229714AbjHDItw (ORCPT ); Fri, 4 Aug 2023 04:49:52 -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 F098230EA for ; Fri, 4 Aug 2023 01:49:48 -0700 (PDT) Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.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 776414421A for ; Fri, 4 Aug 2023 08:49:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138987; bh=CQAHRH/ms/cFOl3S4jtiakCJJYzaMB08Yq0KPV8/UVY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dHCinPhIwLfckZkFU7tt4yPZR4kmCSgq/DySlrKITX/xaRPrdWkOudxg4LcEbYLVa AKxThHX1/+lsoaoaEARPNEy39iIUUVuDPr2P6wKyl5VJhcsHw8jBX3h68kqLcfPnzJ s/++6LuUDGkU7JlMDruW6fy727ZYasa9yZBgK/rQ4kWfSjsWmM9D6cVsNECsUYZr7I 6ZJRd5O3GUJIL/9qwP6+ieqRPFK8h0v5Qh1msWe/eNKGYa94jKk+e8yIHudosB29jO OEKaQXbxgrWFZhyycaU1O2NHE/oaUY1BNRxRHI4JQDv0nCYU4nhHdRtRZg1HIkOK6k tNN6dV0qSDz2w== Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-99bebfada8cso122169666b.1 for ; Fri, 04 Aug 2023 01:49:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138986; x=1691743786; 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=GQQ0VdNs8WVw2MHCg5yInebdxIAZF36ZXVj6yhbCF7XwlOU+vW5YAjaafF3Xf09vqb 2Dlok8S6yEp1SVbDcDGdL01GXLRLbIh4dcIKAbEDVxJCZq/ra2wwWxHMlvwDCi2k1+cV KhITZCRGZVSqHRU/b/U6a1jBssjSRibwzQDbVV7Ips52AgJT6m0ULCazh6gC6bSk5K38 lQn900j/6u16JE7Mohd5qPvR405IQloU0HxzpwvHJ81xRSyMB4TZLZ6OoCM9NMEVwtsg yr4HtrEhBvduf1h/I6NIumiVyoKaClch4gksZ9qzScJoVhSntS2X/fGJzAS223nt9tfF okWg== X-Gm-Message-State: AOJu0Yz6jJZbs71jTAxUkIs/r3sbeb0A+xtK/ZUI361iptxwWyC2HtAe 8V1JzDwKTZeCWMzUMdQvsqPtBEQBrcJjl35W7BIlAzQQtb/fT4V6/UQYe6Z+5kucgFf11OJl6Ba MyHcKJUFgdxPJRDfGN0HhFeemho4etWBrWQVGaKL2Ig== X-Received: by 2002:a17:906:7494:b0:99c:4b70:4d6a with SMTP id e20-20020a170906749400b0099c4b704d6amr934861ejl.63.1691138985975; Fri, 04 Aug 2023 01:49:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGVvZo5HsarBNOVycY50aKC5Clr4BW+jwzyxSFJ0XsHAbQYXZZdVEQArwzBO3xTW2T0oLqbNg== X-Received: by 2002:a17:906:7494:b0:99c:4b70:4d6a with SMTP id e20-20020a170906749400b0099c4b704d6amr934851ejl.63.1691138985538; Fri, 04 Aug 2023 01:49:45 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:45 -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 v9 09/12] ceph: allow idmapped setattr inode op Date: Fri, 4 Aug 2023 10:48:55 +0200 Message-Id: <20230804084858.126104-10-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 E812CC001DB for ; Fri, 4 Aug 2023 08:51:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229738AbjHDIvj (ORCPT ); Fri, 4 Aug 2023 04:51:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229766AbjHDItx (ORCPT ); Fri, 4 Aug 2023 04:49:53 -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 86E2B4ECF for ; Fri, 4 Aug 2023 01:49:49 -0700 (PDT) Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.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 B2F29417BC for ; Fri, 4 Aug 2023 08:49:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138987; bh=ARhwDsiPa3Ci/G2xteJutduXCGuj42UUR3o8sfJhjpo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GkddBikpB2/vEVvij461v8mB4ZowSfYppuqPoI9H0KEPxpVdSkHpctJYbs3pq66tr E/Pg6HFpHqp/dIyV5OdhhTXQdNlH+M2bOAgpagRxAS3y8VeGb9teARxVsO9phgBW3C XiHQsHgQyDHV2dx/hIpfGG0oP6sLpJdK6aey/YWPggCLfNmCQNsYuMzerZkQVD4Jzt R9PjVQVWUM1qe/p6JPkJWSEYBe7cN6tuz0KRQOC5CVs6bANEUYqXtaPa3bAjQbOCKu Ml3BUcTSQJ4+7YAOJ5uwDohDlVkMFDcz4riwbKBDSCJ/Io6OoGOP9AibNoeTbX3Hil zPzJ/EJfbMMFA== Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-99c03869a67so124527366b.1 for ; Fri, 04 Aug 2023 01:49:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138987; x=1691743787; 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=RTJhV/75kmaZtaL1W7tid3/4I7KDR+0cG0Il20Qp9KSkvCP52fbbPEm1gvR3v1IhGw aGdtXlHBvBmewmDjcmEBvRqU+eQgrW0FOthgZZmt3/Ejxk/ZREIT2nYfUtzaZF9VY3FB JZrfCGDTol0vQCZwK90oNDf0WwIY+uyHLbYa0cirpvNSky9hz6NvemG40TKgqqeyzoeO uXlRktD1vZjUvwOGbprPGLKAtkB0AKpwWLcxiud58XyLVs56dpDcBJfiMQTEVi3pSwPL i2eJji9+szWVXQsHt/dGeAQVMAqkaaZVOvC9DgObiUgvyF7CUuGEDF0Vax34tmazcQgO pahA== X-Gm-Message-State: AOJu0YyBv4dgL0X/MLYGmSvU2hkIp/rJDWr4x2M5H53aCXPRTmHrvnXd Td78VCxth1bS75eQqHhWxmaCYpIIdHA3tg6klC7oZ/SFta/N3bhUgqNnd5+o/D8ez50p4eIG27D W+f4gK/reWL1O/B4qtFAW15mFxLVR6s4n4DfzyUoDAQ== X-Received: by 2002:a17:907:77d0:b0:994:5577:aeed with SMTP id kz16-20020a17090777d000b009945577aeedmr995720ejc.5.1691138987401; Fri, 04 Aug 2023 01:49:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFij2ZN/HuBWc4Nu5STOSW9BVGSH6Wz3WtoLMx8eDAi/KUmbdzucsXu/L2vGnsUCM+iyzwOrQ== X-Received: by 2002:a17:907:77d0:b0:994:5577:aeed with SMTP id kz16-20020a17090777d000b009945577aeedmr995708ejc.5.1691138987251; Fri, 04 Aug 2023 01:49:47 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:46 -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 v9 10/12] ceph/acl: allow idmapped set_acl inode op Date: Fri, 4 Aug 2023 10:48:56 +0200 Message-Id: <20230804084858.126104-11-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 30223C04A94 for ; Fri, 4 Aug 2023 08:52:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230008AbjHDIwL (ORCPT ); Fri, 4 Aug 2023 04:52:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229741AbjHDIuY (ORCPT ); Fri, 4 Aug 2023 04:50:24 -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 4933C4ED9 for ; Fri, 4 Aug 2023 01:49:53 -0700 (PDT) Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.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 D6F073F148 for ; Fri, 4 Aug 2023 08:49:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138991; bh=3z9qgb9ifPvjMsignbqopXQPiRZw936kb1zQwGNpHt4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OV7Xk6DYmrC9Bf1PfSJ4bhX+xzNohrVjBEnPx6DGl++fVi2DA4kX01J21rPhi8tnT dmmF9krrAGvvYsxjH4WxtthhYci7J7fbg4bW6VtmPeFL/DGZe7Ir4s1+pIt7e39vNv BGNzDqTGOCMpRCg/R0uIlC4jaijuJ/wSIMDYeeb0Klli9w0ufYAABWRzs9xX9lMVQo IQni/E9ysiynKJT6a1nuozBVITP+kO2MGgCTP9RltVG2/ruvZ0UwAxd9BYoqyx1AfE W7hEU+au3ac6T5VI0pTdwhP9bcVW8DsTJ+pBALN+8yru3Sfm+h+DORYIla3EIq3FlJ zV6qxwS1sy+mg== Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-993c2d9e496so119701166b.0 for ; Fri, 04 Aug 2023 01:49:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138989; x=1691743789; 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=HEF5Z1/1XIlr6ogSx+gxCzkw0eWZI5AE04NM+77KDeymQKJR1a2jynfcmxkzRmzqGA NLLLT/zRPSV4WLSRdfI0/xNzlaWHEs/BGSdBgVZ0/JdsdMmGKH6mYQn9JhrlCGabQpR/ Cvi4GZgS0PBZ10yuGqcTkvVuiMIlw/APBB0kJKUAf/HtktxjK2dti9irJfbWbsdwoP1p uSzX7FLAqHHGcuAaYV2vhJkRA5asSTidmas93twkQbXKaB3XKPZD+7FXxejtioegpRi5 PRm0bHRNprGCBY9b0XabNPI/lTOh5cNEOxnANKnwY7T647w/qSTMlQZ5o7+QWb/bib9I lcGw== X-Gm-Message-State: AOJu0YzXh1UOn6kVOEqZQkB8/NlYwYXf7UeJyrsumt+kG7aecJKidO4v dgllCMfFTdpxkvGWMDTM26ybzOpR/ju4QQbRMZ8Y/FwGr2cIdVrhtUKUmsFeViVfiPyix6hMA1y UJM2qN1Z9OmPRGvfUnq08hafspyze4zCvUYvLfsULLg== X-Received: by 2002:a17:906:76c8:b0:99c:524d:5052 with SMTP id q8-20020a17090676c800b0099c524d5052mr947635ejn.0.1691138989329; Fri, 04 Aug 2023 01:49:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGTym5TfzlHG1lZSavhyqmoZ0wMSQV6UssfY2G4oAk1V8i7SJ+uZP+Mld/WvvtmdYlgx9LngQ== X-Received: by 2002:a17:906:76c8:b0:99c:524d:5052 with SMTP id q8-20020a17090676c800b0099c524d5052mr947623ejn.0.1691138989153; Fri, 04 Aug 2023 01:49:49 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:48 -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 v9 11/12] ceph/file: allow idmapped atomic_open inode op Date: Fri, 4 Aug 2023 10:48:57 +0200 Message-Id: <20230804084858.126104-12-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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 Mon Feb 9 01:12:12 2026 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 8AA21C001DB for ; Fri, 4 Aug 2023 08:52:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229955AbjHDIwW (ORCPT ); Fri, 4 Aug 2023 04:52:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229838AbjHDIue (ORCPT ); Fri, 4 Aug 2023 04:50:34 -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 C9B3749E1 for ; Fri, 4 Aug 2023 01:49:53 -0700 (PDT) Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.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 333A2417C0 for ; Fri, 4 Aug 2023 08:49:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1691138992; bh=4z/daiO88HhZeOEnY3F9QYhLlQO1p3UrY3NiyEq1U7U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FGpgOd5ti5ENfTSJa5Lym7mJNoSpd89kabM9ALr54NEi9dQU66oPukd1ANS5PgYF/ x/F6myWr3xpm43u0Du/xcYSO7MTXTv5zm9Nn/7qlZDTMfJD6JkgEXRoTDnGkFQvc7x iQPwIf9nB3b3VQWzSjw1Tw8AvZ+QkVSkEpSGXJuYdbG4UAYJCA2DUia7Zp+069zPfZ o744w4MFIsf4UHmS+8utL/zKgLwwFSE3PH9f3Pvzfz7wiQGXEHAqtnGx0JzaDTLgDm wAQ9pyiqtlzFmFzypDK1AGqedG5bJAGxZwa5kaRfo/MhsC99McaBeqT2ZIr0gJntCX qK6ZofXsqda+Q== Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-94a34d3e5ebso124427566b.3 for ; Fri, 04 Aug 2023 01:49:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691138991; x=1691743791; 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=4z/daiO88HhZeOEnY3F9QYhLlQO1p3UrY3NiyEq1U7U=; b=X0R/sP6z589H/J6I/ZdXWRbfWFdhlv7LNa7bX51CnmGmsOL6UeP4xHavpgTES27+Yx NnTnv7pDuI+o16u32CwqIfyb/OQEwsUZTiIxNYJm1uP+1/JSQJ16+tPdlcnbZ5UJJ9f2 laTrpiGbO0qTnwEajno9Msg0VnjjWmQTNEjHpcwObvsDlBAHwAx4hOiJc6Vv5cCuG2gX uvfP4hbm8VMM7yx0kYSgO/9WE+zGW00io+sv0JHEw68YjCc25nCmUj3H07pN65kmscYn P3Uc+100CBgzW/n6Tf9qZHrnlR3iPt/sSjecpzx+ARzql1bm84zZfhi7bREXY9pZiBix rmzA== X-Gm-Message-State: AOJu0Yw+j/3VWgir5jQwMss3hJVLbKteddshVvsccfdGgnGrXBedJIr0 7oID22Q9ZrLZuiFpE8Tlsn/wphGmW6vUeIWAaeRWe8hXCnLDo60DT4OL7tJuKSbR0Fy4OmZp3js iGUk1IbSMzUDAEz3Au2TuxWApwqct/Ym/ggVKReBnJUm1zs7kJg== X-Received: by 2002:a17:906:2cb:b0:99c:ae35:ac0 with SMTP id 11-20020a17090602cb00b0099cae350ac0mr32342ejk.61.1691138991753; Fri, 04 Aug 2023 01:49:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFdh2YBW+3zSthygL5eMI53A2dql4TVwWtXDEJAl+omt1I6HfFzDgF/roaG3QRdDVBhhechfA== X-Received: by 2002:a17:906:2cb:b0:99c:ae35:ac0 with SMTP id 11-20020a17090602cb00b0099cae350ac0mr32336ejk.61.1691138991574; Fri, 04 Aug 2023 01:49:51 -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 k25-20020a17090646d900b00992e94bcfabsm979279ejs.167.2023.08.04.01.49.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 01:49:51 -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 v9 12/12] ceph: allow idmapped mounts Date: Fri, 4 Aug 2023 10:48:58 +0200 Message-Id: <20230804084858.126104-13-aleksandr.mikhalitsyn@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230804084858.126104-1-aleksandr.mikhalitsyn@canonical.com> References: <20230804084858.126104-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. 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