From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 577FA384CFA for ; Mon, 24 Aug 2026 18:42:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596932; cv=none; b=HLOYIODjZP2NtC8epiwN7tTf86lmMOhP+P3HKw2fVuEbumNdaBGDcGvj06gUSwUr4NkIKGUpAPrRK49atipHAZO2WdDscuNODBZDxLL5pL7vHA1u8ob3lC8sb5Z02CFObhJdNKB1rIzdCR8X7nsYDmho4qjkMZnLiWdvewnZ2fQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596932; c=relaxed/simple; bh=rECAuaCU+sisvFAxlz4wBECy3Fjxf/Y512+AyaTPnw8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hcj2rXpNLfGnIqwlSckusSX5OZCNMsCV+vB99wM+zNMGAbJQBBZ55147uZEG2gZnJysk8MLcZNZKZ66oKWDv+gKwZbVYgROHOmMMtBQkq/bYYZK+GJ8V4525mpL5dXOVJVfJkWHt+rN3eHHHcb9ytEmeL64105OnX5Ebk3e8awQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=ARdM550l; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="ARdM550l" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-6a144c8eea2so7033008a12.0 for ; Mon, 24 Aug 2026 11:42:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596930; x=1788201730; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sXE4QLrQi2i/4sxK4k31CjHlNpeUbWys3Ip47/zk/0g=; b=ARdM550lU5vLTTrgFazPs2B+vw6KTTZxD8KGXHebysDrIy9WrOXrI93OCNGr+aTJhk 5g3BKJfBLySvzLAh3MAh8JIpgvWprllviyLo5PKyqArHyNPtrTAk7J+xA8fVBP+t5W4E Jrv7vfgc5HxN4HNDjOxFFu8jl3+lxXrJAclMmsoZRLhv6xQzdMzUSJq7gYnU1YP1a5Wo YKuVRBV1qLo/WFyjEwJf+tmBkvZA3SaVeUCLoAyYuuER6QZ5f4zUwQ9+C7zV38hyOgWx iU0uUsfnvtq9bVvApLiwxk+1I8uK7LDJFrk376+nk1GZtJGf1wwBIUYwb1i6280pOIR3 tS/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596930; x=1788201730; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=sXE4QLrQi2i/4sxK4k31CjHlNpeUbWys3Ip47/zk/0g=; b=dY6hbdy1SXx9Wd9jykU+6e2XBdtMFJJohhEaCmPmBpj274hYeIdHXfb6I8MKMEGY9v rkGotDzyCT+xWMpnlA2wYY7o3TA5xkI42n+VTcicKHkbqQZKKjXTf0v2xIckFU8bbVzQ EiZAhSv9UI2qPxPMsWdI/m8eBAnVSkyFkmdnoCgo2621y5nTHvL8Ph9klLrMsok+RMKI jmE66Tpgv1vozQQQEMJqv24B+LHyzfp5k4dbNX19sVHLJkZ7foEhKK5akNpSTV4xaThL dxi6Y3yxhSX6mOjpyZrLxCIiGm/+GyfHLofDde/1M977iwO+aGHMgxwWF9jl2IJIvJ3e XniQ== X-Forwarded-Encrypted: i=1; AHgh+RpgrQ45SbtdMbVhOlHFf2tllVAUmOaPeUzI/BIwVpx7RjsTJnhwPbwnlQnUO5A51wsQBklUdSybInEpJkI=@vger.kernel.org X-Gm-Message-State: AFuF++lQjdbZHysQ0GKRQBotijy+zw9RG/aCPR99E3sMdDWLRpYD+kVT ancReKHT89V3zFSPMXZuLPGG4Zwcrp6iqjRXMuNKXsOqfuIljSaEoGVEws0RrTOF50w= X-Gm-Gg: AR+sD10uoeFMCiQYWeKITiRSStztNpZX2XPJuoi8RPyqKnsm3j6+p4BbmKlJxELO8Ga u41fJYYX7TKWo1AXG/704rb+8mHkpopzfCrQENL7MC0f/JkKro3AYj7LxR+Apza0MHjKwVa4pUp Wv2Q7WKp9YGB0+r/Vo6RUYe39YcvlUO6+pMSg1z+1oi/K4bymvZBoRQxaUQxXO0zZ2vfG5fFYyy TyDYrwRm/emDATVjaHHgZYas8DvsscVraUWeqJBY8jkrUBjnZV2a/MTXXPTEgFY2d+ZAh0f1tG0 9mQWL0oRZwNrBQN7F9vCUfNpn/gZQvZ9/lAFYNMcUu8bKDaAoZoR8YX78jUvQg5ZDhSF8vSrx10 wEj7X3tTJgcztT/YEpg16/4xxqBBbMj1Vy8eji7viJih3Zs6jNOEuHW8jcxI7UbL/sVPmeRG/+r JjusUr9tRw5Z0vakObupNduBcfQqA1Dud2crl3NP/w1onakTwXbqf/vmQyyanAhEtQoV1YDdVrw agXquw5Q7b+lByzVWWky6gMrzvXu/STZJkOgGZMUs3IgqTZAJdYDSFFGNGQ84+CJiZkJEkRjx8= X-Received: by 2002:a17:906:100f:20b0:c24:e1e9:69c with SMTP id a640c23a62f3a-c24e1e916eamr99284466b.0.1787596929507; Mon, 24 Aug 2026 11:42:09 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:09 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 01/11] fs/ceph/super: remove unused field `i_cap_migration_resv` Date: Mon, 24 Aug 2026 20:41:49 +0200 Message-ID: <20260824184159.240821-2-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This field was added 17 years ago by commit de57606c23afd ("ceph: client types") but it was never used. This reduces the size of `struct ceph_inode_info` by 8 bytes. Fixes: de57606c23afd ("ceph: client types") Signed-off-by: Max Kellermann --- fs/ceph/super.h | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 1d6aab060780..3cbd320b49a8 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -450,7 +450,6 @@ struct ceph_inode_info { wait_queue_head_t i_cap_wq; /* threads waiting on a capability */ unsigned long i_hold_caps_max; /* jiffies */ struct list_head i_cap_delay_list; /* for delayed cap release to mds */ - struct ceph_cap_reservation i_cap_migration_resv; struct list_head i_cap_snaps; /* snapped state pending flush to mds */ struct ceph_snap_context *i_head_snapc; /* set if wr_buffer_head > 0 or dirty|flushing caps */ --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01C773859E2 for ; Mon, 24 Aug 2026 18:42:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596933; cv=none; b=oyvB6dkPVPdOE3zwwApZKUyEjo86CnigHs0R3l1LwgEhRgiBJeONbkjKZcrGUwM8RemCU+NvvM4C3Fvty6DeCDo7zoOzQOnAhsOx/OO0O4nfjsChgLeaOGpxKj1geGdXckF//69ILmWu5p2Mc8Kx2zSxGfVwY2+I0T/JCH15KJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596933; c=relaxed/simple; bh=9XEOCpJ92dHTmRtWjKTA/Gb5ilHulLiXFfGINfxa9k4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UbgLyyoi9aQLOP3cygNWboVbEYSsM2Rk6Zb5BKYGiwC6wW8xh+QKbXT55Zon3Gr6LxjDhMlVPCZJ9pZSe8COIA/TwslG7y9MhaZT9Lin7x4Po+hO+yGyJl0ArkEFRYCIM6Yz4XC5aQYNVldNIyC+Hpsp4WJyGf/D228P//l4w1s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=YOi91apN; arc=none smtp.client-ip=209.85.218.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="YOi91apN" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-c214e625259so569308466b.2 for ; Mon, 24 Aug 2026 11:42:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596930; x=1788201730; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=00c8rcUzxLCd7wLsw23nlyAOLrwAoUbKznwY4vUbxqs=; b=YOi91apNsBaU3HxfZG79TayeeQLL156ja2oL0lzsQETJqcsqLyT5zuuYtxTvRaEkYR x63XKV/hlZjWjRkkd7Kc1q9A795pXwyPwnSJYa7yIWWy5KJ97ygoQexdrlYctLFA+WSJ 67UuhkXY24OhMWyZ2Wp0ZTtKTkmemU+aohnyUfArAsYASrCB5VhEttVuw9ZvaWXbTGrJ HvxilKHhYe3dHM8UyxucV3GDX7Gr6Cv5xjZeLTHez+KqyHG0mGu5Zl/fR1pnBIOsj3dP OyiLkYQY/MeMsXNee7X0vn4jiMZEfO5KzL2OqjCQb4ikvvnQRb2qQeZw6XzVSAY1ScJ1 LkcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596930; x=1788201730; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=00c8rcUzxLCd7wLsw23nlyAOLrwAoUbKznwY4vUbxqs=; b=CW1I0j4LkUvk94BQ+XTc76KzS1Z3ca1xzYftERe8zB4caJvDwLcHLXtuOKqykDbjRU 9ihc6FjO1bJliBIPfmBFWRs3TndRdyi+KdOaoucY5/mvYRQt/b5iHd5lWswwsPEHluxm ee0sK0Xp3CTLx9+qcQBFyRt4brl1+rqtxMu7NMJu7Y5Wn6LNESTJzMPr8sn3vthrDC7g QgZlY4Fo2gVfgnRYi7qwPv6xE0NdDZq2t497pq2yGRwOtQyBBT634+7QmIJBB2H/fu/d VwAXyya7n2Eos18A9hmGWzioc+xLNLedDEb+CgujVx4r80VHiLfyEgbvQHFrpxrvpNyI EKkg== X-Forwarded-Encrypted: i=1; AHgh+RrKnvocdJUe9Zx3/17sEUrAVVvl+5yLxR+6SV5aB6XyH7r40A/Jn6duVMpzutwowUwb1QBqrSqZ9vUyQLU=@vger.kernel.org X-Gm-Message-State: AFuF++ltFnw8lnsO7nzPbhylkbyr/3/k9SIN3MVWxY7KnJ5KmSfV6cf4 mr/a7VTmjAeWQshclHI7YVsYqpjRfLLWQJSVIjHJ+tR4kc8YuKOrFVaQfDufHI76HjkG4PQ7+kP ik1brTfU= X-Gm-Gg: AR+sD12x0feVtmLdwqfoi5ItbdSc2A1mPHieGs3fnfJs7A/oWbyr2JRTgrM4Isqaxtr S3UYg2/ktnaEf+uXV4p16EVNMQfFu9odpceDB9o6CDL1DZeX2f95uRQwAEuXNjxAZ5xKH/d7Tt+ cJm+Oq71AftFpIZ7zP9Qto36j+kTnvuVhsVRmJVDF6W5PYNtel3ECZYaTR1P+ICrY64SJHEK4fg k98lBd7Saqw1pXaPRnHUgDxO6T6i2nu77sy4NBw7/K5Z744H03gtUWspWIRyijUJAQoC78VJdCl e51au15uZXD5dH+a0JcexOWc0pcW4eEmkerCc7fZwq93B7lxQ48dsY1X9XjCjld0l6cY1RI/Lx6 Uzf7UyS2aXbeBv421mbMYgihfX9MjgECyyNCZPsf+y4lPpiXYU89Sl6O6WPZoMFD3kxvAVFALQu dOijhyYlfTzjJ54ckjm89ZpL9CLGL9KHqcwjrjmb/+vUU5jlTJrcLE5TcUNbMmZi5WZia88u0mk 6RyIFp5nMYUdgZJl3Hp2K01g0zq5/6ZqV2pwQcaICIDXA9+xC2VMMGc2lBIpZVV X-Received: by 2002:a17:907:9814:b0:c21:792:8257 with SMTP id a640c23a62f3a-c24e5ad9556mr40773866b.15.1787596930287; Mon, 24 Aug 2026 11:42:10 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:09 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 02/11] fs/ceph/super: make field `i_truncate_pagecache_size` optional Date: Mon, 24 Aug 2026 20:41:50 +0200 Message-ID: <20260824184159.240821-3-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This field is only used with CONFIG_FS_ENCRYPTION; without it, it always equals `i_truncate_size`. This reduces the size of `struct ceph_inode_info` by 8 bytes on kernels that have filesystem encryption disabled. Signed-off-by: Max Kellermann --- fs/ceph/inode.c | 8 ++++++-- fs/ceph/super.h | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 61d7c0b8161f..bdb82f123033 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -681,7 +681,9 @@ struct inode *ceph_alloc_inode(struct super_block *sb) ci->i_truncate_seq =3D 0; ci->i_truncate_size =3D 0; ci->i_truncate_pending =3D 0; +#ifdef CONFIG_FS_ENCRYPTION ci->i_truncate_pagecache_size =3D 0; +#endif =20 ci->i_max_size =3D 0; ci->i_reported_size =3D 0; @@ -866,6 +868,7 @@ int ceph_fill_file_size(struct inode *inode, int issued, =20 ci->i_truncate_size =3D truncate_size; =20 +#ifdef CONFIG_FS_ENCRYPTION if (IS_ENCRYPTED(inode)) { doutc(cl, "truncate_pagecache_size %lld -> %llu\n", ci->i_truncate_pagecache_size, size); @@ -873,6 +876,7 @@ int ceph_fill_file_size(struct inode *inode, int issued, } else { ci->i_truncate_pagecache_size =3D truncate_size; } +#endif } return queue_trunc; } @@ -2332,7 +2336,7 @@ void __ceph_do_pending_vmtruncate(struct inode *inode) /* there should be no reader or writer */ WARN_ON_ONCE(ci->i_rd_ref || ci->i_wr_ref); =20 - to =3D ci->i_truncate_pagecache_size; + to =3D ceph_get_truncate_pagecache_size(ci); wrbuffer_refs =3D ci->i_wrbuffer_ref; doutc(cl, "%p %llx.%llx (%d) to %lld\n", inode, ceph_vinop(inode), ci->i_truncate_pending, to); @@ -2342,7 +2346,7 @@ void __ceph_do_pending_vmtruncate(struct inode *inode) truncate_pagecache(inode, to); =20 spin_lock(&ci->i_ceph_lock); - if (to =3D=3D ci->i_truncate_pagecache_size) { + if (to =3D=3D ceph_get_truncate_pagecache_size(ci)) { ci->i_truncate_pending =3D 0; finish =3D 1; } diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 3cbd320b49a8..7023af704e14 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -468,11 +468,14 @@ struct ceph_inode_info { u32 i_truncate_seq; /* last truncate to smaller size */ u64 i_truncate_size; /* and the size we last truncated down to */ int i_truncate_pending; /* still need to call vmtruncate */ + +#ifdef CONFIG_FS_ENCRYPTION /* * For none fscrypt case it equals to i_truncate_size or it will * equals to fscrypt_file_size */ u64 i_truncate_pagecache_size; +#endif =20 u64 i_max_size; /* max file size authorized by mds */ u64 i_reported_size; /* (max_)size reported to or requested of mds */ @@ -667,6 +670,14 @@ static inline struct inode *ceph_find_inode(struct sup= er_block *sb, return ilookup5(sb, (unsigned long)vino.ino, ceph_ino_compare, &vino); } =20 +static inline u64 ceph_get_truncate_pagecache_size(const struct ceph_inode= _info *ci) +{ +#ifdef CONFIG_FS_ENCRYPTION + return ci->i_truncate_pagecache_size; +#else + return ci->i_truncate_size; +#endif +} =20 /* * Ceph inode. --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ABFBE3859CE for ; Mon, 24 Aug 2026 18:42:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596934; cv=none; b=jKD4e6kbV8LIQYkj4TaqZXWXwfboGwhs53dOqR57mDLPuDz/sUdH+2Uc4QJFt3FxJv1266B7XDZEIoJhTEnPM41GHKsDnE2Ge1SVCAGpTOPraI3tMfrmxK6NYcM6LXc0KlKmGUq11GFq+4M2subOgmjGatMTqGEBVWGSmgx8/qY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596934; c=relaxed/simple; bh=mh3Wvp3erJw6hgEc0BaFtMvIaRlm0xL2iUvFtRAjH5M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=USSSfxGrP1Xd+a9LtNVhd6hQySvcjmmcuaqLjxJcrLwLZvOGjsBEifIhg107T3R6TW5J2xJxrrao3kTk+ndY1iJIR78DWBZVpAZ7MeYGoOOEgoPu8c3lUL8hz1gqUZzqkocH2M4O/qNhE+FJVvEaqLFvRv+w6Hw9Ivo3gO3c0xE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=KBB94X2w; arc=none smtp.client-ip=209.85.208.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="KBB94X2w" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-6a15d54ac95so6729163a12.0 for ; Mon, 24 Aug 2026 11:42:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596931; x=1788201731; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=DYD6EXdc3EA1wjI8XloWJSr9upDOkRMjp4PLGykUXfY=; b=KBB94X2wZwSXbFKfkRabFJNL6UPqQyFOa+asMAS5XZmzALJyZlAqBqqYYvxQVpGeIL BjKTY20GLUBGs/oQIm0/XM1f5BT7/K5cbprR54uZaSv0OKJb+/fFLa/IQr43JrII1rWD QPI5xLLywo9Sw9K4WFlZ+x33EkyCnSuqjMb1AucY/MzESxs8hS+fYX3ZlzP8mRmYrcBR txMUa8vsfwK6Sg7OzNxb/CLUZvykIhCT9mZWX2R3P6boz+tL0UDttvL9H6xc/XftLIk4 H1yRQDITHe7+FTwbPd1N/HnjMs/Sg2S2EmFVl5UUMp/qRjrHDmcxSN7HgE95wl07l4dP Va9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596931; x=1788201731; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=DYD6EXdc3EA1wjI8XloWJSr9upDOkRMjp4PLGykUXfY=; b=hB8Q0GShNb/8xeivV4LLbytTl2rdsZqmJlZ9KzkLIIpXFeqev1dIejZSRmD3ezXAeh yIeLOvJN1iT5Iu2v5UXX6p0ACQPfSfVP8PWKYwZSDIvwz+7eF1OUliEbFSMEStw7iRfI 3Kfkcg01tavu0fhC+TW61GB+X1HBmh+g+KzbEXvgE0KcUcCaTwGz2/Tqk3FX/DexIlgV QWcdRSMGFA+QcEamyIMesy34jKjnouHdtZr0MmUM/83RDLs/WCB05lUc+7QIN9FlOEe3 iRaXIdk4VHrYi4YRfrH7iWK785hWggBsouxIwUkOmovOvCS6tl7Kltikrytu0WunFThg MGZw== X-Forwarded-Encrypted: i=1; AHgh+RpssVpqF6XUdFGAmQR2xqL6ZkDC+WOfnOGbhfj/8WfRcCcKT8IqbCEj0b/CP0hLaqQqJBeOkSSrKoE5VYM=@vger.kernel.org X-Gm-Message-State: AFuF++lhLBPg8/vCGN/gs3xhNVvVRV49Z8sOCAde4LzEHQnDDOZe/qZQ FNFCLhoJx/2JRSLw/VP4r8h+649Oe+j+KA4RepJvcEUR89UnZlH9xiUQHyRLuU/RzFc= X-Gm-Gg: AR+sD13nWd7bZN4VBrNtuAlgUpja68rC+OgCIADYokYxG8/shfznQS0WenlbwEWcaTn LEU+T+lLVX/vWpvb807uryZZQLNQRylrMXneLPbEEgF0wZ2ePNAbDLZS0RcJX00vwAeVVeP3Ivr gQrRb9cLu6MEmu61fqiLPin0htDlDhVGLd9kmCQZSfcu2Dsz+1ukdx0IGGW7SXbV+JLDgvRBnoi zLTR1Z6uFHJXL+UpzM9R3A/aDtiuKhjgdve+WrBrvHNMzwNZYyqUMgCGTs2dME9K2+bxDqRkFEW FEd0l4FZHL/rCpCCv/x9N4EhPNaMHD/gNW/H+pIow4q3n01MpPbp7PyD34w/v8zvTwHEu2M1CRB KhP72nKiZIEuOfhpQ//7KOnz0avZYeDF161tRV9qjzFiNJ+iwxWcOhrTXMWbkSNIRnZsL3jdRvS vW+L4p+hyIgLsOV8B9eRDwuZC51EtowAIPufp6mF4wqAkeJrysfcoldlDuj/63RHw0fEZJymbgC r07vqvEIjdEfWwsUVvKOEh6ZyeXjSRA40tomL+U2fuUFp1VYCIMC3W+ypwbfsRu X-Received: by 2002:a17:907:72cc:b0:c1f:8145:820c with SMTP id a640c23a62f3a-c2492579d7cmr2188829966b.2.1787596931002; Mon, 24 Aug 2026 11:42:11 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:10 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 03/11] fs/ceph/super.h: convert ceph_inode_xattr fields to `bool` Date: Mon, 24 Aug 2026 20:41:51 +0200 Message-ID: <20260824184159.240821-4-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This reduces the size of `struct ceph_inode_xattr` by 8 bytes. Signed-off-by: Max Kellermann --- fs/ceph/super.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 7023af704e14..a3dae2c0bbee 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -320,10 +320,10 @@ struct ceph_inode_xattr { int name_len; const char *val; int val_len; - int dirty; + bool dirty; =20 - int should_free_name; - int should_free_val; + bool should_free_name; + bool should_free_val; }; =20 /* --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7FEA4386559 for ; Mon, 24 Aug 2026 18:42:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596935; cv=none; b=YSBH+ONxXkk1cp9pp72uUdxH7sJ59pEK4XaDp98yk0A1gF2BkCqcDP16+sioWK7ovTYgHxX8VTg7s9w6rVV9bGmMwi2vg8UdhHDvtMSZ/55e3krtpRHlhRld3t1/o1ugIxI7MZNt1U31wA76bg3uWwnXXQw6uWw+j7ICMlnGZC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596935; c=relaxed/simple; bh=PjYmrfLVvUBP+hJPWHcHP1Yl0S8esm3P4bwPD1D8xIQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JVTySkdqBlFxXiO2Ty00n2JulfzdP5QxSbJTXNYTe2pfbCsDczPhkFuNVWc2JAuopQGV7TM25oQnUFsBgQgBL2R0EqBJgNAuFG4GwZM0M/t77tYuv9QK5Okxv4lt/AkeEkCtNbcg50C9NgoJRnKW8bq2fSEbjescBW5QvolOrM0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=CK5tgKsE; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="CK5tgKsE" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-c247f6687dcso448543266b.2 for ; Mon, 24 Aug 2026 11:42:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596932; x=1788201732; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZMHV6Hk2N+WQQfLCucQHiHvg+yo3kZaqddjw6yoje2M=; b=CK5tgKsECcRrb3gxRmOkVe9ja80HUiUDOU+grMIZ6B72UQ+lXokGcWwCHJk7V6SwoM n8j1yNeB43MuvoIMryTtXIKyKTE7h8JM38SNQpvp4GOzkTtz2Jz/MNwX1CAZFQS8+yF1 N7RusOkToi+XIPXCHcEjcMbjcYNnuWYC9HQHglF0vhiV40dEcxhuhd9bogYIvPipCHV1 v5Kd30LoRfemgpRZq6S7PDmp0SWUUIM5W7ZayKseMHIOKe1U/rFCXKuPobok/EGYIzvq iJBSnPpVLCAgT9se5OAA0R5CVuQd2ALobBc7jRdr+sHx9+ge9TrWHDl49yVZjfHrKGMD 7eYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596932; x=1788201732; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ZMHV6Hk2N+WQQfLCucQHiHvg+yo3kZaqddjw6yoje2M=; b=PRyuF+g9f+0E5IF0UPkS8/tu6cQmTXFlgocwEk9uWOp7GbXIkecZCZrpFp1O21Rw6r aEPX+T5J2aNP+ZzzS1kC5o68D8tcf84hPuUtpSH756LI/+Xdetdx4cc+eqYP6HU7/WTM dsXCKdC/Crfa4qqTkFBMmyVFiHTzqLQNZLXjwfA/bX065PxwqkYOuzYckS++n5T+a3Fr HVzuQ86SCbmFAbzSihoOyXJNteoJZQZYSt4yvVCWnrlU+qvEfcNrQdn+BnxgXccSVTZ8 r5PvcoV57qd8Qazs9UIl7//AJyLVboowe33UNP+GyAh94eJnDkjjwan4BDMdf3tFAyLX 7NnA== X-Forwarded-Encrypted: i=1; AHgh+RpG8ESkn+g0dWNMcZHy95Go6HIM2AfI+YMdyStTMSLRN1zxx7kKbo4fGp6KGK9GsXo8Sxwbq5nC7TkNvLk=@vger.kernel.org X-Gm-Message-State: AFuF++mhXikbIjD18DyDpkT380ncQ66iohGymbz+dqbsP4B/khAK4icR ENz2vM5oO+wglSSXCTjxOdcuGR30HACLiEcRFFrUgBAuIKSZtn/7xN3kzxmSaS+WnZo= X-Gm-Gg: AR+sD118IAWnWZol/kYCvP7bClYCWnYaDG2jT8Oo7THi1J+xsECHmfnfim6KUMrYVhl t1RfOjYcL6BOVEN2ZQD6bZZFh27GP1Nmum1eVG/hsb82DP5F9soZABwexBtdLSv8pojh564HzTj 6E0AWXAUARQKPXRDr4CFmu+HDqVmZI2ui8RZ2LdeUrpx1VhG30iW835VYkGR5lVLXA3yRVgNya1 ZIVFi3VUNd+Oi9z47M8DnHWdysVIek6OGElZH3NKb33sWL+GM9vNjjVifCoMD4ImtOmHT9zWQBd JYNSxhW6CP0MMM/Kizsr+gv53HCSlhoMNrqqAh1iook0vdAuB45Jjj5LZtwGI2X30XgztEHBvdq OXF8pMRXu6qtvwdC3UgSEuYxVGDX26jTX/6Ig+p1kI9xZS/U733vCpgnnB4rJ8OQ49zCF26wUoW GRWnwgXGBvJ2Aqau5teF7MvgUIsiCUuUW+YIv/o8u9OQCeRRCgh63dbvewsk4fCpBHZjpJCBc6T x7Gt9F4E0SDdlXZHuUoU5UaEbVbuQvbQxV0irvK122aFKV6MaunNUdHglVvviHB X-Received: by 2002:a17:906:fd83:b0:c12:5a0e:3e0 with SMTP id a640c23a62f3a-c246a651b90mr3141091166b.19.1787596931658; Mon, 24 Aug 2026 11:42:11 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:11 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 04/11] fs/ceph/super.h: convert ceph_cap_snap.writing fields to `bool` Date: Mon, 24 Aug 2026 20:41:52 +0200 Message-ID: <20260824184159.240821-5-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This will allow better struct packing. Signed-off-by: Max Kellermann --- fs/ceph/caps.c | 2 +- fs/ceph/snap.c | 4 ++-- fs/ceph/super.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index d7283fb54cec..554343d612f7 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -3304,7 +3304,7 @@ static void __ceph_put_cap_refs(struct ceph_inode_inf= o *ci, int had, struct ceph_cap_snap, ci_item); =20 - capsnap->writing =3D 0; + capsnap->writing =3D false; if (ceph_try_drop_cap_snap(ci, capsnap)) /* put the ref held by ceph_queue_cap_snap() */ put++; diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c index 9b79a5eaca93..94964e0952bd 100644 --- a/fs/ceph/snap.c +++ b/fs/ceph/snap.c @@ -521,7 +521,7 @@ static bool has_new_snaps(struct ceph_snap_context *o, * However, if a (sync) write is currently in-progress when we apply * the snapshot, we have to wait until the write succeeds or fails * (and a final size/mtime is known). In this case the - * cap_snap->writing =3D 1, and is said to be "pending." When the write + * cap_snap->writing =3D true, and is said to be "pending." When the write * finishes, we __ceph_finish_cap_snap(). * * Caller must hold snap_rwsem for read (i.e., the realm topology won't @@ -627,7 +627,7 @@ static void ceph_queue_cap_snap(struct ceph_inode_info = *ci, doutc(cl, "%p %llx.%llx cap_snap %p snapc %p seq %llu used WR," " now pending\n", inode, ceph_vinop(inode), capsnap, old_snapc, old_snapc->seq); - capsnap->writing =3D 1; + capsnap->writing =3D true; } else { /* note mtime, size NOW. */ __ceph_finish_cap_snap(ci, capsnap); diff --git a/fs/ceph/super.h b/fs/ceph/super.h index a3dae2c0bbee..0d3363b0a33b 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -271,7 +271,7 @@ struct ceph_cap_snap { u64 time_warp_seq; u64 truncate_size; u32 truncate_seq; - int writing; /* a sync write is still in progress */ + bool writing; /* a sync write is still in progress */ int dirty_pages; /* dirty pages awaiting writeback */ bool inline_data; bool need_flush; --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25AF1387359 for ; Mon, 24 Aug 2026 18:42:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596936; cv=none; b=Fgu+OLOuH5bWkz0OHMfd4UJZLDCPPF0IJXPEVxtPIE1N29hvLjj4l5OxQG0pBeiW+5qe+zWLfDXd7PSY4YSAzW27NTxvPHJ9zdsVAyK4Nas+Hu0nRq8mvmYnfUDCPkt078QOX7fmTKF0yiXyWx2wy1Q1V49tehwcLWow68Ru0iU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596936; c=relaxed/simple; bh=H5u3z+Tubpf2cLYERQ0X8l8ceHX8Uaov/HhBtKM5scI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=u66wMuUOO3oVtqmtylThaS1t8ny9oiBeuI5gIPRVEDV1PbarPb4PbTEj8tJHIwq1oxvp0ukx5kWiP2uqwVzG9+G/O94OHN3fyfNdBbKIbUVpb8OMRiinlxW7inTG5RGpBpa/YhYDlIEOhel5hcbDXlB+pkyC2OgsZxCcu6pSTBM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=ZH9isdwU; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="ZH9isdwU" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-c15e2dab83eso723044466b.1 for ; Mon, 24 Aug 2026 11:42:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596932; x=1788201732; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JjRbzK6XVZM3n4obdC7bI65Mf1F229RRowFXOtJI7ns=; b=ZH9isdwUW2SVLVY1IrDFyAHNN+tvkvZAyrKqgCJpQCni0DExhSQrQ0MsIK8fbhm1zK jK9tP830ynVjCvD0okOeK8R0nMY9jdJy4i8bsdtHMvkZuRNALa87ukvu4QiJ8CYJkBdm EfMfd3aNm76471GXveYPSUGx8lFkDpHhS7n389QG9GCM7u9izgh8KQx+9InwWL4SZTIt x27yGWULSv9L+e8sD2hf9VReblIAWe6DgHWqswZa2FEIB2kyNIDYqRHmhcNacxtRdKrA ZSIsGGz5HhsdC6QK4iiRx8rECAN2/NV8w8XUnett24M0PtQlofDrN0ulFaPxLLK/IJuU nS1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596932; x=1788201732; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JjRbzK6XVZM3n4obdC7bI65Mf1F229RRowFXOtJI7ns=; b=m/a2o3QkTWK0D79gBHvtT3tstWuR/AzUhUNOZNb/o2Fuf9VOW72TmcT+1l6n7+V4mt XYNevkxT08OpKDwBWxruNCRPWx0Tui6D/w8sj+j4PXMJ1n41yH9ezZJqnuzSnTcsctBx 04oG1im5ylHNZ1R+pcLVzJlI90OilZ/Jg80v0xRgb0qFTj7hITOGgKp67+uEGJ68X5q2 zjTl6X89p6U1TcqTLmg7mcmNangyJMafT7sHxFB1TsYNbO53gWQZYkHkzrqUd9TKDZ8u rW8cUU/0FgocAf7BRNFpb8zClA5JtS7CH8evMQCYMpScSXI0B9XWA4VPFjAp2dp07TLN G5cg== X-Forwarded-Encrypted: i=1; AHgh+Rr8yRBkTXUPNGw91JRkUahmd/usu3foPDbmtg59+QUo36ZmUomqRrRyfsSvC7E3z4xFWssean18P1y9t9Y=@vger.kernel.org X-Gm-Message-State: AFuF++kf/froh1cr/eav38j3RIDSrXHyZrZt3B2GI6OEimWSxQxqrGLC evPhbgUMR6nIINf+ifmVJGWS2zSYzI+A2hQiK+TVk2RckFOdf5CzVLyracnUfNAdScr/pA6+DYu GmMdKJQ8= X-Gm-Gg: AR+sD134pWLjVK65oV/xJ+MhJDBA8Bloml8g1QpvuCqdV8N+wVh9UWyzAbwAeiBO1kD uFE3BkSMEHCPACzCXnYD/nj6jHJGJ5BAYtLE3u+TVaLpWpXjKouzFqpx+s3qtzVjBRdQDLqy+a5 h43Y2K9Z+kIfanhpgmDj7mXYSNeNLj+rxpxJCXu5OVPpPUwzCUn5lCj1/etjcw/LXzCeFrKzFNI uPRufvES1Y6MuCdti8uqz4vcaWLdZBvopwDOZARxiDi8DE3am5/PD01EfXTUWPUqkKmMBkIhCUs Yrl0Ot6cM+lBNdHPVwpjCTURpQCxBipbWdCpX7bz4Cj+O/GH+5Z9h9YfawaEBbd+RyKmmVQV9Mi b3iIa7nvg9ffd4dXe9CV/eT8izO9pyMa8JLeDIwdY6bKiZQ2qnC+iCcAu32MHz/YpCFCIpNUpQ6 G6A7NqZNlue+9yIEupObf1kWfEs+ZmeYSvkYbjK5rZKbSdjBo+E8M2UotblxWXMvV0BaZWXa803 l1dJKuq5Q9H+vdIjIwSi7SSxkuJkgNaNTjqOOvZbMuENyS95RBC8fvAs+V6prjh X-Received: by 2002:a17:907:3e98:b0:c16:8adf:f183 with SMTP id a640c23a62f3a-c24e5fc4f6emr35155466b.14.1787596932328; Mon, 24 Aug 2026 11:42:12 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:12 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 05/11] fs/ceph: consistently use `u32` for `time_warp_seq` Date: Mon, 24 Aug 2026 20:41:53 +0200 Message-ID: <20260824184159.240821-6-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Previously, both `u32` and `u64` was used with implicit casts. All this does is add useless overhead. This will allow better struct packing in `struct ceph_cap_snap`. Signed-off-by: Max Kellermann --- fs/ceph/inode.c | 6 +++--- fs/ceph/super.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index bdb82f123033..ce793ff934d0 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -916,7 +916,7 @@ void ceph_inode_set_subvolume(struct inode *inode, u64 = subvolume_id) } =20 void ceph_fill_file_time(struct inode *inode, int issued, - u64 time_warp_seq, struct timespec64 *ctime, + u32 time_warp_seq, struct timespec64 *ctime, struct timespec64 *mtime, struct timespec64 *atime) { struct ceph_client *cl =3D ceph_inode_to_client(inode); @@ -940,7 +940,7 @@ void ceph_fill_file_time(struct inode *inode, int issue= d, ceph_seq_cmp(time_warp_seq, ci->i_time_warp_seq) > 0) { /* the MDS did a utimes() */ doutc(cl, "mtime %ptSp -> %ptSp tw %d -> %d\n", &imtime, mtime, - ci->i_time_warp_seq, (int)time_warp_seq); + ci->i_time_warp_seq, time_warp_seq); =20 inode_set_mtime_to_ts(inode, *mtime); inode_set_atime_to_ts(inode, *atime); @@ -972,7 +972,7 @@ void ceph_fill_file_time(struct inode *inode, int issue= d, } } if (warn) /* time_warp_seq shouldn't go backwards */ - doutc(cl, "%p mds time_warp_seq %llu < %u\n", inode, + doutc(cl, "%p mds time_warp_seq %u < %u\n", inode, time_warp_seq, ci->i_time_warp_seq); } =20 diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 0d3363b0a33b..67411a5d8b91 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -268,7 +268,7 @@ struct ceph_cap_snap { u64 size; u64 change_attr; struct timespec64 mtime, atime, ctime, btime; - u64 time_warp_seq; + u32 time_warp_seq; u64 truncate_size; u32 truncate_seq; bool writing; /* a sync write is still in progress */ @@ -1099,7 +1099,7 @@ extern int ceph_fill_file_size(struct inode *inode, i= nt issued, u32 truncate_seq, u64 truncate_size, u64 size); extern void ceph_inode_set_subvolume(struct inode *inode, u64 subvolume_id= ); extern void ceph_fill_file_time(struct inode *inode, int issued, - u64 time_warp_seq, struct timespec64 *ctime, + u32 time_warp_seq, struct timespec64 *ctime, struct timespec64 *mtime, struct timespec64 *atime); extern int ceph_fill_inode(struct inode *inode, struct page *locked_page, --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4D303876C5 for ; Mon, 24 Aug 2026 18:42:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596937; cv=none; b=EhhbD6yi81KGdy3qjlNrrcY8/mPZB1SVtmYzsJb93KGlku0H3JA3DK4z1/iWlw39OS/EPkkDV7ALEHwpg26R3j/yUDesdfFgH6TEhe++TsUNLMNBO0f9SRGHXTzDl84ao+IXH1Y9MVl6IwSgCi3tBbxTTv26CLqh7fnBd8M9Ey0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596937; c=relaxed/simple; bh=rWcD9UAVTx1Qu4X1tQhXaEYVpYkM9g/KFb6msHCmSJk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Aq1IG/zMWQQkgmIwa9VIA9fGh4MfurZO4h39trpO/BLLx3RCd+UYjpBAey3FVJK5TJ8JyRthdzzN/sFSX8EO9FffwW3c6M4Pm7r5wYlUAVMxvLyUAYafU2eKqSSl2Ralmf4q/hgx9ucNa9ZVjfcEEmlGhM/39UWCSf6SVc29eNA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=OL++xASa; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="OL++xASa" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-c1712a04ddaso651107366b.2 for ; Mon, 24 Aug 2026 11:42:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596933; x=1788201733; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=iaBPZv5XdoOUADi4qlmlEchxRuZesTRRDOJ68FGWcG0=; b=OL++xASaRsJeNhP9JCxMM91wsuH1Z+7Z4ImtK71Y4cNmyGCBFWCjJ17Ugvjm6flbBa EtfqnWcOvvchK6B36Nhi0miZSORmHT1SubiqXg1uZQbGTctOQO2DHQUH5rVXOZKt24+b W+18tRzbsbjmtqboGVu+Vwv3ouTs6CzkPEyWS2eimkb8HvYtyb3IaPbLYrmswXcbENyq u5XlLarjHHmwvi8IufqteRxVIwlArcfSIZlivdA+3mAmyIFY01/frbmpXyrrzbivekZx lIYkAtZhRpTOCwm/EVCYJqwFf51t+nDS7skTBMi19ebb9j0R9PXSeMPd0/awKKJRwCCE +E2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596933; x=1788201733; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=iaBPZv5XdoOUADi4qlmlEchxRuZesTRRDOJ68FGWcG0=; b=fV8UDzHl0LD3pBMPUQcdd3cv8r0Pj7y2oJOGTNHPLGoEu9/mvy4NOVlrt9gTABVQgG ecEQ/3UW1urMTC1htX5eEJmPBP+xh3L9zvdhMIELPPbcd8u5NWJLuhiUvV2G7VBwKBTl 5Nx0BdOYVT1CqTqYu2SIJEHKYt1Lt2ZU3CytNPmkbtexl+P9dV6U74v5RbBgz3OxfLE+ Gkrz9/21ALIFSpZ67SQboxALXwOiYit1HPG8KjxXfxOvdIqnvQ6MIU8pFWMs0mQ12Oqu jh2v0+4xgVvkP7LJ+EKUEM1JWsyHP5CJ3r+VL4ru4jiIBQUUpiCMgAXmT4ze6pRjOE5a BVsg== X-Forwarded-Encrypted: i=1; AHgh+RplvIHR5qg6W4jAnN5OGEmMtux7UZIngYEOWJ92US4X9X8gJcZsBfhMOEo/EjpWa6okbC3k0SKBHN7xCLU=@vger.kernel.org X-Gm-Message-State: AFuF++naUrfguemZ/iQ/HHiQN/MQqjkBpJLLWQIZl4L1wPJycyCzmXA0 V0dmdeD38v6gBvWRlW6/zvtkpmHsGw1f1Q12SGOHBtwcpnM8TqIhqCXQA1q9xj2thMU= X-Gm-Gg: AR+sD13d5yNyV7fIBlo0jO5HZGBCgODkOB1Jf4kE7GqArioD0q9wccQVukM0lXyjedM tSuKH5zssRAggy4YfACUFWOqsx7WyGrdwBcG3H/woX3jzsVem9jFuCZZsYI94oRmcVzT6hSUnIu XmPHXKxHF25yNWj1PittMNxz8zzxBq4A1s/5Ob/qqKGPlnhCO6LYy8ECX6oixwLULvSDU57vy+6 Aert8BgTr2ZbD8OHqTSKMAhXekNDb4G0gP/qQpqDB2KO7KYYpldoQkaucglBvwV/hVhp3dfFSlp 2g+ERPQofI8lvdRYTaVrZyFL8shzV+Kba7Y7G4H2WSDTjLPJ4But5FcA/P76Z+f8CuYnRtBxEw8 9Vhe/jL3uhld+bW0kkNUHlECbPQ+GHW5+BwVrP8fG3+8rzhzF5aHQom69DiCK7mjz4VRGM/oHuq NPi4JeMZAEHtRx4GfhMUQ8VZIye/E6nkeCiC92XagFMtMQYDSxpGOUuE3l5VyqHXJx1hpGuhvfc 5zldX/1qjujfw/3ZWYurSKDOFLN8bQlMGwLogfvdWsooS4blZWrvoj2iaYmo2+X X-Received: by 2002:a17:906:7316:b0:c19:45e3:2f57 with SMTP id a640c23a62f3a-c2491cbca79mr2240592666b.9.1787596933001; Mon, 24 Aug 2026 11:42:13 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:12 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 06/11] fs/ceph/super: reorder fields to eliminate padding holes Date: Mon, 24 Aug 2026 20:41:54 +0200 Message-ID: <20260824184159.240821-7-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This reduces the size of `struct ceph_inode_info` by 32 bytes. Signed-off-by: Max Kellermann --- fs/ceph/super.h | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 67411a5d8b91..05452bc7eac1 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -250,6 +250,9 @@ struct ceph_cap_flush { */ struct ceph_cap_snap { refcount_t nref; + + umode_t mode; + struct list_head ci_item; =20 struct ceph_cap_flush cap_flush; @@ -258,7 +261,6 @@ struct ceph_cap_snap { int issued, dirty; struct ceph_snap_context *context; =20 - umode_t mode; kuid_t uid; kgid_t gid; =20 @@ -268,11 +270,12 @@ struct ceph_cap_snap { u64 size; u64 change_attr; struct timespec64 mtime, atime, ctime, btime; - u32 time_warp_seq; u64 truncate_size; u32 truncate_seq; - bool writing; /* a sync write is still in progress */ + u32 time_warp_seq; int dirty_pages; /* dirty pages awaiting writeback */ + + bool writing; /* a sync write is still in progress */ bool inline_data; bool need_flush; }; @@ -317,8 +320,8 @@ struct ceph_inode_xattr { struct rb_node node; =20 const char *name; - int name_len; const char *val; + int name_len; int val_len; bool dirty; =20 @@ -379,9 +382,9 @@ struct ceph_inode_info { =20 spinlock_t i_ceph_lock; =20 + u32 i_time_warp_seq; u64 i_version; u64 i_inline_version; - u32 i_time_warp_seq; =20 unsigned long i_ceph_flags; atomic64_t i_release_count; @@ -412,8 +415,8 @@ struct ceph_inode_info { =20 s32 i_dir_pin; =20 - struct rb_root i_fragtree; int i_fragtree_nsplits; + struct rb_root i_fragtree; struct mutex i_fragtree_mutex; =20 struct ceph_inode_xattrs_info i_xattrs; @@ -453,7 +456,6 @@ struct ceph_inode_info { struct list_head i_cap_snaps; /* snapped state pending flush to mds */ struct ceph_snap_context *i_head_snapc; /* set if wr_buffer_head > 0 or dirty|flushing caps */ - unsigned i_snap_caps; /* cap bits for snapped files */ /* * Written under i_ceph_lock, read via READ_ONCE() * from diagnostic paths. @@ -465,8 +467,8 @@ struct ceph_inode_info { int i_nr_by_mode[CEPH_FILE_MODE_BITS]; /* open file counts */ =20 struct mutex i_truncate_mutex; - u32 i_truncate_seq; /* last truncate to smaller size */ u64 i_truncate_size; /* and the size we last truncated down to */ + u32 i_truncate_seq; /* last truncate to smaller size */ int i_truncate_pending; /* still need to call vmtruncate */ =20 #ifdef CONFIG_FS_ENCRYPTION @@ -495,6 +497,8 @@ struct ceph_inode_info { struct list_head i_unsafe_iops; /* uncommitted mds inode ops */ spinlock_t i_unsafe_lock; =20 + unsigned int i_snap_caps; /* cap bits for snapped files */ + union { struct ceph_snap_realm *i_snap_realm; /* snap realm (if caps) */ struct ceph_snapid_map *i_snapid_map; /* snapid -> dev_t */ --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 725BC388878 for ; Mon, 24 Aug 2026 18:42:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596937; cv=none; b=S9TDeTTYOYGw3FTBLKRFFsnWKqiLjmlN2eD80PgUUDIPbYG13CjZsJFWXPhkC0p2vQyUV9kESSPt6allMndNS2EOW8l3xqu+Tl7HU02C+0GQJ5iOOPip8TBBqluSM1MAhhwwZ8mVRFX7IFVHyJRSorgig0IU2Khg/wppXIwXXqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596937; c=relaxed/simple; bh=sxxzBpRiaRyofA6uPpa5Cfs5wYLvy8Bsjn4excVGr+U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LIIT88fIPdHxZkoEFW0pREW8VljCkWScL3MFODZAyuuINP13i8aaidJ65qxle6Xci3Wi5CsMitIYdr1lBiDM3X/asYfzguyTBEIjHiDp1OpH6us5hVi4bxCuq1p52gT184f3E8OhqZ7kb7g/5XpRhXdXqg2HjXeciOmBh35VeLA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=E7QdtdfS; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="E7QdtdfS" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-c169ae1cb26so38779266b.1 for ; Mon, 24 Aug 2026 11:42:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596934; x=1788201734; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tDTEVPij87eFXhlKecR4a0GN+N1xkI0QIa6z8RjNM10=; b=E7QdtdfSTcRzzzqnbyTPCzVuU3RfhIRxSMscQtlqb02WsfGxgYpIy2uBWejN9oVNIO UgevXlwC5RH0Y898jKDtvH1PDEb2sqgDcnjzRe+R6+6FGZCipJKQNAZi55NULtt4tt2v BuDQfnLcHoRm1lOxGLpBd3AEzU+Rn9KGHKIMOd4Eht+nnMnEElans4ZBWkB+tP4RaaMF 7f0cyY025LuumRkIECTs8ZZs/NkVhCsifpAouSlFYBnPz/9dyNpA4y38zDvx3X9bSg8f agSX3saf5X8HJO0+YCvnKOYaU1yGvo7igPHIULDaiOF2KvFLRSz9HoFo+x2BeY9kIts/ ZYqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596934; x=1788201734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tDTEVPij87eFXhlKecR4a0GN+N1xkI0QIa6z8RjNM10=; b=Fr2mCJfWu1Y5FDX1qMCRcN4HlLVPZw9yANh+XT8t3OLgtl/disY6khSduvxKFkMtpa +t69IJ+RVELnxBcHtfoC8DrG91ZrWxyOcNwJ/aB3CISuGiSWQHsxIo2kSYP5Rd4xlSvU fa9yuC5NEyLxGINasxerSors8CKNrcZZvmGkX9pYWlz6ttAlx0ov1/0FjP7Jt3eQlHMh K8ARs/JGVamLzI65YdSLuayFbQvvLq2jTLzmD1T56qEUSm/zU5HtQlHIU3yS14YVf1or 0xYz1+NYUk8fzdqlAOIR9WTJsLrYfmDFjmYNvdWv4G5f30jPQ6nILL2m0TkiJEa9KfAt uJBA== X-Forwarded-Encrypted: i=1; AHgh+RrOMzHQWjIq93k2hmqy+cuPDqxJE9Zw6ZeMJ6wRjQitj99owvTf1D8vuvXybTX8lpBKi01JtSBDGE4YgHU=@vger.kernel.org X-Gm-Message-State: AFuF++naJd7JNTfWvjDd9KnlJ+S3qZrbX+GAvbgwqeNs56G94YUgJFlD jICtx1B5uZBOCgHQaAwcnxgUIutFQNNPEy28OAaI/AOMiqkMnuwbmWckDfczjFA9pBZ/fW3BK0G +mCShvXg= X-Gm-Gg: AR+sD11gnQb6UsJoYhDGHxANwCq0shP0GK1ir6zwNJGZiuyH1UDJW44fVH73Tdsu6e0 jefjTkf8hy1Do1Tf66v91qMLmbpVwn5eEuyiKf/hrywVRdEsc04f2Wsq6ptGch2DphYl5GFEXIr Q4edfqhe9W8q1YE+KVobkOhLnKQ0NOq4n7jL2aIklWYQ/6EeX5Xti8aqvnY0kscjYC/u2deaNaW z5/ZwcpxmjgXsctnWay+LoVw6DQ/XIs4ZT0s27M36pNpVNUHnmzdqr44Dqk/4EcxbHzyzA5x7ke 64RAWy4sC4YIOshgHle0LEW1H0A5/gQdoRvLZYyvnsCbcfv4oYXGHKtjPH8ZLpCnkF7mYsjW+aA e3R28zyyHt6HVgw7NF2QD2AEGOV7KBCZmphcd5OJ0Bmg/oEbhNvL51r0dIU91UgBOCUOSZzGtsb zwdOvsbfsCPQr+809y8PhrX1ktiPC0M4AqndGCUkDjq8+Sxxws84IP0BOyjTlq1qIcFoysxRZAY eKY2MI9Md4wan93aZ0qvvB7l5f/oKhSyfSeuKlfmV5wgttjCY0X6/EHjz5FjB5c X-Received: by 2002:a17:907:a088:b0:c21:4698:ee9e with SMTP id a640c23a62f3a-c24e2d6905bmr74078266b.7.1787596933796; Mon, 24 Aug 2026 11:42:13 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:13 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 07/11] fs/ceph: remove i_truncate_mutex, use i_fragtree_mutex for both Date: Mon, 24 Aug 2026 20:41:55 +0200 Message-ID: <20260824184159.240821-8-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" `i_fragtree_mutex` is only used for directories and `i_truncate_mutex` is only used for regular files. Since these two fields will never be both be used on any given object, let's merge them into one. (This is a minimal diff that defines a preprocessor macro, to avoid refactoring all code lines using these two mutexes.) This reduces the size of `struct ceph_inode_info` by 8 bytes. Signed-off-by: Max Kellermann --- fs/ceph/inode.c | 1 - fs/ceph/super.h | 7 ++++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index ce793ff934d0..a7cf9a7df756 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -677,7 +677,6 @@ struct inode *ceph_alloc_inode(struct super_block *sb) for (i =3D 0; i < CEPH_FILE_MODE_BITS; i++) ci->i_nr_by_mode[i] =3D 0; =20 - mutex_init(&ci->i_truncate_mutex); ci->i_truncate_seq =3D 0; ci->i_truncate_size =3D 0; ci->i_truncate_pending =3D 0; diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 05452bc7eac1..beb7009f793c 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -466,7 +466,12 @@ struct ceph_inode_info { unsigned long i_last_wr; int i_nr_by_mode[CEPH_FILE_MODE_BITS]; /* open file counts */ =20 - struct mutex i_truncate_mutex; +/* since i_fragtree_mutex is only used for directories and + * i_truncate_mutex is only used for regular files, we use the same + * field for both + */ +#define i_truncate_mutex i_fragtree_mutex + u64 i_truncate_size; /* and the size we last truncated down to */ u32 i_truncate_seq; /* last truncate to smaller size */ int i_truncate_pending; /* still need to call vmtruncate */ --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4151338B7BA for ; Mon, 24 Aug 2026 18:42:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596939; cv=none; b=cmBkEkGGLxVCVvSA/HAZyOVnD48BDAYb/gSkQOueRE+XgPntJsxFTgThmqgdH1QVutnBUTmehQgRh18a7KEnJoiTsObjnWUYG8zqDdy+uVPJ/71X1GWdhdBB1pzc4hSlkPPRmj+ltivUvVEr7KK7k1BwJBweCbqbicy2374zs+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596939; c=relaxed/simple; bh=8f4/Y9OGi6UWa4fmkrLPrmDMstvmz81JVDu3GHRUtMw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H8RpQiyh2vWb4eKrlKcIYDPxhCpDSDZ+i4v2P3ReRDwIaxb0TNQTtM/EatrkAG7n+5NaUqmrh6Rd5zrfrqcslKztBrJ+YtX9EdKy4v/bqo1ZYiWnE+IxjP8EFoiMjQudHbOd4MmguB1VDyphGJ6821Qv5w37q7uitV/28zxcfSU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=GVnWcjp/; arc=none smtp.client-ip=209.85.218.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="GVnWcjp/" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-c15d47266baso444876366b.3 for ; Mon, 24 Aug 2026 11:42:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596935; x=1788201735; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5tCkqN5jp8QCX/lQSQpuYbF6YkmDquhi+IixAaPDZQM=; b=GVnWcjp/wJFz05hYpRU61nsvL1YPYosgxKisBKPqhpPkbh9eWi2Ia529GMpXhZ2liH q3xaQMorgxsmQmuJkC8pubFYzz1io4Z7O2VeoPRJSDFqaoLEC+T0E7uNIeZWw7f9vIJd pU3ucNJcWrBPtR+lsGH98It4fDh57+UIRG/jA/1we/IqOMEYJS/FshulffXSjhMdC45P ueB4P0aVmcWj4hPRdN5PnQmEzXB0kG7JMLQ9XOOUWsXxUYYl8ngMEp+GGllQm6YQQvBz +ms/utIoMVvRnvXU1YvdpIN1CAyv1T1PFhy/W9Z7rlVaBKvNRX9SaHux9zEvwOChg7lp R6DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596935; x=1788201735; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=5tCkqN5jp8QCX/lQSQpuYbF6YkmDquhi+IixAaPDZQM=; b=IIklvQdUmaNISFJQbGnihCBdL5INh+YPd2tJHi3Jz+/17BSKosOaa6KRgww2Rfbtos 0Pqg0f1xmWxpQRaI2yshjCcPImisZQk2aop0uBwbwL73oIIbfmGbFj2iDtQQZc9AQ+I5 3CiOiV5MXqpCjCSMzX4E69I/ZDaXTx8rw9FCD7heIUt2ArhAVcQImgSXuPh0WYV6lzW8 3J58rCdbPetUfT1hJOAQnLZtWW+b6RXpJbQSQIVIYBVBXd0K2xt5znKvmrLmVsfYNF5X dJdFPs280bIEJfOenMkd8iEOi90gajwzrPZ/r9rtewpjYV7FutpZAzWFY5d9hmkp635D 7eHA== X-Forwarded-Encrypted: i=1; AHgh+Rpo/jM1qZAZ3s91N1Wka4UeWtCtlzbfMCKPcCoM+N8UMmb0psOypJYBpYVoHrC4EUJBMA3m+YCDlPyQ5ag=@vger.kernel.org X-Gm-Message-State: AFuF++nd1y2Oo1a0rBTTODdqJSxl9vM1mb7s0FXR4NCixTXKHZMmCgQt KdBF2+S9E1hWmqoF8s9HBBjGEPJt/st2Kd1sSNwHwx9M2Ln6qW1Hl2YhZYnz8DyAx20= X-Gm-Gg: AR+sD12uIf6cevAx1dsL36VCsYbS8OiUJsubFDx1pUlGdHDz72hB/mzYOb6DiHkli0l vXO8+lgJMb3N2CJlabmsrc+MP7j6+2NeVMK/mYN007XLj5vaSqZsRqJSqKybb3pqZYGmH8g2imd ETTYMxT/ZnOW9v82iIc0GKlVPNGSA4ol7dSh6kVP7W8R2klnTRFhSObvDYtEReC8cZVY2VL/UqA j+TazL6YK6jUaG26046r2S7oN5ByLMIQmxMcVeWhg67qFvWPEWB2pzbGRwOu5eMmBaVKwXHuP2A YKZPvsEdCa25k4UA9Ewb6P2Th5TmsXdIZen776DKuISyYO4w15WBAmBKtW+hoRW2/9720uTMJF8 yR69LRfjiggh8bIfPFcymoVgmGgaBlI6+nbP3NjW0VlSLhtFUpCNuboFTpwQvxqsiV9RDVpfI1r qpALlrAN1ILlWxqnJ/I6EaSHVWtsZLW6TjUFZhRDTyQlhmnuvd02vFiRaXlf7pPHjl3taRD+nZ1 r+TQLTcbzIEKvo2+v7WDKFLaBbqlY9qhk2PGGVumui/QlSAHHJzd2LuxF0kX1k0 X-Received: by 2002:a17:907:728b:b0:c24:c250:a6b5 with SMTP id a640c23a62f3a-c24e5ae23b9mr36253966b.12.1787596934652; Mon, 24 Aug 2026 11:42:14 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:14 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 08/11] fs/ceph/super.h: add `const` to helpers Date: Mon, 24 Aug 2026 20:41:56 +0200 Message-ID: <20260824184159.240821-9-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This documents that these functions do not modify the parameters. Signed-off-by: Max Kellermann --- fs/ceph/super.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/fs/ceph/super.h b/fs/ceph/super.h index beb7009f793c..4b2a1568000f 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -589,7 +589,7 @@ static inline u32 ceph_ino_to_ino32(u64 vino) * we do want to set it to something, so that generic vfs code has an * appropriate value for tracepoints and the like. */ -static inline ino_t ceph_vino_to_ino_t(struct ceph_vino vino) +static inline ino_t ceph_vino_to_ino_t(const struct ceph_vino vino) { if (sizeof(ino_t) =3D=3D sizeof(u32)) return ceph_ino_to_ino32(vino.ino); @@ -599,12 +599,12 @@ static inline ino_t ceph_vino_to_ino_t(struct ceph_vi= no vino) /* for printf-style formatting */ #define ceph_vinop(i) ceph_inode(i)->i_vino.ino, ceph_inode(i)->i_vino.snap =20 -static inline u64 ceph_ino(struct inode *inode) +static inline u64 ceph_ino(const struct inode *inode) { return ceph_inode(inode)->i_vino.ino; } =20 -static inline u64 ceph_snap(struct inode *inode) +static inline u64 ceph_snap(const struct inode *inode) { return ceph_inode(inode)->i_vino.snap; } @@ -819,7 +819,7 @@ static inline struct ceph_dentry_info *ceph_dentry(cons= t struct dentry *dentry) /* * caps helpers */ -static inline bool __ceph_is_any_real_caps(struct ceph_inode_info *ci) +static inline bool __ceph_is_any_real_caps(const struct ceph_inode_info *c= i) { return !RB_EMPTY_ROOT(&ci->i_caps); } @@ -1077,7 +1077,7 @@ void ceph_umount_begin(struct super_block *sb); * a cap_snap is "pending" if it is still awaiting an in-progress * sync write (that may/may not still update size, mtime, etc.). */ -static inline bool __ceph_have_pending_cap_snap(struct ceph_inode_info *ci) +static inline bool __ceph_have_pending_cap_snap(const struct ceph_inode_in= fo *ci) { return !list_empty(&ci->i_cap_snaps) && list_last_entry(&ci->i_cap_snaps, struct ceph_cap_snap, @@ -1174,7 +1174,7 @@ extern int ceph_getattr(struct mnt_idmap *idmap, u32 request_mask, unsigned int flags); void ceph_inode_shutdown(struct inode *inode); =20 -static inline bool ceph_inode_is_shutdown(struct inode *inode) +static inline bool ceph_inode_is_shutdown(const struct inode *inode) { unsigned long flags =3D READ_ONCE(ceph_inode(inode)->i_ceph_flags); struct ceph_fs_client *fsc =3D ceph_inode_to_fs_client(inode); @@ -1358,7 +1358,7 @@ extern int ceph_pool_perm_check(struct inode *inode, = int need); extern void ceph_pool_perm_destroy(struct ceph_mds_client* mdsc); int ceph_purge_inode_cap(struct inode *inode, struct ceph_cap *cap, bool *= invalidate); =20 -static inline bool ceph_has_inline_data(struct ceph_inode_info *ci) +static inline bool ceph_has_inline_data(const struct ceph_inode_info *ci) { if (ci->i_inline_version =3D=3D CEPH_INLINE_NONE || ci->i_inline_version =3D=3D 1) /* initial version, no data */ @@ -1433,7 +1433,7 @@ enum quota_get_realm { QUOTA_GET_ANY }; =20 -static inline bool __ceph_has_quota(struct ceph_inode_info *ci, +static inline bool __ceph_has_quota(const struct ceph_inode_info *ci, enum quota_get_realm which) { bool has_quota =3D false; @@ -1466,7 +1466,7 @@ static inline void __ceph_update_quota(struct ceph_in= ode_info *ci, ceph_adjust_quota_realms_count(&ci->netfs.inode, has_quota); } =20 -static inline int __ceph_sparse_read_ext_count(struct inode *inode, u64 le= n) +static inline int __ceph_sparse_read_ext_count(const struct inode *inode, = u64 len) { int cnt =3D 0; =20 --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 033F038D688 for ; Mon, 24 Aug 2026 18:42:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596940; cv=none; b=MaOU8aQ8e8wDq3NEbqt2wjE0QETLuTYji725wiRVsMqs4jXBCp/sl5grgynhp0fPqPGAhWqPoh7Au+H3fv2YLj+0VNYIiO4tvAFWJbmZLDf3f8EEpQ5zmnoJLxnMyQ1H8m1J93ROlJW2Vz3W4MZYUVRLLWeZo8Mwn1Gs88Wvrpk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596940; c=relaxed/simple; bh=HRA0vPfzlzUYKZ+myEEyI5cRnrk18P/nN73AltYro3w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HaSkclRFO5dQs6vkGzEiYJ14+BchAGFs/4Om9IMfr+uxVFA41oPMA1JLCRcfGjSnPvAdtRLmFZEbtndLsZ89vqE9YQjETYIxbcsKDonhPFjopPeCZGbEx28H35l93g6z4cIWiEn3o2BaTKsDakWJlm4s8WMWXu6DqnzpucfDnDA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=dikvQ/R0; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="dikvQ/R0" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-c15f020a223so570672566b.1 for ; Mon, 24 Aug 2026 11:42:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596936; x=1788201736; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Bk/jE4omjY4rzy8wvoFsMbM6BbeOeihKfUkOHoZIsRU=; b=dikvQ/R05/Ihy9YhbIDujLK8shXBMbmeGfbBjkCIuUu0zElXZEH1+3pvVp/XO2VYng 1ljqeIQ3fLPLdsor3gIpjD/u7ysXl2sJymQefOI6BeAR0zJxpOOpI6VFkLXSZq4/jwHf 85NevMVnIZua3Hxg8xobqO91D1CvUBAMeUSBvFrktRz9bYsnUEUoTCNer4xSe6R4kaQu PH2L4DgKot8ecxXnDkFGFn9UEQYal51nr8hT87byv3Zs/NzsbSNGfY0wfmch136HtSdN JyBYyZESfeSDsJWBD86xTQf4bBsMhlEANDQl3Pa9I4lDSBSRuoWIWXhEO9/+36c1xgGP eBew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596936; x=1788201736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Bk/jE4omjY4rzy8wvoFsMbM6BbeOeihKfUkOHoZIsRU=; b=hgCc003nw37wpuv8CgQ2FUuZRKJHd3BpPSf1c+c8Pypy2Q4Wqfd4+FvLHG2p9guXhQ vw2lvoKFM2jrDUPJ2pqw2ovKP6d05LjE+yMoXPizsncUt/343spXvPRLIOJLwIrWUtGP ICsG3piqStvs51UL28xFTcvIuMiWmbyJWpvLl0sMFmS/ri9ZQOOnH+Uh+9oEXJKgishL igPxNe8m1JBudxgKgyGfCkunVkHmLhr0fd4i/WF+XZlOsu08wRNPqRdKnTYxx288GcoK EJhynJ08/NB8+wLpdvEf0THT6mgyTDXmA5RZPKhY7YdUJetfqsGZAZFJ303DTdzzzUbt BsLw== X-Forwarded-Encrypted: i=1; AHgh+RrxZ2npFSzpKHc2/nZcbt6NS90VF+ZGUW70rCoUrc0dLldL+KpVOZfKrI51vb6TLBmqNjNYWA/oWCvIo/M=@vger.kernel.org X-Gm-Message-State: AFuF++mYH0jOWk5hxjtRg/6KAwDvn3S9BmQlH99DNOxcUzkcTPKoWAGx MEBr28Noee4DJbKM744Zm6amR270PZ+zUU1mEotXpYdt7HSq8523kzz6vP1MX511vXg= X-Gm-Gg: AR+sD1094LQ4klD6RnYLh1DkytKQJkCSm46d/zxI96NL0i5afMfMQvFMigo62vH1xFw fp9NhA3cwrsHpsxugFXhAcsheyqyTGH51lNd5P+3B19v2XVTVe8RmCr7YItvUoXUwey8uIQD2cd pEEoEESmRA5rP3bLg2Kz857jLAcUJdDCYCvcxixk87zjPErd8L8tAP1o8LK2/VDRMeYBx+dTod3 PqQjAZt8HqpDflgKBaptrz9IsvIRGjsSdo8hb9Qs4/upgrRJexnZqUfSdRdJKYLCMHinOABxL9a Eg835RMzRh3X4W71efYH/ZUO6Au59YknaTkgCaICPX4NgRYE0OkwAHOkHl7AC7zEVMZw9ZR9fz7 g0sNIUD9EwWXrOnT4A64kavBVOhEEVGUDVoDa3EmI3lrcLP1H/OxpSh1O0YonlUCxxwXZ/cFTzB J2CJGvl6ZACkAuib91yh8GgpIeeg1OUb4lyqzh808lu2dZRCkFfVmhQ6jQIrPyGCrdBzASQQwGh vlqJj2Lz7OHJWtDPwgWqK74fWUv0hGTb3+20dZLjUJkjOb/nNJOOA2gLORTMyvZ X-Received: by 2002:a17:907:3d4e:b0:c20:1bc5:7002 with SMTP id a640c23a62f3a-c246a4ad6abmr3250569766b.3.1787596935949; Mon, 24 Aug 2026 11:42:15 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:15 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 09/11] fs/ceph/super.h: add helper ceph_in_snap() Date: Mon, 24 Aug 2026 20:41:57 +0200 Message-ID: <20260824184159.240821-10-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some code simplification. Signed-off-by: Max Kellermann --- fs/ceph/acl.c | 2 +- fs/ceph/addr.c | 2 +- fs/ceph/dir.c | 18 +++++++++--------- fs/ceph/export.c | 8 ++++---- fs/ceph/file.c | 14 +++++++------- fs/ceph/inode.c | 14 +++++++------- fs/ceph/mds_client.c | 10 +++++----- fs/ceph/quota.c | 4 ++-- fs/ceph/super.h | 8 ++++++++ fs/ceph/xattr.c | 4 ++-- 10 files changed, 46 insertions(+), 38 deletions(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 85d3dd48b167..dbc64ab60308 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -99,7 +99,7 @@ int ceph_set_acl(struct mnt_idmap *idmap, struct dentry *= dentry, struct timespec64 old_ctime =3D inode_get_ctime(inode); umode_t new_mode =3D inode->i_mode, old_mode =3D inode->i_mode; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) { + if (ceph_in_snap(inode)) { ret =3D -EROFS; goto out; } diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index ecf33b66610c..41af001070bb 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2577,7 +2577,7 @@ int ceph_pool_perm_check(struct inode *inode, int nee= d) if (!S_ISREG(inode->i_mode)) return 0; =20 - if (ci->i_vino.snap !=3D CEPH_NOSNAP) { + if (ceph_in_snap(inode)) { /* * Pool permission check needs to write to the first object. * But for snapshot, head of the first object may have already diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index 4a5e0290f2e3..aff72458d3f4 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -732,7 +732,7 @@ struct dentry *ceph_handle_snapdir(struct ceph_mds_requ= est *req, struct ceph_client *cl =3D ceph_inode_to_client(parent); =20 /* .snap dir? */ - if (ceph_snap(parent) =3D=3D CEPH_NOSNAP && + if (!ceph_in_snap(parent) && strcmp(dentry->d_name.name, fsc->mount_options->snapdir_name) =3D=3D = 0) { struct dentry *res; struct inode *inode =3D ceph_get_snapdir(parent); @@ -924,7 +924,7 @@ static int ceph_mknod(struct mnt_idmap *idmap, struct i= node *dir, struct ceph_acl_sec_ctx as_ctx =3D {}; int err; =20 - if (ceph_snap(dir) !=3D CEPH_NOSNAP) + if (ceph_in_snap(dir)) return -EROFS; =20 err =3D ceph_wait_on_conflict_unlink(dentry); @@ -1036,7 +1036,7 @@ static int ceph_symlink(struct mnt_idmap *idmap, stru= ct inode *dir, umode_t mode =3D S_IFLNK | 0777; int err; =20 - if (ceph_snap(dir) !=3D CEPH_NOSNAP) + if (ceph_in_snap(dir)) return -EROFS; =20 err =3D ceph_wait_on_conflict_unlink(dentry); @@ -1120,7 +1120,7 @@ static struct dentry *ceph_mkdir(struct mnt_idmap *id= map, struct inode *dir, op =3D CEPH_MDS_OP_MKSNAP; doutc(cl, "mksnap %llx.%llx/'%pd' dentry %p\n", ceph_vinop(dir), dentry, dentry); - } else if (ceph_snap(dir) =3D=3D CEPH_NOSNAP) { + } else if (!ceph_in_snap(dir)) { doutc(cl, "mkdir %llx.%llx/'%pd' dentry %p mode 0%ho\n", ceph_vinop(dir), dentry, dentry, mode); op =3D CEPH_MDS_OP_MKDIR; @@ -1206,7 +1206,7 @@ static int ceph_link(struct dentry *old_dentry, struc= t inode *dir, if (err) return err; =20 - if (ceph_snap(dir) !=3D CEPH_NOSNAP) + if (ceph_in_snap(dir)) return -EROFS; =20 err =3D fscrypt_prepare_link(old_dentry, dir, dentry); @@ -1358,7 +1358,7 @@ static int ceph_unlink(struct inode *dir, struct dent= ry *dentry) doutc(cl, "rmsnap %llx.%llx/'%pd' dn\n", ceph_vinop(dir), dentry); op =3D CEPH_MDS_OP_RMSNAP; - } else if (ceph_snap(dir) =3D=3D CEPH_NOSNAP) { + } else if (!ceph_in_snap(dir)) { doutc(cl, "unlink/rmdir %llx.%llx/'%pd' inode %llx.%llx\n", ceph_vinop(dir), dentry, ceph_vinop(inode)); op =3D d_is_dir(dentry) ? @@ -1487,7 +1487,7 @@ static int ceph_rename(struct mnt_idmap *idmap, struc= t inode *old_dir, =20 if (ceph_snap(old_dir) !=3D ceph_snap(new_dir)) return -EXDEV; - if (ceph_snap(old_dir) !=3D CEPH_NOSNAP) { + if (ceph_in_snap(old_dir)) { if (old_dir =3D=3D new_dir && ceph_snap(old_dir) =3D=3D CEPH_SNAPDIR) op =3D CEPH_MDS_OP_RENAMESNAP; else @@ -1985,7 +1985,7 @@ static int ceph_d_revalidate(struct inode *dir, const= struct qstr *name, mdsc =3D ceph_sb_to_fs_client(dir->i_sb)->mdsc; =20 /* always trust cached snapped dentries, snapdir dentry */ - if (ceph_snap(dir) !=3D CEPH_NOSNAP) { + if (ceph_in_snap(dir)) { doutc(cl, "%p '%pd' inode %p is SNAPPED\n", dentry, dentry, inode); valid =3D 1; @@ -2069,7 +2069,7 @@ static int ceph_d_delete(const struct dentry *dentry) /* won't release caps */ if (d_really_is_negative(dentry)) return 0; - if (ceph_snap(d_inode(dentry)) !=3D CEPH_NOSNAP) + if (ceph_in_snap(d_inode(dentry))) return 0; /* valid lease? */ di =3D ceph_dentry(dentry); diff --git a/fs/ceph/export.c b/fs/ceph/export.c index b2f2af104679..d132db40ba00 100644 --- a/fs/ceph/export.c +++ b/fs/ceph/export.c @@ -99,7 +99,7 @@ static int ceph_encode_fh(struct inode *inode, u32 *rawfh= , int *max_len, static const int connected_handle_length =3D CEPH_FH_WITH_PARENT_SIZE; int type; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(inode)) return ceph_encode_snapfh(inode, rawfh, max_len, parent_inode); =20 if (parent_inode && (*max_len < connected_handle_length)) { @@ -372,7 +372,7 @@ static struct dentry *ceph_get_parent(struct dentry *ch= ild) struct ceph_client *cl =3D ceph_inode_to_client(inode); struct dentry *dn; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) { + if (ceph_in_snap(inode)) { struct inode* dir; bool unlinked =3D false; /* do not support non-directory */ @@ -456,7 +456,7 @@ static int __get_snap_name(struct dentry *parent, char = *name, if (ceph_ino(inode) !=3D ceph_ino(dir)) goto out; if (ceph_snap(inode) =3D=3D CEPH_SNAPDIR) { - if (ceph_snap(dir) =3D=3D CEPH_NOSNAP) { + if (!ceph_in_snap(dir)) { /* * .get_name() from struct export_operations * assumes that its 'name' parameter is pointing @@ -555,7 +555,7 @@ static int ceph_get_name(struct dentry *parent, char *n= ame, struct ceph_mds_reply_info_parsed *rinfo; int err; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(inode)) return __get_snap_name(parent, name, child); =20 mdsc =3D ceph_inode_to_fs_client(inode)->mdsc; diff --git a/fs/ceph/file.c b/fs/ceph/file.c index a4a2a4b6a027..e79c18aee78d 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -438,7 +438,7 @@ int ceph_open(struct inode *inode, struct file *file) } =20 /* snapped files are read-only */ - if (ceph_snap(inode) !=3D CEPH_NOSNAP && (file->f_mode & FMODE_WRITE)) + if (ceph_in_snap(inode) && (file->f_mode & FMODE_WRITE)) return -EROFS; =20 /* trivially open snapdir */ @@ -470,7 +470,7 @@ int ceph_open(struct inode *inode, struct file *file) ceph_check_caps(ci, 0); =20 return ceph_init_file(inode, file, fmode); - } else if (!do_sync && ceph_snap(inode) !=3D CEPH_NOSNAP && + } else if (!do_sync && ceph_in_snap(inode) && (ci->i_snap_caps & wanted) =3D=3D wanted) { __ceph_touch_fmode(ci, mdsc, fmode); spin_unlock(&ci->i_ceph_lock); @@ -1540,7 +1540,7 @@ ceph_direct_read_write(struct kiocb *iocb, struct iov= _iter *iter, bool should_dirty =3D !write && user_backed_iter(iter); bool sparse =3D ceph_test_mount_opt(fsc, SPARSEREAD); =20 - if (write && ceph_snap(file_inode(file)) !=3D CEPH_NOSNAP) + if (write && ceph_in_snap(file_inode(file))) return -EROFS; =20 doutc(cl, "sync_direct_%s on file %p %lld~%u snapc %p seq %lld\n", @@ -1776,7 +1776,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *= from, loff_t pos, struct timespec64 mtime =3D current_time(inode); size_t count =3D iov_iter_count(from); =20 - if (ceph_snap(file_inode(file)) !=3D CEPH_NOSNAP) + if (ceph_in_snap(file_inode(file))) return -EROFS; =20 doutc(cl, "on file %p %lld~%u snapc %p seq %lld\n", file, pos, @@ -2411,7 +2411,7 @@ static ssize_t ceph_write_iter(struct kiocb *iocb, st= ruct iov_iter *from) if (ceph_inode_is_shutdown(inode)) return -ESTALE; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(inode)) return -EROFS; =20 prealloc_cf =3D ceph_alloc_cap_flush(); @@ -2763,7 +2763,7 @@ static long ceph_fallocate(struct file *file, int mod= e, =20 inode_lock(inode); =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) { + if (ceph_in_snap(inode)) { ret =3D -EROFS; goto unlock; } @@ -3052,7 +3052,7 @@ static ssize_t __ceph_copy_file_range(struct file *sr= c_file, loff_t src_off, return -EXDEV; } } - if (ceph_snap(dst_inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(dst_inode)) return -EROFS; =20 /* diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index a7cf9a7df756..62399361821a 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -766,7 +766,7 @@ void ceph_evict_inode(struct inode *inode) * caps in i_snap_caps. */ if (ci->i_snap_realm) { - if (ceph_snap(inode) =3D=3D CEPH_NOSNAP) { + if (!ceph_in_snap(inode)) { doutc(cl, " dropping residual ref to snap realm %p\n", ci->i_snap_realm); ceph_change_snap_realm(inode, NULL); @@ -1066,7 +1066,7 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, info_caps =3D le32_to_cpu(info->cap.caps); =20 /* prealloc new cap struct */ - if (info_caps && ceph_snap(inode) =3D=3D CEPH_NOSNAP) { + if (info_caps && !ceph_in_snap(inode)) { new_cap =3D ceph_get_cap(mdsc, caps_reservation); if (!new_cap) return -ENOMEM; @@ -1088,7 +1088,7 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, pool_ns =3D ceph_find_or_create_string(iinfo->pool_ns_data, iinfo->pool_ns_len); =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP && !ci->i_snapid_map) + if (ceph_in_snap(inode) && !ci->i_snapid_map) ci->i_snapid_map =3D ceph_get_snapid_map(mdsc, ceph_snap(inode)); =20 spin_lock(&ci->i_ceph_lock); @@ -1333,7 +1333,7 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, =20 /* were we issued a capability? */ if (info_caps) { - if (ceph_snap(inode) =3D=3D CEPH_NOSNAP) { + if (!ceph_in_snap(inode)) { ceph_add_cap(inode, session, le64_to_cpu(info->cap.cap_id), info_caps, @@ -1433,7 +1433,7 @@ static void __update_dentry_lease(struct inode *dir, = struct dentry *dentry, doutc(cl, "%p duration %lu ms ttl %lu\n", dentry, duration, ttl); =20 /* only track leases on regular dentries */ - if (ceph_snap(dir) !=3D CEPH_NOSNAP) + if (ceph_in_snap(dir)) return; =20 if (mask & CEPH_LEASE_PRIMARY_LINK) @@ -2930,7 +2930,7 @@ int ceph_setattr(struct mnt_idmap *idmap, struct dent= ry *dentry, struct ceph_fs_client *fsc =3D ceph_inode_to_fs_client(inode); int err; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(inode)) return -EROFS; =20 if (ceph_inode_is_shutdown(inode)) @@ -3185,7 +3185,7 @@ int ceph_getattr(struct mnt_idmap *idmap, const struc= t path *path, valid_mask |=3D STATX_CHANGE_COOKIE; } =20 - if (ceph_snap(inode) =3D=3D CEPH_NOSNAP) + if (!ceph_in_snap(inode)) stat->dev =3D sb->s_dev; else stat->dev =3D ci->i_snapid_map ? ci->i_snapid_map->dev : 0; diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 3c692ad02c85..30f8430b2825 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -1311,7 +1311,7 @@ static struct inode *get_nonsnap_parent(struct dentry= *dentry) =20 while (dentry && !IS_ROOT(dentry)) { inode =3D d_inode_rcu(dentry); - if (!inode || ceph_snap(inode) =3D=3D CEPH_NOSNAP) + if (!inode || !ceph_in_snap(inode)) break; dentry =3D dentry->d_parent; } @@ -1385,7 +1385,7 @@ static int __choose_mds(struct ceph_mds_client *mdsc, inode =3D d_inode(req->r_dentry); if (inode) ihold(inode); - } else if (ceph_snap(dir) !=3D CEPH_NOSNAP) { + } else if (ceph_in_snap(dir)) { /* direct snapped/virtual snapdir requests * based on parent dir inode */ inode =3D get_nonsnap_parent(parent); @@ -2878,7 +2878,7 @@ char *ceph_mdsc_build_path(struct ceph_mds_client *md= sc, struct dentry *dentry, spin_unlock(&cur->d_lock); parent =3D dget_parent(cur); } else if (for_wire && inode && dentry !=3D cur && - ceph_snap(inode) =3D=3D CEPH_NOSNAP) { + !ceph_in_snap(inode)) { spin_unlock(&cur->d_lock); pos++; /* get rid of any prepended '/' */ break; @@ -2987,7 +2987,7 @@ static int build_dentry_path(struct ceph_mds_client *= mdsc, struct dentry *dentry rcu_read_lock(); if (!dir) dir =3D d_inode_rcu(dentry->d_parent); - if (dir && parent_locked && ceph_snap(dir) =3D=3D CEPH_NOSNAP && + if (dir && parent_locked && !ceph_in_snap(dir) && !IS_ENCRYPTED(dir)) { path_info->vino.ino =3D ceph_ino(dir); path_info->vino.snap =3D ceph_snap(dir); @@ -3013,7 +3013,7 @@ static int build_inode_path(struct inode *inode, stru= ct ceph_path_info *path_inf struct dentry *dentry; char *path; =20 - if (ceph_snap(inode) =3D=3D CEPH_NOSNAP) { + if (!ceph_in_snap(inode)) { path_info->vino.ino =3D ceph_ino(inode); path_info->vino.snap =3D ceph_snap(inode); path_info->pathlen =3D 0; diff --git a/fs/ceph/quota.c b/fs/ceph/quota.c index 053d5bf0c9f0..08641d578a0b 100644 --- a/fs/ceph/quota.c +++ b/fs/ceph/quota.c @@ -223,7 +223,7 @@ static int get_quota_realm(struct ceph_mds_client *mdsc= , struct inode *inode, =20 if (realmp) *realmp =3D NULL; - if (ceph_snap(inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(inode)) return 0; =20 restart: @@ -341,7 +341,7 @@ static bool check_quota_exceeded(struct inode *inode, e= num quota_check_op op, u64 max, rvalue; bool exceeded =3D false; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(inode)) return false; =20 down_read(&mdsc->snap_rwsem); diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 4b2a1568000f..4d6cdbf02491 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -609,6 +609,14 @@ static inline u64 ceph_snap(const struct inode *inode) return ceph_inode(inode)->i_vino.snap; } =20 +/** + * Is this inode in a ".snap" directory? + */ +static inline bool ceph_in_snap(const struct inode *inode) +{ + return ceph_snap(inode) !=3D CEPH_NOSNAP; +} + /** * ceph_present_ino - format an inode number for presentation to userland * @sb: superblock where the inode lives diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index 860fc8e1867d..d93dc7ae0add 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -270,7 +270,7 @@ static bool ceph_vxattrcb_quota_exists(struct ceph_inod= e_info *ci) bool ret =3D false; spin_lock(&ci->i_ceph_lock); if ((ci->i_max_files || ci->i_max_bytes) && - ci->i_vino.snap =3D=3D CEPH_NOSNAP && + !ceph_in_snap(&ci->netfs.inode) && ci->i_snap_realm && ci->i_snap_realm->ino =3D=3D ci->i_vino.ino) ret =3D true; @@ -1193,7 +1193,7 @@ int __ceph_setxattr(struct inode *inode, const char *= name, bool check_realm =3D false; bool lock_snap_rwsem =3D false; =20 - if (ceph_snap(inode) !=3D CEPH_NOSNAP) + if (ceph_in_snap(inode)) return -EROFS; =20 vxattr =3D ceph_match_vxattr(inode, name); --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9CB93385D9E for ; Mon, 24 Aug 2026 18:42:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596941; cv=none; b=ZC3R6AJRSF2GPRf79Ak5HBBj/FRmOZjQADdQIWPLdIWNI0fJZxdL2fhBhsCqzJ+cxeHzfqkgaMaGdXzpYKW5Byz4bOi9P0otHUk0iNTUcveMq6nIX9sitCABHCPXEsVOpoL3vndqQjYTh57EUdXGLAbPjUC5diSCSJErRMdaoks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596941; c=relaxed/simple; bh=fy0YWdySbcwe+SrvcVcAqvPsPd89TYKxDwapLKGJrBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=muSNBBCMAOO68oTQFcEBiOZoo5GAoheCf4FuJTwjccZGgpa/Cdu/Bc+g5PIS25dqEhQNhtyyQy2pD3Viqad0xx6xrdatr3OhO6Fs4z1IcYdzZQ0eW/WihmYwHJiFSicGaf5dDWECukX+syeICiY9ypztPl3RrMrfFfdzv6prO30= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=EdXT7L85; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="EdXT7L85" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-c15ba3a2b4bso548506166b.1 for ; Mon, 24 Aug 2026 11:42:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596937; x=1788201737; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=2wrgSoA/LAHCRylqcLx3VjgTNEF7/gfLlLajj75IaXo=; b=EdXT7L85qpTsABdIy+9QboMXdtbvTVJh5sxUdfp3DwfKfclQeSgMKFmlD7lWnaK2zn RhAaQ0Y1fMRIc7AryVnOG0t6Isa9raTxB0CIvMn1gE75fZ+xgGyXYLVDU9fbo4VM2xXp sbPC4q4OVya7YhHnMAAMuHRgVAQL+Xd+Pk8nIz+ZBLw1cBjV7I1C+CCkpDgrpyUiR3dD /r/H/6AHRu4d8mFGeDZu5QVf8kGln8v0f69jna3sFPXXHbTaKBJdDvJtOxOoIf6L4tYO BZpL1LO5nWbza3a4//JDw3vBYSAelPeW4QpynqZ+Oe7RLClIuUQCwrxig6vor5SOsQc4 psLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596937; x=1788201737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=2wrgSoA/LAHCRylqcLx3VjgTNEF7/gfLlLajj75IaXo=; b=IumqsfX7/0wZtrydrN0SFEtRwN1hR+Zas5Tz6ZRO/JdQvNZTq0/llEhrcWhOqSQ9ga QVm++jPD7Exw+uwM2IJ//EBezEfnh73pbGMUI4h0ktEGCQ32Utjq0AI9SyB9puEoKXg+ Mz2J3I8iMRQFuaFtoOd/9NYLeLYZcRDM+SuzlsgRVite/KNlBEfAlHmB9ELrrekZbffX yljCYD1bAHsx4ITbidNyi6V79Ur/3hcwHXOvh05tTT3Qmfre1z8KrvOUhUDzDrbNuI6v PL2BkBH5/GGzSrIuByqSd34vzr6P8EbJZT89oZuw9BW3pTzWWXLWLsp9cEzqk0+6Z1GP XgQg== X-Forwarded-Encrypted: i=1; AHgh+RoxMGXi3rcmPOBLd/edKGmmcL9/AhTw0sLUVy7b8fULXDcaU6T/LfRffAzPgPONX6twsCIT4vYCoOj2hlg=@vger.kernel.org X-Gm-Message-State: AFuF++mpFF93jGPqCap0rl3sGhwyxH2Q/te7pdE4Y8psjuLnGm1YmexM IYncVdbp1D6munA1z8C9PUyyqZRB3jP4I80NoO3Xi8qZ52efmBBa11Vg7nOSu+yPC8E= X-Gm-Gg: AR+sD104nBmbdOGF+uoNjsEUfa12JpysxA+S0FvekuFe6rOccU4KGW3+V6LvzI5t2MH W5Vxz9O4iT0o/CxzFqLyb4c4zA/JEBpDq5l2y2PWFdXdMGOLmgCWavYaFfjoOD/S7EnroKBu1fU RlBBTtSpo87rlJabRtHRO0Rrci+Yx4AKm28Xp73DaxPNORqMOo1Jj1FnO/cLOsP7BOevdt+aZQp qC382lCQY7keEVUJQexr5Akk6/scnmisZuykH13abgMKdwsqBEB1J91tOJUAilLxFaZXuOgqQcK BRHxzOmh9HkPjX31FZR5JUTqvQrep9zg807v1YXs5jskG0Ny/oz4WEATKhmCdzHsUEjpYeVeA2i 18+nbgIGYu3aQRYANxhTFLH8iGpTmavsEY1f5AzyIkr22enQ/cwn61Gdg/69kxz/KnwZRRLsOWm +IuXdJewm19aJOJxhac+tRuN7yc3FrlRxXtQ2LD+cSZh3ocowaUELiXz+0aGr8pU1orMW180/aw /y7EhI4nZ7YqCfzam/kbnaDhCG9f7xAjMKJyDwnyhQmtyfCvfd7SJl1LV5dr8qGrA== X-Received: by 2002:a17:907:d048:b0:c21:74ed:4608 with SMTP id a640c23a62f3a-c246a4cf8b5mr3173824666b.10.1787596936684; Mon, 24 Aug 2026 11:42:16 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:16 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 10/11] fs/ceph: use ceph_vino() etc. instead of accessing i_vino directly Date: Mon, 24 Aug 2026 20:41:58 +0200 Message-ID: <20260824184159.240821-11-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Prepare to remove (optimize) `i_vino`. Signed-off-by: Max Kellermann --- fs/ceph/addr.c | 5 ++--- fs/ceph/caps.c | 4 ++-- fs/ceph/dir.c | 2 +- fs/ceph/file.c | 14 +++++++------- fs/ceph/mds_client.c | 2 +- fs/ceph/quota.c | 2 +- fs/ceph/snap.c | 4 ++-- fs/ceph/super.h | 7 +++---- fs/ceph/xattr.c | 4 ++-- 9 files changed, 21 insertions(+), 23 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 41af001070bb..3a3f49f2cdbc 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -282,7 +282,6 @@ static bool ceph_netfs_issue_op_inline(struct netfs_io_= subrequest *subreq) struct ceph_mds_reply_info_in *iinfo; struct ceph_mds_request *req; struct ceph_mds_client *mdsc =3D ceph_sb_to_mdsc(inode->i_sb); - struct ceph_inode_info *ci =3D ceph_inode(inode); ssize_t err =3D 0; size_t len; int mode; @@ -302,7 +301,7 @@ static bool ceph_netfs_issue_op_inline(struct netfs_io_= subrequest *subreq) err =3D PTR_ERR(req); goto out; } - req->r_ino1 =3D ci->i_vino; + req->r_ino1 =3D ceph_vino(inode); req->r_args.getattr.mask =3D cpu_to_le32(CEPH_STAT_CAP_INLINE_DATA); req->r_num_caps =3D 2; =20 @@ -2475,7 +2474,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_inf= o *ci, rd_req->r_base_oloc.pool =3D pool; if (pool_ns) rd_req->r_base_oloc.pool_ns =3D ceph_get_string(pool_ns); - ceph_oid_printf(&rd_req->r_base_oid, "%llx.00000000", ci->i_vino.ino); + ceph_oid_printf(&rd_req->r_base_oid, "%llx.00000000", ceph_ino(&ci->netfs= .inode)); =20 err =3D ceph_osdc_alloc_messages(rd_req, GFP_NOFS); if (err) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 554343d612f7..f81782712d8a 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -730,7 +730,7 @@ void ceph_add_cap(struct inode *inode, ceph_change_snap_realm(inode, realm); else WARN(1, "%s: couldn't find snap realm 0x%llx (ino 0x%llx oldrealm 0x%ll= x)\n", - __func__, realmino, ci->i_vino.ino, + __func__, realmino, ceph_ino(inode), ci->i_snap_realm ? ci->i_snap_realm->ino : 0); } =20 @@ -1176,7 +1176,7 @@ void __ceph_remove_cap(struct ceph_cap *cap, bool que= ue_release) } else { cap->queue_release =3D 0; } - cap->cap_ino =3D ci->i_vino.ino; + cap->cap_ino =3D ceph_ino(inode); =20 spin_unlock(&session->s_cap_lock); =20 diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index aff72458d3f4..c0a3c10f576e 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -2124,7 +2124,7 @@ static void ceph_d_prune(struct dentry *dentry) =20 /* we hold d_lock, so d_parent is stable */ dir_ci =3D ceph_inode(d_inode(dentry->d_parent)); - if (dir_ci->i_vino.snap =3D=3D CEPH_SNAPDIR) + if (ceph_snap(&dir_ci->netfs.inode) =3D=3D CEPH_SNAPDIR) return; =20 /* who calls d_delete() should also disable dcache readdir */ diff --git a/fs/ceph/file.c b/fs/ceph/file.c index e79c18aee78d..bf4e888905a5 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1119,7 +1119,7 @@ ssize_t __ceph_sync_read(struct inode *inode, loff_t = *ki_pos, read_off, read_len); =20 req =3D ceph_osdc_new_request(osdc, &ci->i_layout, - ci->i_vino, read_off, &read_len, 0, 1, + ceph_vino(inode), read_off, &read_len, 0, 1, sparse ? CEPH_OSD_OP_SPARSE_READ : CEPH_OSD_OP_READ, CEPH_OSD_FLAG_READ, @@ -1825,7 +1825,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *= from, loff_t pos, rmw =3D first || last; =20 doutc(cl, "ino %llx %lld~%llu adjusted %lld~%llu -- %srmw\n", - ci->i_vino.ino, pos, len, write_pos, write_len, + ceph_ino(inode), pos, len, write_pos, write_len, rmw ? "" : "no "); =20 /* @@ -1858,7 +1858,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *= from, loff_t pos, * depending on how the request was aligned. */ req =3D ceph_osdc_new_request(osdc, &ci->i_layout, - ci->i_vino, first ? first_pos : last_pos, + ceph_vino(inode), first ? first_pos : last_pos, &read_len, 0, (first && last) ? 2 : 1, CEPH_OSD_OP_SPARSE_READ, CEPH_OSD_FLAG_READ, NULL, ci->i_truncate_seq, @@ -2056,7 +2056,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *= from, loff_t pos, } =20 req =3D ceph_osdc_new_request(osdc, &ci->i_layout, - ci->i_vino, write_pos, &write_len, + ceph_vino(inode), write_pos, &write_len, rmw ? 1 : 0, rmw ? 2 : 1, CEPH_OSD_OP_WRITE, CEPH_OSD_FLAG_WRITE, @@ -2981,12 +2981,12 @@ static ssize_t ceph_do_objects_copy(struct ceph_ino= de_info *src_ci, u64 *src_off &dst_objoff, &dst_objlen); ceph_oid_init(&src_oid); ceph_oid_printf(&src_oid, "%llx.%08llx", - src_ci->i_vino.ino, src_objnum); + ceph_ino(&src_ci->netfs.inode), src_objnum); ceph_oid_init(&dst_oid); ceph_oid_printf(&dst_oid, "%llx.%08llx", - dst_ci->i_vino.ino, dst_objnum); + ceph_ino(&dst_ci->netfs.inode), dst_objnum); /* Do an object remote copy */ - req =3D ceph_alloc_copyfrom_request(osdc, src_ci->i_vino.snap, + req =3D ceph_alloc_copyfrom_request(osdc, ceph_snap(&src_ci->netfs.inode= ), &src_oid, &src_oloc, &dst_oid, &dst_oloc, dst_ci->i_truncate_seq, diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 30f8430b2825..e5fb39913a4b 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -1989,7 +1989,7 @@ static void remove_session_caps(struct ceph_mds_sessi= on *session) if (cap =3D=3D prev) break; prev =3D cap; - vino =3D cap->ci->i_vino; + vino =3D ceph_vino(&cap->ci->netfs.inode); spin_unlock(&session->s_cap_lock); =20 inode =3D ceph_find_inode(sb, vino); diff --git a/fs/ceph/quota.c b/fs/ceph/quota.c index 08641d578a0b..02d7a3062f2d 100644 --- a/fs/ceph/quota.c +++ b/fs/ceph/quota.c @@ -31,7 +31,7 @@ static inline bool ceph_has_realms_with_quotas(struct ino= de *inode) if (root && ceph_ino(root) =3D=3D CEPH_INO_ROOT) return false; /* MDS stray dirs have no quota realms */ - if (ceph_vino_is_reserved(ceph_inode(inode)->i_vino)) + if (ceph_vino_is_reserved(ceph_vino(inode))) return false; /* otherwise, we can't know for sure */ return true; diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c index 94964e0952bd..f064b5ad3bf4 100644 --- a/fs/ceph/snap.c +++ b/fs/ceph/snap.c @@ -985,7 +985,7 @@ void ceph_change_snap_realm(struct inode *inode, struct= ceph_snap_realm *realm) if (oldrealm) { spin_lock(&oldrealm->inodes_with_caps_lock); list_del_init(&ci->i_snap_realm_item); - if (oldrealm->ino =3D=3D ci->i_vino.ino) + if (oldrealm->ino =3D=3D ceph_ino(inode)) oldrealm->inode =3D NULL; spin_unlock(&oldrealm->inodes_with_caps_lock); ceph_put_snap_realm(mdsc, oldrealm); @@ -996,7 +996,7 @@ void ceph_change_snap_realm(struct inode *inode, struct= ceph_snap_realm *realm) if (realm) { spin_lock(&realm->inodes_with_caps_lock); list_add(&ci->i_snap_realm_item, &realm->inodes_with_caps); - if (realm->ino =3D=3D ci->i_vino.ino) + if (realm->ino =3D=3D ceph_ino(inode)) realm->inode =3D inode; spin_unlock(&realm->inodes_with_caps_lock); } diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 4d6cdbf02491..15fa433c9485 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -597,7 +597,7 @@ static inline ino_t ceph_vino_to_ino_t(const struct cep= h_vino vino) } =20 /* for printf-style formatting */ -#define ceph_vinop(i) ceph_inode(i)->i_vino.ino, ceph_inode(i)->i_vino.snap +#define ceph_vinop(i) ceph_ino(i), ceph_snap(i) =20 static inline u64 ceph_ino(const struct inode *inode) { @@ -642,9 +642,8 @@ static inline u64 ceph_present_inode(struct inode *inod= e) static inline int ceph_ino_compare(struct inode *inode, void *data) { struct ceph_vino *pvino =3D (struct ceph_vino *)data; - struct ceph_inode_info *ci =3D ceph_inode(inode); - return ci->i_vino.ino =3D=3D pvino->ino && - ci->i_vino.snap =3D=3D pvino->snap; + return ceph_ino(inode) =3D=3D pvino->ino && + ceph_snap(inode) =3D=3D pvino->snap; } =20 /* diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index d93dc7ae0add..c8fb35f4eaea 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -272,7 +272,7 @@ static bool ceph_vxattrcb_quota_exists(struct ceph_inod= e_info *ci) if ((ci->i_max_files || ci->i_max_bytes) && !ceph_in_snap(&ci->netfs.inode) && ci->i_snap_realm && - ci->i_snap_realm->ino =3D=3D ci->i_vino.ino) + ci->i_snap_realm->ino =3D=3D ceph_ino(&ci->netfs.inode)) ret =3D true; spin_unlock(&ci->i_ceph_lock); return ret; @@ -1328,7 +1328,7 @@ int __ceph_setxattr(struct inode *inode, const char *= name, spin_lock(&ci->i_ceph_lock); if ((ci->i_max_files || ci->i_max_bytes) && !(ci->i_snap_realm && - ci->i_snap_realm->ino =3D=3D ci->i_vino.ino)) + ci->i_snap_realm->ino =3D=3D ceph_ino(&ci->netfs.inode))) err =3D -EOPNOTSUPP; spin_unlock(&ci->i_ceph_lock); } --=20 2.47.3 From nobody Mon Sep 28 08:01:17 2026 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B06F38643B for ; Mon, 24 Aug 2026 18:42:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596941; cv=none; b=d17nC+SY+smm+TV+pOC6W2RwYApMFrYLL6r4AWO9PP+aHZZrOx6arogEArkTgmg39Jcfcbx9cXyExYJy+4xPyddXpgYWDSmRjqkbpZV5H75w0D348wDZRUgiPPaJuK4RoUUxRQ0Z+MXJSBGf+4keizNFazf+48MANp4pV4AkpzI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787596941; c=relaxed/simple; bh=G2IH3CzS7Zd1/D5eiAydefKLOkU1ZCpbZx58dYM+kZ4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A/O6iBtpDPOYrcfu7udxdsbnpUEx0e0vTL05UDYzPiJsFcisbIxgKx0HDx8nBXtTazAsQorsHrB3V2vEuav3pZm8hZeEh2cWK6OewTYStqpRZrzTfojdDlNtER1q7KVkZKyAHhuuxj7er4o7oKPPLV0IwO0wHAKKbJMlRL071yU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=Vx/+MofS; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="Vx/+MofS" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-6a18840e2abso6680592a12.0 for ; Mon, 24 Aug 2026 11:42:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787596937; x=1788201737; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=j8Pz0kJZhXOEmft7GuhfPd8qakMe4j7ZLaQkh5Hkdos=; b=Vx/+MofSNncPZ14bAbKrS1I7DWAn98v19p/ZE6oVSd/0A4s0P+9dhUVdDmcofKbx07 g3kTDWFaYY1jY7tYM5QD1wlY131yfdZNN4Z+LXIMQ9TNFYAeMyhaMJVKDdUnFqkYRW40 vVqEDHAQxLRQaS8XNNexydTiVUledLVNTPR707xc/jbLcmsLDI7VUIO4PdxwXxlv+TNT +ELt9Hh7TisOmizfr7cmMzxOnTurGwrwMLm8xWpHVeyF+kq4gU63mxHcIJlk7vW1LJpJ 8mrv844MUTfUGhazBPNMPfA7j/COb6tPI/W6chhu3TAULYn1Ntzfae8aQVnnsrnk5z7d v1hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787596937; x=1788201737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=j8Pz0kJZhXOEmft7GuhfPd8qakMe4j7ZLaQkh5Hkdos=; b=V2JkAGZULK97o8zbHT6LGR+aGpXq9SMKb2GfpmDzbbPN8ENvnX/YPKie+Ci4706tl4 43f74vYPBm7uJ+zB4cfUoUgQgF4ENPQaILfb98GEkucN1GkLPjrqsdpcJVwJ6Owz1dXH knb/CNarzQkSH0MGacdEZ5ozhV8JrScvJoAtIZIjJBxeNGSh4pPGZGl2sKCyg7w1NJrB AtkFp/kF49B/GLfTYOUpGtSxLT31P4x38Odus7FGn+QTFbdZGXU79EWvj+q9mwPtATlE xcwVtMfBs1tBhuDCNadjzA3y/OmCblPY/VaObELVVd1WsFGiAcpWFaG6HrohfAO7LY1n P6aw== X-Forwarded-Encrypted: i=1; AHgh+RpLUCLnyqL+hjGKW9mke7q7+EP2Vb7VO6J6pEpMm9jReEsftAk99ylwmAjFtHwm43qfsQ2gIi5xGR1SuFs=@vger.kernel.org X-Gm-Message-State: AFuF++lnTN/gHYrmyhMvk5cViviMTdXwL3E4sv9o9cbijvHroj7Syr71 AX2NQOmmUj1JK+GKt2iGTr8ZYvoN7NEnLm8fV2CoaU1PuR8F3ct+Zn3uLhnygosP0DI= X-Gm-Gg: AR+sD13ds3YPT6EGJFY3wWaGwQbdwNlrVZnzzGat5hUmcz7Fel/xi/ClGSaipI2Gn1C F4OPLdGq/0mjoqvazL2SVNXjT38svgzD8qrhTwW2cUiuJKBHb1JXpBZ2WzUy68f8wbGlyJBfQT8 YCHqbhAgFDjFBF7Q6a1nVbYll2cViSjd12qD2rgW2stAueyPja7PF6N/4pLc5mnFzAPuRFOj2xf N+xeeIydwTfYLkg11TIlL1cw1H/dfRmRmanm/h1Ol2EXsew3knOJVLzSk4InRGUnAHLYP8gdukq QXgO2eE68pvgz06OBdfaFq96qBNHEjmfPzmfMQov4LjsdeZcu8LbasbetWAER5zWRJfqQTxGSU9 FXTVaBguwx1hJlYJ49IgDNqCPR5dibjAOn+/r8c7yExPMUpqddeUqErVXZ0VoM9qgwET7W/ZhAZ 4DR8oPCJWbrmAsylaLa0hs9ITCddflRn34tpFuFOAIq6x4JwoGbL/LkfROBMLmXoMpZeMeXslok Tjoqps/3K6GksTtAxRGlGvUoVMY90ByFxO5itZbwEdUR9QVqi6KwbpA3UTXB3oo X-Received: by 2002:a17:907:5c9:b0:c12:83c9:d41 with SMTP id a640c23a62f3a-c2491e83838mr1925053166b.12.1787596937373; Mon, 24 Aug 2026 11:42:17 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f02b200023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f02:b200:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c249606a8fasm1533526066b.8.2026.08.24.11.42.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 11:42:17 -0700 (PDT) From: Max Kellermann To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com, ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v5 11/11] fs/ceph: remove redundant inode number from ceph_inode_info Date: Mon, 24 Aug 2026 20:41:59 +0200 Message-ID: <20260824184159.240821-12-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824184159.240821-1-max.kellermann@ionos.com> References: <20260824184159.240821-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On 64 bit systems, ceph_vino_to_ino_t() is a no-op, and inode.i_ino is the same as ceph_vino.ino. This reduces the size of `struct ceph_inode_info` by 8 bytes. Signed-off-by: Max Kellermann --- fs/ceph/cache.c | 4 +++- fs/ceph/inode.c | 9 +++++++++ fs/ceph/super.h | 23 +++++++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/fs/ceph/cache.c b/fs/ceph/cache.c index f678bab189d8..289615e58196 100644 --- a/fs/ceph/cache.c +++ b/fs/ceph/cache.c @@ -16,6 +16,7 @@ void ceph_fscache_register_inode_cookie(struct inode *ino= de) { struct ceph_inode_info *ci =3D ceph_inode(inode); struct ceph_fs_client *fsc =3D ceph_inode_to_fs_client(inode); + struct ceph_vino vino; =20 /* No caching for filesystem? */ if (!fsc->fscache) @@ -31,9 +32,10 @@ void ceph_fscache_register_inode_cookie(struct inode *in= ode) =20 WARN_ON_ONCE(ci->netfs.cache); =20 + vino =3D ceph_vino(inode); ci->netfs.cache =3D fscache_acquire_cookie(fsc->fscache, 0, - &ci->i_vino, sizeof(ci->i_vino), + &vino, sizeof(vino), &ci->i_version, sizeof(ci->i_version), i_size_read(inode)); if (ci->netfs.cache) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 62399361821a..acc600e0024c 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -44,11 +44,20 @@ static void ceph_inode_work(struct work_struct *work); */ static int ceph_set_ino_cb(struct inode *inode, void *data) { +#if BITS_PER_LONG >=3D 64 + const struct ceph_vino *vino =3D data; +#endif struct ceph_inode_info *ci =3D ceph_inode(inode); struct ceph_mds_client *mdsc =3D ceph_sb_to_mdsc(inode->i_sb); =20 +#if BITS_PER_LONG >=3D 64 + inode->i_ino =3D vino->ino; + ci->i_snap =3D vino->snap; +#else ci->i_vino =3D *(struct ceph_vino *)data; inode->i_ino =3D ceph_vino_to_ino_t(ci->i_vino); +#endif + inode_set_iversion_raw(inode, 0); percpu_counter_inc(&mdsc->metric.total_inodes); =20 diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 15fa433c9485..79917adccda2 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -378,7 +378,15 @@ struct ceph_inode_xattrs_info { */ struct ceph_inode_info { struct netfs_inode netfs; /* Netfslib context and vfs inode */ + +#if BITS_PER_LONG >=3D 64 + /* on 64 bit systems, the full Ceph inode number is stored in + * netfs.inode.i_ino + */ + u64 i_snap; +#else struct ceph_vino i_vino; /* ceph ino + snap */ +#endif =20 spinlock_t i_ceph_lock; =20 @@ -571,7 +579,14 @@ ceph_inode_to_client(const struct inode *inode) static inline struct ceph_vino ceph_vino(const struct inode *inode) { +#if BITS_PER_LONG >=3D 64 + return (struct ceph_vino){ + .ino =3D inode->i_ino, + .snap =3D ceph_inode(inode)->i_snap, + }; +#else return ceph_inode(inode)->i_vino; +#endif } =20 static inline u32 ceph_ino_to_ino32(u64 vino) @@ -601,12 +616,20 @@ static inline ino_t ceph_vino_to_ino_t(const struct c= eph_vino vino) =20 static inline u64 ceph_ino(const struct inode *inode) { +#if BITS_PER_LONG >=3D 64 + return inode->i_ino; +#else return ceph_inode(inode)->i_vino.ino; +#endif } =20 static inline u64 ceph_snap(const struct inode *inode) { +#if BITS_PER_LONG >=3D 64 + return ceph_inode(inode)->i_snap; +#else return ceph_inode(inode)->i_vino.snap; +#endif } =20 /** --=20 2.47.3