From nobody Tue Sep 29 20:46:56 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.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 69BF4484253 for ; Tue, 18 Aug 2026 18:11:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076712; cv=none; b=HLxAeNzSer04A97H8fUbscH0c1QfnYf0W/S67NsHKvmzjCGJHkUt6q0nveqlKyMmmfY3js9oNP4E8OqnDygTibhY9mOq1vl/tTXAPrmnoXJW3bYaE7az8IWXaEXflgWr3MocLceEG5rdm4gFpRREB05gLDeeaInzJXFNPye4Uto= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076712; c=relaxed/simple; bh=rECAuaCU+sisvFAxlz4wBECy3Fjxf/Y512+AyaTPnw8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QcN87gVVwYGgvqWQ2NzN36bijnVBJEoSR+sVIGkRc1uB/auj2yDtfwg5jofexqfWvxuiGZLqa5A1+x4YxN+4FeCDxTauLmiIVVTpOmhO5ZjRyOoF2VW9gGDVex1VAeSg2Fd7JoIA7YqLGw+Q/UPEZxBgTO7OHM8xmDDPpwW7H+0= 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=H7mOArhN; arc=none smtp.client-ip=209.85.128.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="H7mOArhN" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4980dc26022so1465265e9.1 for ; Tue, 18 Aug 2026 11:11:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076709; x=1787681509; 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=H7mOArhNyfL4eJjQXrXGT6rA2G3kwM20Mwg2jE5/AEJf4EJn8ZeAPNu9hyYbWj5x17 9r2662D1wNVeHbxDkZZFnTYBd/sK+23abniSjoViag6pE0e+pCg5Nr5zIxTtzt/N+GUN CCsFuxSdtHaD5QfD6nZjz+tswFctfa5SqdPnKnMHqWjaRv5tseHi32nSdOxJyoC3tUwg 8ziYp0iJSXmvdr8M2Q8Sj7B7KzqMB8FQ/IA7f8E7UU0gdObwiXILp4o9RlrCMr0j29if IIKQbdeWJfKx6J1OyIvOmY96WxoIO9s0wiw1FSlXRJTdxulZqGpWsJIqAKSt5BptdVu0 r1Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076709; x=1787681509; 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=ePTVpPkezLDdmZ+DhySRWAgLDSciiNkpzcluUEahGiGQ7FW3F8VaPXlB9gvTuKvcaR PEGZSBwNCd2r7mIvt53GUolNXLQjjEgb6LaKtUXPA3vX8m89NcUsf23pUnom4bU/xtqn 3NqQRfRmNmEdtYdg5noe2ZBypIBqzQquoLxRV76TpAXFQCZXYddf1eCZI3f2mitJGE67 29JuKcVLTWLfG4/njMY2echAPr4ePu8dEMaOLYQSyUPXLZoX58paUKQ3lGqYwN4cExlP 1m6ME3D2X30yvNL0a9F/29hSvD4N4k/48iwI7nirKw8hPKrp/mXOg3AwctCIoZp7VkWb 5XjQ== X-Forwarded-Encrypted: i=1; AHgh+RqiN8D1QBKHz40i2j/ZZwwgp+/i7LEFcW+sfOFMj5yqDZA6+OzAZroefneRwO48TlZzrjJgbHO3xCRYvFk=@vger.kernel.org X-Gm-Message-State: AOJu0YxVOZkRKs0zA0g0X7tz2K8KEdcmiQGZahaP3BWqZvtBA7poikLM Aq4lP32hok58C6SpsKkKPAfAydUyJmySDs0ui2MWhL4p0tH7LBgQ0N1sywwuDDcDt9o= X-Gm-Gg: AR+sD11d1kM9YtHttRyf8gsTob2tuaEIa240saJvmSCL1p2Dz9ama0ICYNPZMthtrJf e5K4yEpGhknL5iJw4JPUVsnu5FApiagAPoYdI7lqLAJCaEthr9iAdfUOUHUqNY8+fQ4s3oNt3rP MNMba29Q/GiWeZ+6q0Orj4RQWLLiNj/IOH9gfPsjyY2ikAaobIFiZpXog+G447RR5j+wanZ/lY6 2/N/kYNRJb5o3s2n1m2zkXOx0NbCLOi9qsQRiR3I/618QyWPDlfeo5BeEpWe5YHaKTZPkfC/+Ke 9k8pPck+aVDW/mnMA4sS/jNis4PdtPgJv5aSa+BoBZvFuXuwrSbpcXOm0Ryv2GKR6QXBZkQXx+Z jFJRCMy+dVC5RDVof1L2J66paIw883gTmyutXitO4EnsOotkrQwDks1amrOIpFY84VYHfO6yTkL tSD/7IfXTpzkmp/q1GTp6ilRrOsbQuDsuF444R19pfmLMxuRSs7NynSC4IMQz9315toEgcrWMUx nv8b+5Tvo3lAvzDgazKt6dcfKid1fMSHOsVjVoy2kgOZbueBYEoTgrQgeP8/8Oi X-Received: by 2002:a05:600c:8209:b0:490:e5c1:b8bf with SMTP id 5b1f17b1804b1-4998796f497mr622649295e9.13.1787076708718; Tue, 18 Aug 2026 11:11:48 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:48 -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 v4 01/12] fs/ceph/super: remove unused field `i_cap_migration_resv` Date: Tue, 18 Aug 2026 20:11:33 +0200 Message-ID: <20260818181144.3541770-2-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 Tue Sep 29 20:46:56 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 569A248425A for ; Tue, 18 Aug 2026 18:11:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076713; cv=none; b=pYT+67Sf6rFjHam7fClONyxJG4qL0NN6P8FMCw++LL/vk+71pDk0T2x7G1VQfYQUYv2Gw9g+fvhCSbrGUBdZhz/+c6nV9kXWYNiP5s87bJy4EzjpB1IHtMbYa4gqvGBY5YcpnyqGYOa+ByB1h29OlNFSkqoc/9qZgkpAIaDpHYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076713; c=relaxed/simple; bh=9XEOCpJ92dHTmRtWjKTA/Gb5ilHulLiXFfGINfxa9k4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=keC1AQWSsRMgOuyWXYD8dSWW4jOWBvbZLB1TDomnbkRqzV9jbml+jlBeEp3loxM1r1OWBwzxZKbQ095kfxf+UXN2Vsx6NcRt1BAf10WnVDdPp8uqg6eHcsRXMsATsNGqbsE77G6mvGGtRuFD/UmU7WIb24p24a91YKbSKUBK0LU= 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=ICO1IEAE; arc=none smtp.client-ip=209.85.221.49 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="ICO1IEAE" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-476a130c138so101992f8f.0 for ; Tue, 18 Aug 2026 11:11:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076709; x=1787681509; 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=ICO1IEAEY/jlf28oNsU1sIK/4Ko5p/QmI9qi9kedDCySsbrKB1AKc/eNiug0wkye4t Pzs7l3kabl3rIL2Gz6j/6S5tWL14s85qFPJtWNHvkTNlsjZ3wZCUbYWtd+uh0Rf48X6g 9AHraOZsjAi0smQz6k0InEhSEknyQWUYJ4KFJFFDeMbGICTRFK15pFPOP5XRaEpfXcEu ZhoROoJlbQkMKpK6YLmoUsGGQ/4UYqjM8vFvVKvvwcJoobSOQHL3gfZwdbuDGN0GCEqY CSnXBXkEkjoST+F6uJmcfWbx03Au94eF9QVPVVu5dY7tfvvSdxJTkY0qILVeabY7gbVD 6YUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076709; x=1787681509; 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=nFzrxiL43dKQUtt+EZXprzsgOFeNfWw7Fcaw1X57ZC6AFGwkZsftRxoajpbNf/jfg0 mj/BFVoCmhmztlNFfVLMPvFreqCp+avkWdC3I2MTV3NzBc/ibJJ1uwnVL87gHJSo50dI ABdwJwGcxOkUAVvg0+vGtiGQCfH7GlgMDyLUxiF3tIaf7z6WZBa7mf40XMaA1RxQDc1d F07JZnpGfscDcHndT/+oZioLDCxxWG113buId5bLujDfUfhzgHozWzSIpNs8akhsLTvF yIHVGcFSasDiDA0JzettjqkztBOrwhUnbgd7MTzhR7T3hQUIaqXChw/tjAw/gln8mz3e QYeQ== X-Forwarded-Encrypted: i=1; AHgh+Rqp+71oVnz8egnkgfp3kAT2CGwWB7VWHSjK2wxEP3npmR9ltdSKm1u8v0HMXVUjfpk2CICkKKhlvUcDwPk=@vger.kernel.org X-Gm-Message-State: AOJu0YwvEQutSqp6Oq2lc8MCe8eX5eSUc/F132viYJ6R1gxmyFi4VU95 UQrxpxoseQdBcw2yrbRbSyewtL0kEmpv3seM3vNXHYuO985Bt6Szejs2NSprdfp3z30= X-Gm-Gg: AR+sD10ETXe5LT+ZTfGRQiYk6+BxIXT9s90T5tgCA0N4Ru0y/NLMVZWANPVtThtbBVl HwfkCLGHHs2V7GlWNjTBhlKZBojUOdo1LH6LXIQxCCnM6Kq8VbWrc+Ly/HfTRw/M+2BUFt68BQb qESpmHz89uVvHKjkql3xzcep7uh/L6oj0LU7a4YXH35FpqxkfmE3sn1AHamWCSxje7/kt5NClAS UH7mrIjHoSFuuSG7mWkQT2d2CwCmFf/plci4Wu/neiziw2L9DiFLcjy1E2RwlhiNeNzLHp/EG4H rAWuT2vV9CHJI2p/J5ZQ7pFi9dkuuT3bvztzxbrUrWNZjF7WEKzNObi4U1xBfEdhD4glI1wds0E PoMArcwyMVswdD3oEr1LtWJ3r6HMRW1bkQO1OYBurIohhX0XMBKLrbD9jbrwxK4Xa9I0BAN844T p8f1j+qCSTJHRXdoBGDqjBMrbtm9Yp80pDIU1FNA+MENzpVV+lfG5lUdoFVpZqf+S6InhM75OZ9 /niEqTQG9T02quAwv/lVeHNumabnbcatzcVmxcflATJNCmU3rrMxBLn0OYETklFs1i+RhRlQuE= X-Received: by 2002:a05:6000:601:b0:47f:7c50:2222 with SMTP id ffacd0b85a97d-4816077740emr56609702f8f.24.1787076709584; Tue, 18 Aug 2026 11:11:49 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:49 -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 v4 02/12] fs/ceph/super: make field `i_truncate_pagecache_size` optional Date: Tue, 18 Aug 2026 20:11:34 +0200 Message-ID: <20260818181144.3541770-3-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 Tue Sep 29 20:46:56 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.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 39C884854E8 for ; Tue, 18 Aug 2026 18:11:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076714; cv=none; b=Nrlw9zOAnr8I/5Y3TTbpfxA6UX6px4ZKyjCGtXiQif6X+rbsQiOWRt9nW52Xe3bEuKXwR5RNetYiLSVh7WSDzYI4UwnD3BYY+zviuJM6YbGnOvM27rGB8G0OjftXpYxe5o2IjTgegnsnA5ajCInst8zEuWYRJqfWRnyLj9v8aLo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076714; c=relaxed/simple; bh=spohi4066YMjfHPtqROzqn34a27EiH9ElD9O/6aLbLs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E9h7RVKzVzpYElZARtjWsQD4pfZIz9LDdW7QHPq7EfK8ROIP5g/pFnYddIX2F1v9IRh8akdA7mrOi5+juF7ZcsiJ8EZ93wWUBdezF2HQnyoTw07Ri9CO9RS1XpfJy/sjQt77trk7RyoPypIemQ8aDgg+sONgtiCswOlo9N6Xy58= 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=jMbaBgi7; arc=none smtp.client-ip=209.85.221.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="jMbaBgi7" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-47f59f25ec4so54528f8f.2 for ; Tue, 18 Aug 2026 11:11:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076710; x=1787681510; 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=Ux0lu9FQT0gRJf+GGs5dOF6JEoNBqOqUh6OH9cCfwog=; b=jMbaBgi7YxMSlwdHtiAG/37tnBXoOD9zp1RmjdLl949/tyqlzVnv/ixtVZnc+w5LQx mGf11HsUtg9b9TfQpzPWTWJ/3EEkRzCd4pHmZRcTgmS1ciSbuUSTEHSEMb06kTKXv1cr y3g24mUU8mLuMpbSrbHJuzgktZJCPNifzTdEwch0tEternZ2W32g/hPva7twJsXo8vmE ODKkPS8+BP8DpviFa6Et89+/KFKX8c7fif7nl2CrahJDpE23v7F15TCY0YjiWkQHdINh OprdsxLU3YYEMcX45DOGWb/vVvDfBzGVRUJtFRTb7D2Xj1mt+lbpC3z6VHjYVrG0JQcx BE7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076710; x=1787681510; 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=Ux0lu9FQT0gRJf+GGs5dOF6JEoNBqOqUh6OH9cCfwog=; b=gDCiam/8D1J3NtWyu2VPhCZfYiQjMYqsMb4c5ywzn/1UMZPNtrmuAuRt0XhAO8/FJN kKcfDa/RumP0UjDtA+ItE1uJNAsTsAFDrH1GhGbVwiTO/ho8Z8+GXpYd6/nTxRMQ7Y5K lAhpPuOdc3GaPVAAlwgOv4/q6d4edYEmfspRKSYVHFbYNataqAxC04VZkHrWpZWvoR7f ieyQb6tLKEj2A4xcspoXbKrkFy5pCNgLvHuqwfD5QNYeOKMSecyzoupGoWg1rDeqPbbD bbFTTlj9buY1qxKL94Cuqk6zlZe2BcQPACngdDlHLjEW+KQOKLutEQM7WqgYaoD4T6Hg 7rVA== X-Forwarded-Encrypted: i=1; AHgh+Rqus7rOUmO4mJhppPDvfuJwdWLGw2mIYjpmTtHyDhsZdR16H216difFbTzucRHzyIFE+jShIFQsmEbxmdo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzp3Y5BqVYzfTCVoJrd4Hp5y0pJAbjl3x50T/jhJG/ZHt55VC5o 0uiOOMjUxP1ALbXkZaU4lPRIrpw2cXNHsQNFXb15OFJLJaMo5kk16rm/eBXAwqnRV28= X-Gm-Gg: AR+sD12kCKLUNKVGNr+dlJyjtmA+PUcQCdUBWRJT9AYLfOUlhBjaxkm5suVsJwqVqq8 fTJb3arvItSAof4UubKBDam/R3lU+/oRgi1yihA4epNkDrNYGEVgYOmxI1Tu6JyPtFHASnwRzLo 1oKRa8HTis18il96i8D4eP8t1qnTd6gfGIWAtjh92XNXuVn3Cd78jYJX6q9uYA5uFI5bXwKGvk+ LCCXecLWQn7zOoXtwP1LNk1imrGMXI7shli28wjG+vVYUDRWiMh6/6/y4hHiUCH/JfD+S0LUKsp CiXdqYpvDBuC5d7Zrq6udN1OTaA3BEcv8UyLrnv90cMUXgv8MbBJiGZClFmRrkrZg99fWuNmoaO OU090OGhgA8weUiJeHUaj8yGHAR/0+PGEtL+0U1OursYEdRxMGsIZfOT4JdYpQdVSkKAeM1yDqU ban1kNzN+9VQxW7ob81WkhjOhH6R4+LhFT0LDmnmIhWLkR78B2kLcAvB9SqOw/ZhWxUSCV09IBQ X+59C0sMyMUacKH4cRElwj9VeT1YegNR3bJccDbl4D3IReWt7+t47oBjSwQrJtduaTbXCip0So= X-Received: by 2002:a05:6000:2406:b0:47f:7129:e30 with SMTP id ffacd0b85a97d-48160710333mr58124995f8f.11.1787076710436; Tue, 18 Aug 2026 11:11:50 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:50 -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 v4 03/12] include/ceph/ceph_fs.h: convert `pool_id` to u32 Date: Tue, 18 Aug 2026 20:11:35 +0200 Message-ID: <20260818181144.3541770-4-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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" While the Ceph OSD protocol transmits OSD pool ids as 64 bit integers, the MDS protocol is limited to 32 bits. This is a protocol limitation we cannot fix, but it gives us the chance to reduce the struct sizes by only using the integer size we really need. There is one caveat: previously, -1 was used to indicate "invalid pool id". This patch changes this magic value to 0 (i.e. removes the special-case code from ceph_file_layout_{from,to}_legacy()). This is fine because on the wire, this magic value is 0, too. This reduces the size of `struct ceph_inode_info` by 16 bytes (because it contains `struct ceph_file_layout` twice, and that struct shrinks by 8 bytes; the small pool_id now fits in the existing padding hole). Signed-off-by: Max Kellermann --- fs/ceph/addr.c | 16 ++++++++-------- fs/ceph/caps.c | 2 +- fs/ceph/inode.c | 2 +- fs/ceph/mds_client.h | 2 +- fs/ceph/util.c | 8 +------- fs/ceph/xattr.c | 10 +++++----- include/linux/ceph/ceph_fs.h | 2 +- 7 files changed, 18 insertions(+), 24 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index ecf33b66610c..77f1ff658663 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2390,7 +2390,7 @@ enum { }; =20 static int __ceph_pool_perm_get(struct ceph_inode_info *ci, - s64 pool, struct ceph_string *pool_ns) + u32 pool, struct ceph_string *pool_ns) { struct ceph_fs_client *fsc =3D ceph_inode_to_fs_client(&ci->netfs.inode); struct ceph_mds_client *mdsc =3D fsc->mdsc; @@ -2429,10 +2429,10 @@ static int __ceph_pool_perm_get(struct ceph_inode_i= nfo *ci, goto out; =20 if (pool_ns) - doutc(cl, "pool %lld ns %.*s no perm cached\n", pool, + doutc(cl, "pool %u ns %.*s no perm cached\n", pool, (int)pool_ns->len, pool_ns->str); else - doutc(cl, "pool %lld no perm cached\n", pool); + doutc(cl, "pool %u no perm cached\n", pool); =20 down_write(&mdsc->pool_perm_rwsem); p =3D &mdsc->pool_perm_tree.rb_node; @@ -2557,10 +2557,10 @@ static int __ceph_pool_perm_get(struct ceph_inode_i= nfo *ci, if (!err) err =3D have; if (pool_ns) - doutc(cl, "pool %lld ns %.*s result =3D %d\n", pool, + doutc(cl, "pool %u ns %.*s result =3D %d\n", pool, (int)pool_ns->len, pool_ns->str, err); else - doutc(cl, "pool %lld result =3D %d\n", pool, err); + doutc(cl, "pool %u result =3D %d\n", pool, err); return err; } =20 @@ -2569,7 +2569,7 @@ int ceph_pool_perm_check(struct inode *inode, int nee= d) struct ceph_client *cl =3D ceph_inode_to_client(inode); struct ceph_inode_info *ci =3D ceph_inode(inode); struct ceph_string *pool_ns; - s64 pool; + u32 pool; int ret; unsigned long flags; =20 @@ -2597,11 +2597,11 @@ int ceph_pool_perm_check(struct inode *inode, int n= eed) check: if (flags & CEPH_I_POOL_PERM) { if ((need & CEPH_CAP_FILE_RD) && !(flags & CEPH_I_POOL_RD)) { - doutc(cl, "pool %lld no read perm\n", pool); + doutc(cl, "pool %u no read perm\n", pool); return -EPERM; } if ((need & CEPH_CAP_FILE_WR) && !(flags & CEPH_I_POOL_WR)) { - doutc(cl, "pool %lld no write perm\n", pool); + doutc(cl, "pool %u no write perm\n", pool); return -EPERM; } return 0; diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index d7283fb54cec..1b904089b56f 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -3654,7 +3654,7 @@ static void handle_cap_grant(struct inode *inode, =20 if (newcaps & (CEPH_CAP_ANY_FILE_RD | CEPH_CAP_ANY_FILE_WR)) { /* file layout may have changed */ - s64 old_pool =3D ci->i_layout.pool_id; + u32 old_pool =3D ci->i_layout.pool_id; struct ceph_string *old_ns; =20 ceph_file_layout_from_legacy(&ci->i_layout, &grant->layout); diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index bdb82f123033..cd1e09c32eba 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -1176,7 +1176,7 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, if (new_version || (new_issued & (CEPH_CAP_ANY_FILE_RD | CEPH_CAP_ANY_FILE_WR))) { u64 size =3D le64_to_cpu(info->size); - s64 old_pool =3D ci->i_layout.pool_id; + u32 old_pool =3D ci->i_layout.pool_id; struct ceph_string *old_ns; =20 ceph_file_layout_from_legacy(&ci->i_layout, &info->layout); diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index 0ece4c9e3529..5fcbc03806f9 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -441,7 +441,7 @@ struct ceph_mds_request { struct ceph_pool_perm { struct rb_node node; int perm; - s64 pool; + u32 pool; size_t pool_ns_len; char pool_ns[]; }; diff --git a/fs/ceph/util.c b/fs/ceph/util.c index 2c34875675bf..5bb40af08b1c 100644 --- a/fs/ceph/util.c +++ b/fs/ceph/util.c @@ -35,9 +35,6 @@ void ceph_file_layout_from_legacy(struct ceph_file_layout= *fl, fl->stripe_count =3D le32_to_cpu(legacy->fl_stripe_count); fl->object_size =3D le32_to_cpu(legacy->fl_object_size); fl->pool_id =3D le32_to_cpu(legacy->fl_pg_pool); - if (fl->pool_id =3D=3D 0 && fl->stripe_unit =3D=3D 0 && - fl->stripe_count =3D=3D 0 && fl->object_size =3D=3D 0) - fl->pool_id =3D -1; } =20 void ceph_file_layout_to_legacy(struct ceph_file_layout *fl, @@ -46,10 +43,7 @@ void ceph_file_layout_to_legacy(struct ceph_file_layout = *fl, legacy->fl_stripe_unit =3D cpu_to_le32(fl->stripe_unit); legacy->fl_stripe_count =3D cpu_to_le32(fl->stripe_count); legacy->fl_object_size =3D cpu_to_le32(fl->object_size); - if (fl->pool_id >=3D 0) - legacy->fl_pg_pool =3D cpu_to_le32(fl->pool_id); - else - legacy->fl_pg_pool =3D 0; + legacy->fl_pg_pool =3D cpu_to_le32(fl->pool_id); } =20 int ceph_flags_to_mode(int flags) diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index 860fc8e1867d..124dde705e79 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -50,7 +50,7 @@ static bool ceph_vxattrcb_layout_exists(struct ceph_inode= _info *ci) { struct ceph_file_layout *fl =3D &ci->i_layout; return (fl->stripe_unit > 0 || fl->stripe_count > 0 || - fl->object_size > 0 || fl->pool_id >=3D 0 || + fl->object_size > 0 || fl->pool_id > 0 || rcu_dereference_raw(fl->pool_ns) !=3D NULL); } =20 @@ -61,7 +61,7 @@ static ssize_t ceph_vxattrcb_layout(struct ceph_inode_inf= o *ci, char *val, struct ceph_client *cl =3D fsc->client; struct ceph_osd_client *osdc =3D &fsc->client->osdc; struct ceph_string *pool_ns; - s64 pool =3D ci->i_layout.pool_id; + u32 pool =3D ci->i_layout.pool_id; const char *pool_name; const char *ns_field =3D " pool_namespace=3D"; char buf[128]; @@ -81,7 +81,7 @@ static ssize_t ceph_vxattrcb_layout(struct ceph_inode_inf= o *ci, char *val, total_len =3D len + strlen(pool_name); } else { len =3D snprintf(buf, sizeof(buf), - "stripe_unit=3D%u stripe_count=3D%u object_size=3D%u pool=3D%lld", + "stripe_unit=3D%u stripe_count=3D%u object_size=3D%u pool=3D%u", ci->i_layout.stripe_unit, ci->i_layout.stripe_count, ci->i_layout.object_size, pool); total_len =3D len; @@ -164,7 +164,7 @@ static ssize_t ceph_vxattrcb_layout_pool(struct ceph_in= ode_info *ci, ssize_t ret; struct ceph_fs_client *fsc =3D ceph_sb_to_fs_client(ci->netfs.inode.i_sb); struct ceph_osd_client *osdc =3D &fsc->client->osdc; - s64 pool =3D ci->i_layout.pool_id; + u32 pool =3D ci->i_layout.pool_id; const char *pool_name; =20 down_read(&osdc->lock); @@ -174,7 +174,7 @@ static ssize_t ceph_vxattrcb_layout_pool(struct ceph_in= ode_info *ci, if (ret <=3D size) memcpy(val, pool_name, ret); } else { - ret =3D ceph_fmt_xattr(val, size, "%lld", pool); + ret =3D ceph_fmt_xattr(val, size, "%u", pool); } up_read(&osdc->lock); return ret; diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index 69ac3e55a3fe..7faa18493a07 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h @@ -69,7 +69,7 @@ struct ceph_file_layout { u32 stripe_unit; /* stripe unit, in bytes */ u32 stripe_count; /* over this many objects */ u32 object_size; /* until objects are this big */ - s64 pool_id; /* rados pool id */ + u32 pool_id; /* rados pool id */ struct ceph_string __rcu *pool_ns; /* rados pool namespace */ }; =20 --=20 2.47.3 From nobody Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 E091548551E for ; Tue, 18 Aug 2026 18:11:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076715; cv=none; b=kNOyDsZY0mrjBnNkcAumbFBAS2Vr6QjrJV5wvD8i612NVfLLDHDl/5oBRSy2mxbk9BZhf2gUUzr5ZumboOp3Smw2i9JJPD4HsNxzmRVfqlLe2vwgNql8H/FOrggk6NdiHd+ZMEronQkgmobOIcJvkkRjrrM1OCCOJ/IGARVu9/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076715; c=relaxed/simple; bh=mh3Wvp3erJw6hgEc0BaFtMvIaRlm0xL2iUvFtRAjH5M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ok66GHj3hQGdTcxIKvA0W2hRrRgXBVbPL5GYu+JWOKO96BvR1AjEmM+2l5WVKMPFqmKLUQDqPgXyGsE4KYFFqpxIP9phsTZKyNzTHh1O6Dho5AuRMuAJ9R8kb4TwOO8Hr0fqHkISrQuxg959K5G4eo6WwDdH/3Y5OYY4bOIScKo= 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=YpQBNPWw; arc=none smtp.client-ip=209.85.221.48 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="YpQBNPWw" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-47fe2d179e2so57450f8f.1 for ; Tue, 18 Aug 2026 11:11:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076711; x=1787681511; 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=YpQBNPWw5m7gy39WRDx0qYLunHQIcmHP2i0fguEJTkYULUYNbKv4mEQLvwEdhEidvX ELDdTfDVhO8EiudxcIO0GvIU9wF2BQVDbaOv5I4jsSxcyREMEuMILIQO0ijqyMOJuFAa LeTPm6dZs/qar2waDy9bmTNydWnp6bfOxXH4a8Ryy7BwBLk7yZ+3TQwg/GP2dDQHlAQD QzOtzjbr1Y1ZT2vJWPmDZqJ9abV0gCcJeNIRkf/aT8HvWGb9Vk/Ir1aodRauPOFdVwPx 66jJhTrL8g+zXwUKG869H+y9NFBR1VWWz8hG5jXBVxFmfXqLBShqa5xdz/Tz1r8RAz2R rOVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076711; x=1787681511; 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=oh17PnPq3jH8jYAkqw3UfcgYusZiEURYooH7EMwIurKyAxHOXRUIfXFG6m3sg75x2X y6Dan2wSC1qN1rXIWrOjHROqN7kQz9WpcLW7e8WDlr173f9gDbIteOtN+bW8tqVx02HL Hajw0xfRL6w5991NEAGazfvEGlofRIjyOqh/YEXrzJWTHTNRCiL/Ok5e+iqZCfwSFjkc XPBFBS3Pw3FQRurChIBzqCjHjUB5w6U1NGrCZosvxZrKPPmPsuWwz3sJ/lTX2Cf222zq q3I0tM7KhB4+cNch6AbhoDUHTlZCweFQJenRli+lMNCLa1JwpIjQ/HfhP3SDWiOMpSjV pXXw== X-Forwarded-Encrypted: i=1; AHgh+Rro9jniQOysmfEJwyLcIwTSx3Q1cw6eEevEwyuvuHkUmj/ek6VwOAtv8ihYARxLNufts5DftIza6O1A6dA=@vger.kernel.org X-Gm-Message-State: AOJu0YxtWW89G1ILVxbYrNRuUs9hyRNoNKgrNHsRO1kgVu5UWSphVSnn ksNvkt+FtP4+mV3KBydul/ihHZNhGYgdB8ePPdAvK0KSZNSmQLEnvY0XvJ+xhRoGNvs= X-Gm-Gg: AR+sD12C2df/v0K5UCzbqVWQSx2Eh8C36ADj5QCzjkW7ioNXZQangSowgiHkn5IyhQO iHE7hMUY6gRWrCpi2NM+c4ZuLFar+38B6UMPqpr7lvEMqdG5QgyPrbNUdsMqQtxAwyve54x8g/3 ZeIPdlken2lQau+VpbwNyD1Jgg5YGKW+28yTbFe/Cdt5KKX/oDbWDUZCTM4/59cCgPuFB0bMxkV 5M9AJ/GBJlX1O9H1lSl+YHJP+0/xh0Fy8hNFk1Kba2uJyH3n6T8NCCUbWdDcdYAqM+lHe8eMMoR sCjRx1ZLBlFFss0cCz9meMO1kxD+jJzcGGrEtLPhss/m9R6BnweVIDIpAeTG9i5EE2HrTcAggP2 dW748/Kkv2ABiXEj+Wb+TWCC2LqzWXJsd0yUTHst2NlWpf23dPZ5lrgYjJ6C1UsqUOtwMGmeM7X MM0bsM+lEmxGqZ0h3q4m2P7t4xCBSdVxJvcKNXE4oq3KU9EqbDa6cPpT4z7V6KI0JHDqvV4X5Rq FfphmuK4K0coVnNNXQlEk2GkpXXDnPyZ5ykhCIXJpK5XFkJaZSeQWHTOSzVyEUo X-Received: by 2002:a05:6000:430a:b0:474:530:9d with SMTP id ffacd0b85a97d-4816072d2d1mr56968780f8f.13.1787076711229; Tue, 18 Aug 2026 11:11:51 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:50 -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 v4 04/12] fs/ceph/super.h: convert ceph_inode_xattr fields to `bool` Date: Tue, 18 Aug 2026 20:11:36 +0200 Message-ID: <20260818181144.3541770-5-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 9D4044854EE for ; Tue, 18 Aug 2026 18:11:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076720; cv=none; b=FrLp/0gy0KpagVMCzDS+SvsD9pEpYnMvgo2mz5+nJjluIuFbZH9RPMSWvGhVwZKnGgj2Hmdhfx22U1bQr3dsP+lOTWPINl3JyW4p46EnSnIGOLn8mYGbdw72vm0LmxzBmE7ciOaQvtSBCOGQnraB2UKVqfTyB/v2OWr7BTzJgcw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076720; c=relaxed/simple; bh=PNsEuMwh6x9U7wnGeQD0+2aN3K+WtwxzV9yJyPU6bqU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LUZk4TZtI/O36o0LWR6lmCCLO4cgTyfyoVBaaZ/xRyDMAajHnsxgmxd5e4wuCc8M8T/zKjdZYGLw0bJ/I2P16H+qXbnUzlumOPUCqsMt0WvoYNNk7fQ51uoiURv5C7BikEA2qHUAwS+S+HNfQRsjcIj/wZ8Guect3xc4MRAeUVo= 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=Yw+OHGsF; arc=none smtp.client-ip=209.85.221.48 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="Yw+OHGsF" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-47fde295992so35835f8f.0 for ; Tue, 18 Aug 2026 11:11:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076712; x=1787681512; 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=7Pp8eRbtdJC1ybFAuB0ihbgIaBXGaMzvJfeMNRLq26k=; b=Yw+OHGsFS4MvYl1/p1u3omxg+RbvGNb1w5baHbaX/BrXNTh+AAx3D4JAOD/aQEzuBN mueKn/CvOXg8h7HWi9xK7NwQRgIyRNtAmJM98HVeZa+3bW2LCqJjpDQE77QAiPf7Qznd DYWFBq/D313yIEDVKAdH9ZaM+tXg6qX4JRfe7Z8udrGCZdQ0qiYcHB7Z50rei5Hke/cl KrazgXfa2qwaw7DXAUD4ipXe45dvnfLyt1kmXwJ4NZvvLROke1bFbB+oXWGneaNKDgAi daTqu1NQNDzN0KjK+WWV3m8kKrN9gm9h8eHvzoupZtMNC7TcjpleRlh8yMnNy31f4ZQy lDVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076712; x=1787681512; 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=7Pp8eRbtdJC1ybFAuB0ihbgIaBXGaMzvJfeMNRLq26k=; b=CmCSRJ2lItmM6iAHkIdlqJWEoAylyCjXVPNixa/5NDUpJj5IzrX8n5tF5MQM5akW4+ AXDQk85CbvqaIThnUjM75dwzlXesKlgcw7HAwZrFFf/d+Fv7wtGIAOI8AQk11Ne8XfUy lwlkQs8ytybokp99/8S2e8yivRwTLTilEOo3OofHNfq719+EuRomgL92oAetT1csCOU8 hYjd+b5wymbj7qA+DVqVNue+sv8a6HCIPVOFbjJFTrPhk1ed8Rpgbzac0P0Y0dfsMW4U pdnafH2nz/wmbk7oFtxwIaDB5n5XdSCCptBS9aIjgKAm+Xm7IolQ68DcfHVcDD1W8spG iXdA== X-Forwarded-Encrypted: i=1; AHgh+RqJdQeEFpDaIzwRuW/fkx6N0p1FCXOPzIwTod+kNZGol9cLP1AMqv0wSu2UYVOAmXbRT4Of5Hl6vKSBRGY=@vger.kernel.org X-Gm-Message-State: AOJu0YxEtwm5N+kr2u3QczYrD1kzIenMmVSVRlwivU9YdpY1JN/4m6hZ E8iynZeH50kwa2IAO8dhDbFs6E3ffxhmd6x3wDY1oPW4H59H4BNg0i8Sh2pSvNhKTWc= X-Gm-Gg: AR+sD13/GKFV4DGqs0VuOwyNb/D5ZwEwPL39GSyBAJraneVXJfcHFmQTqhSk3vqn1Nf SwZzxHSm68zsRw7s7dzWKIA723bRXBOHBnYdgod2smaufIIpdHZKShWGwogeaT0PHKUMwQxG+NP 9TeTAFNHw4nEOKSKiEbsOa/XBdxo59f6o4lhXNZtqmgt+6rb3jCIsqUfq3ghNrVoV2JHAEk4t0c 2GmVVlW0TSM7ZRV58W+vXWzTux4qiLQHDmn36EyZF1V+AAYUrZ2x1LcKeEFSHcWBqEQZIl8U8Op FIIMkDkuc5XSopUGqgNoyUKMQ1CFGfpfboI8fo8fT9EdWnEcjVDNk+UmlQ/nWzNZbEUAT7Q6MeM C6IDfxlRUhtJL6VogZZOlYyJZAUG7j2ARFmXtCe/kc/SUkK/dq1oncB75CQ7kkpv0Z13ynCMK+h miu6nT54flv1br/c+fTRhErPoRTGo/7YfMi8jtCe76EEqfrd+hwPmeJyQtjupa+x8hspVzsMCo/ Tq+Mh9PJ5/hUvLm2S2p4Nm4763JFDD+EjKLh7RCTWVGz5x0eAWS864pwq+TZeZq X-Received: by 2002:a05:6000:3ce:b0:480:b3:aaf4 with SMTP id ffacd0b85a97d-482b06cc8d9mr343481f8f.4.1787076711965; Tue, 18 Aug 2026 11:11:51 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:51 -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 v4 05/12] fs/ceph/super.h: convert ceph_cap_snap.writing fields to `bool` Date: Tue, 18 Aug 2026 20:11:37 +0200 Message-ID: <20260818181144.3541770-6-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 1b904089b56f..51ed5aee193f 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 Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 728FB485CE9 for ; Tue, 18 Aug 2026 18:11:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076720; cv=none; b=YiCxUQElJ0WowgzdOX3U/ildE2hq9Q7dqB/bhk/g0p7OTAxXOC+OJ7BIsSUKnN94QF8bhUmFmsg1kHUZ2+Zzlbk9YYT1s/TxaW2IAGkxCBf/JQeyxmuSEpvELRPQxPdf8LKCltJ5sVglN/83f26aA/b4w2Ifu3K53tJRknIV7o4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076720; c=relaxed/simple; bh=M75HovAwVxE+r0W1d1j99uEBsZ5rG6t5WcnCQiQhemA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bVAEGffeYQHJ/vFcMUiDfxDcpQKPExWjFq2Dy95o7mzS7X+HXZkwvtGaLNaQ+JVE+v9NV4q7wDi4cL6PbypE9VvGd1bdZXfFXNEhqsgXzVKFK95hdo7zJQY4tmMPbGWentaSNOtW0+woDX6MM5t2DTiOFh3bFlUFmutv43JMHEg= 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=P3Qdo5iN; arc=none smtp.client-ip=209.85.221.48 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="P3Qdo5iN" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-4799b3f7c83so55439f8f.2 for ; Tue, 18 Aug 2026 11:11:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076713; x=1787681513; 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=crLAMeWTSlyJshBmHidF2nl5stcAZaMFUr6sZlkiZkU=; b=P3Qdo5iNsu75bIfq4Upk+4ktKmRR0WjDPHvmEudtTtp5vINYgIPJiyfL7YEjbTr47h UYMBSDv5uvBvptTAVoZgeC0B8WlAUx6K/VkWU3ofmDi7jEzUYSUGIdsoHOjxEAkIHef+ imjC1P18CzqGXiwa6Hv22AwMK6POzLhMTRbE1YaKlcpd1RIRxtQZBASC/J07xdVxWTyC FecnF3Ny0nsrlCJImIYw9Bh2RKByeUTPy1rMQHrkh8Q7Oj7HwBYtTxRVPqSrk9yaV/4+ //R6HE0Z3Wp6DKStRtSgMXorNEZcv84jC3DqEdRfKzOpwtLzVzDvCl3B+Yxhz91N1UpU HaLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076713; x=1787681513; 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=crLAMeWTSlyJshBmHidF2nl5stcAZaMFUr6sZlkiZkU=; b=S7+UnwTpiXl5O+XQbNDFqQ/znVZxi/FOQQDESYRmt9R782gX7+QsFNvhobdPsKVZHB PHJx3VspgPRQfKDdo9EjBhxiRGwwAM1LxYddYCVNS70jFamkg6NdHoPTeO8VH3o0lrJZ HXRCTybglqmPqOg74C1GrnlS+6iSJP3u0cVlSoiQUsXoKi++hoCgaUk29wNOJazgKET4 rZYVU6G81u906/kFeSbL3G4qiLr7wqTlVbx0u9qCrL5Kzii9Wfln3VsjFuE7Eq0U7Y5F 2k+gb+iIR8WMk2a48VaC0SEy6Hp0++kOLrhI78Me1pNp18SOtrT53VArq2WornQzT0av eTgA== X-Forwarded-Encrypted: i=1; AHgh+Rpe+lA/zCFOKU9IdpokGsa/q2nbqhYiR2VhcA6r3fboNJyrbWmI8lNDVq7/C/fWdR0v3T0yKV6xH6jkegE=@vger.kernel.org X-Gm-Message-State: AOJu0YwYApOeDe5lEixmwoVNR5X0SbOkRVc8yMzqVlAJR75Q1B40yX6P s17ahca8RcCmHB0NOvKZdOsAq5lDEdfPaqiBv25VeuCqhKYj0U79Jv8lzzFo2FV46wk= X-Gm-Gg: AR+sD13KPCD9T8a6rpNtXY8lV3PYBibF9sKN/2vbl8eFsacw/LjFMdEU1DYWMzk5zB8 sSYDhKPCDnQ6FEkDHbsyrJxQM/aHfaoaiTkokBsrJ0HATXx7DCi7FLGPDR/KjccLyJjkgTiUm9t EBmHGh7y1Q91QBk6jDr4FOcQ+zxwKENhrBGJ+M4YJ78gRu6UMo9vB4Xs4r0eqDgQUabeoT4cY7z E0d9u8IIemYhdjz7ZoS/2U4Lfc2NbX4xr9R41AT7+1yG5qEHlVRZpe8xKPh5kSGkCjSAL89UuQk PdLYqUqecMoqon0j3k+7yqtp+tinGp0LKBRlNNRphzImw8RY0XwuJeWCZPWnh+HW1CzVeIBcZGZ rIjLMusywwKAFgqyeJjbXtNsPR335pepzMO6y9Yj4A18TCcnE9cP6ShCmMmFlbhbfORtX/3b+Ts kKSUhr8QKmCJP0Y6UbILcjhQMOltZPDcdQ6tUFUFIOxpQoRJaqHgadlZdKQzvqD7bdrwT9K1eeX hqcekpJCyVvaxwrXHaoUQtsKyDWSq4QDb71RisJYusvp39T7abMVmD47oxyRsMtnzeICyxLeOk= X-Received: by 2002:a05:6000:2406:b0:481:5021:33cd with SMTP id ffacd0b85a97d-48160735191mr51429862f8f.3.1787076712695; Tue, 18 Aug 2026 11:11:52 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:52 -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 v4 06/12] fs/ceph: consistently use `u32` for `time_warp_seq` Date: Tue, 18 Aug 2026 20:11:38 +0200 Message-ID: <20260818181144.3541770-7-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 cd1e09c32eba..e79ba09f2cdf 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 Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 3DDEA485CC3 for ; Tue, 18 Aug 2026 18:11:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076720; cv=none; b=MlQKlHNmvGaLT301nJFD2yCzDlykBmf86fhvwecknMhOH87RGn15/8jBWWx4WJIB6vc6Yms/pBpSqit04hwaiu9i4gduIlI72ze9fBjh/d8V5OMLboozx0TYwTllC9LbjHkW3CvVyMpQZ1J1p0Y0Hq3BO+kfSyVmHtAOH2WiaEw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076720; c=relaxed/simple; bh=rWcD9UAVTx1Qu4X1tQhXaEYVpYkM9g/KFb6msHCmSJk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Jdlxs0kSy1OXEaSUXjLFdhiuXfZ4GT7PkVQLwKyXCDfQP6YHh/lUgDz+Pd3Z/+bNx57qvxljU3BNHbzRHZMvrVZMNm9xzWKX5EScfL/dWkn4+z8bds8roX3K1SIvXsH/YLHLsOLF/giWvgPl3y/K+eOjsrKzANC5r68p/wYtb9E= 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=QbPlUWcN; arc=none smtp.client-ip=209.85.221.48 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="QbPlUWcN" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-47fe2d179e2so57472f8f.1 for ; Tue, 18 Aug 2026 11:11:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076713; x=1787681513; 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=QbPlUWcNGUEJLGUoJSEPAMiBLpv/2oWlKA8B1JPOW3ipAXHtM2tYVJodMtHDWWpuEj +f2eokrqvSy/boGusHLxQ53BVMiwdPYxrLpBjNwvnCdYn9vS120wIiv1RS6nldM0nez5 oMXWubtlp3MJaY7IKP/SmGpRFgpURT029S9eHfoP26Euv8QYsDvPz7xR4xCuM2KsC2VG j9xpsbsy+nmFECPipy+kgKyhVDPdKJ/ag6z2wrBc6+vTMiOq8LMXByjZCqDsxQZOe4z5 elRWFJ5CnhN7QrYZgCIvsCOm9jLqJVUW7v9LPjl5jr1MMjtjMgrx4iOlQvL2CFT/5qtv c9oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076713; x=1787681513; 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=O5GOfWTFzCYwNpsdh60hsHGdWbEVQ1v1Fi+DlzACMmOfbwjMQ8t523aKEG8RxclR5g nEPEKuxXyczdvyDRhhV5xDUn9ZbZtL8aqglP86EF9Ir51f8+pbn9qEBCt+gsuJPIg9dG PAHTyNExzHG2gt/KkeB+rC9FPZ03qfc9+iKZtbiUsMAz8fF2yza08WUxavjqJYn3ki/4 k7THCDP4X5IPznCET/yyEUK5VlAiEyy51MLfO3JnNYfA226eUA6JMdi88cDd/GoPTawv KpVormmnXWxXWBjgu4m5jabuohqhkadAhjNS14spG4zRymt+HdDP6sOAUpsHhPOVI2Y+ 1Syw== X-Forwarded-Encrypted: i=1; AHgh+Rr0dNskW4MToI7dXsGrlK+8jhgbvTsctRJgiHfyCzPto+tgClJa4t7fcZe7WxnDvSdkQF46LK+PB+U6Bpg=@vger.kernel.org X-Gm-Message-State: AOJu0Yxp6K9sSada3BaiLdzyZgTUIYOMfcp2oCabCG1GFaC/YyQG3Ewg CjDAdHDoYRYTjAVgstUVU2L1fuTCYPqjsy+hVxts3iuKT8hdynjYobYmbduA23JUxqU= X-Gm-Gg: AR+sD12susqseTliVXv1aITYRjD+xZoGfTjLkUY8ZQJI6lQm9doWv/IyBGBQGpNz0Qk vvH2ABKSg7g+J/3rpKrY4at1T7qZqTesZq8PnyN7FBWFMmMo3wPzas647F2mPmel9OLleCDrFqi ec2QE+TfQj3GmJXA5yZ44FhEDyngz/TxYoRWsVvgoNRa4hLcn8XgKrx+sDbDMFq8k+m0jvlSad/ +WTOIxA2W5Z8AqwVuLFBGJikX+YmcCbjZTsXKaJmA5Mw2f5e6iJddO0yQTWFBhcsnd9+85rvh6O DZeKGk65yAWukD9FkIsc7qKrze71qTHQ+arn21UPPUwUr+g5jkvloqaqO95ABuF1mWyPw88CeoT 0BOntzjdMIf3bt3kCxvCl4lRsQqIgHJAgP/rE65rEiFUU0Je6lVBB+/ssGDxGH70oJjYTQb8+l8 CzsCcMB1+5/KDoZk582BuFM0Ehc86NqQ+RrpDY/7GBeHaT9hr19U8lzZ9qZsgR7/xUqu12EnGNo guvpqanHbBMZ2D5dzZpSXK17ZxHy0VNs09+ZhptzOXiRYTU2bmHtxvZjktJrjuz X-Received: by 2002:a05:6000:2891:b0:482:a909:53d3 with SMTP id ffacd0b85a97d-482a90953f4mr16828977f8f.2.1787076713574; Tue, 18 Aug 2026 11:11:53 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:53 -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 v4 07/12] fs/ceph/super: reorder fields to eliminate padding holes Date: Tue, 18 Aug 2026 20:11:39 +0200 Message-ID: <20260818181144.3541770-8-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 C15034854F9 for ; Tue, 18 Aug 2026 18:11:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076724; cv=none; b=WhEzVK4JsMyXkePMg9JevgLXsYv1QGtiA+N6mzFlF8EdDPJ1UD2IJYvWhJZhV855il3EWb0T9SYuzzuL1VwK704hsI71XEjIz4P/+/CjDXX7DrQIwBN4nyhJh3lDHWPU5zdy1Dw3lcgMWri7JRhyCV9t6/oI1geocyrqIpKt7tA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076724; c=relaxed/simple; bh=vZ7gRo95tF/kqgzTVygqtXNVLMo92lelt/8iAfWrtpE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VmgqWMgg44ea/CzESa7g5YzKbFkwC2QzzuNkEfxRgtk3tmt1KSYBN5bsCRNscBR639kvAUayYGwPS7K8FqZ5LlvXSA1XGZJu867cCwIabcQItDq+snrRRVsWTA1jV18Gpd5P/A2E3sLyF4jxNymPb5ZO8I45D+WO7khWvvngPzo= 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=hIABmypc; arc=none smtp.client-ip=209.85.221.45 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="hIABmypc" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-4799b3f7c83so55456f8f.2 for ; Tue, 18 Aug 2026 11:11:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076714; x=1787681514; 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=/h3RiEJriMYlQ3k6GEtIrqFIdNALC21eRy/CEabRiBs=; b=hIABmypcrZFHZYpB5p6+mi7fJfg53bEUlGFnbSd6Mi9S7SBckXO7fLnKJnWqad5pkm Y+MZWIFKVThSdXT3rx7ictXaycUmtHHEM3oAIazhxaQlYM4IH1xdFkfCM+ZyKFB5an/e 4uIxdtagR92tQdqpmGCjeUvABnFNmZVGfS8wf2sWcld1J9ERaXMJ3ItNNupqf3Ckkc0m MsHx4GsoieNFTcbp3/WSrQC9Cic6UyEOZHL6Rqi664QpuQhTDLYSbVgwyRfK3Znho4IL 99WBYw45AeaeEOG7kNW2DyMelaXZ+Hm2XjSGIw+l0AJa08ddTLkLfCVOkTzqDV6TkCER pcgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076714; x=1787681514; 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=/h3RiEJriMYlQ3k6GEtIrqFIdNALC21eRy/CEabRiBs=; b=Caizpw5NtGGK1D6BewJH0DhiHepZHkIrstGaTk2MmsDNp+xOzUioGY5OTs7qH5tURp bfvhz2UlTI3RzxGFmQMKOWYntkoPZLY5cWjGfXT8LUvYlvgu4KGO5HO3zh8Y0f+a6aof Ui5ByBjLlvskPPcJkB1VGPcXDz/r+bPISkVL7rioM9+a2vJNLB6ecaYSOQdaaw0ifI0I 0nS7BIx7boInELR89kpvSH48ni9oduTkeG2m/jPjh6aIL81njVqkRTrlPgBish4JDPzd N5HlZ8uJqM0L2sdMrio8bgHVzrNsvKF6mzQEu7oUEUNROneOVaU+o3ikOT/OB4STLVY6 7UzA== X-Forwarded-Encrypted: i=1; AHgh+Rrjbvn+T+nDYMK/qpA2pUXRqH8kTJ9bzV84Z3JilVDls7dULjs83otYNhTeXLo8c5Cv34+HYkHLPbxaS9g=@vger.kernel.org X-Gm-Message-State: AOJu0YyoI/Lyllhll8xAnD7Ll0K/Ke7v/dBek/OFnmPVl9E8zdHFIpxT /EetGWc4qAlHLdUUgGSl0VSlMoT9ILB+Rtim32ru7iec7m3qKH9TZH0oBUHYxKXW+Co= X-Gm-Gg: AR+sD13dW56eafrFu/WBqb2+R/c0L7hr57XjA6miSf8CNCTdw145AV8mAQppZDTiF93 FEhuVJlYELkWc0yKCYOwYNEO3LmSgqOYvqpAyswBEJkRtm4QHMYcBTdExpi6l4mgFwZ6CYhGz5B R3rELgOh0J8k4GmDyKBO0PMBaDDoTqA2bGmlp0gFdlcyznktKZVFAFArOS1ggZxMWRcPpxNV2/O 7tDDccfLDL+ZY6bT+5Vo5T43V72s1VySlqUDWffTazWtvesQk4wys6GvA6+dR+nvvaRtVINdxF3 zSFO3r7nmuPMubrYnp0v+dlPcWBDtUqHKp5jgQJt9Vszr4qoyD7qg23IvCZTEY5TGgt5d5PLrpB aQnPXeb52Hsz2RIq3EgnnT/fFXpa8mSrzMA0ZVhJ4rdK6ui5XullOOVPfnNDG+0E+Yko4Hk+2m4 h0R3TZNSHN9MqVIJH5jhaGDzEQvzzPV8NlioZ25V05y4n0V7kTLCgFW21nfLxqtcmQXSkKpm28U s8NgZwpCdiv48OBMoglp8ue3CRlRHEaCNYNrlwqur4GVQsQ8qkZ5JkOyySnFsTK X-Received: by 2002:a05:6000:601:b0:47f:e721:1f77 with SMTP id ffacd0b85a97d-4816075ebdbmr59122030f8f.13.1787076714244; Tue, 18 Aug 2026 11:11:54 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:54 -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 v4 08/12] fs/ceph: remove i_truncate_mutex, use i_fragtree_mutex for both Date: Tue, 18 Aug 2026 20:11:40 +0200 Message-ID: <20260818181144.3541770-9-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index e79ba09f2cdf..1f65aa387008 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..35399689f0c1 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -466,7 +466,11 @@ 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 Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 6F6D3486645 for ; Tue, 18 Aug 2026 18:11:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076732; cv=none; b=T6+AfSwfIyzbRb0ESVos5kQfoIMxZxmdNb0jxTbgL9F9xDXl7vhOIo0hmNzDoHp68iQ89pcS9nI3nLkhKPZXoS9SnOz+X4il4ugHwmaArzSHC5+kbGgm+1AWAJnS5nK42DSLMf8xtUzQSZfjfaAryVVlUGr4sJGxfX0bjAZ8+Ew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076732; c=relaxed/simple; bh=uwMVf0O38dwYPksuPIL39EvOaE6wl/Xh+HGE7GDWUgA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=De4t/y8Uvdh8mzWHXtA/iZcuikv18+BjlsnMzvOMpNshWkfSTDPfOx/CUkUV8CA2HR+1dRnJQHy76Y+fe4hVm/UMmzjhJBtn7QHRL03LuriqebkQA7nnz5oTw4QugvKL00LBb0gNF+3ajQcqLFpHNFV3h4nh2WqOgQnTV0SQDGc= 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=P7MyxuQV; arc=none smtp.client-ip=209.85.221.44 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="P7MyxuQV" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-47362928f65so71851f8f.2 for ; Tue, 18 Aug 2026 11:11:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076715; x=1787681515; 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=Of1+ge4btYx5YTxbaLAoVEdDQy7zf8P89P8GZMDVTYU=; b=P7MyxuQVSTaCmldDXIOA8psDKMRuEWPuiy6FhsLY1k6S5AkOl82By8+xT3gx5nYof5 k+s2YV2LQM5jE0IW4GjIagKHJdCeAdATHDL5dyYi0wRTA3rASUE3s4ekG4F9d1DjYIRL 6XP6FOBcvllEf8BGS/SD3+oUgKkNxxhdVOkl1TN9IYg1gVBZ6t/n7FWik6rQkQHzpjHy OLidE7GrYuxd6diieP7j8yTe8DGr3F7oYKi6gX1JJhP+BM5VnMVRHaBMGsheQoR7NPJO aKnrc62HTVStODigpEY6R38gAOZidk+g6QnnHb3+LxSaMNlOZccK9A9Ue46cyQa1fKWq Sc3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076715; x=1787681515; 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=Of1+ge4btYx5YTxbaLAoVEdDQy7zf8P89P8GZMDVTYU=; b=anskDWNg2h+y6OewS8wJ1bVhs+wDl3pXEoHh/anPD4MtABfYvD33MroujoVoXeGj4F Wm+RjCWSl8zcSog/YIwr0hZ7tQMJd3gowUXtuAI6wgxgUhVqQ+w4ykCwpakMmVJ+Tdqc 0jPozRtAKmDI0LVr7R8itWea4+IGTGVuuNXeTxdb/EY8H0WoYdTfi0ZKdu7++/gHvlqY NGcZgWn0xTOofP20gqDIVmog8yWIu8lX0o29GTaUau7fTbKpZue1ASzU33H3RhhGCp0/ xb1lAoqDGSgsol/Ngb+N0IlayOQprJ3x//vxoiRg4xRI5KQtzMFaCcM7kbjZzJ5aOcvV iI0Q== X-Forwarded-Encrypted: i=1; AHgh+RoOHwt8IdRNP8GL84PO4vcyRXNZdcs5moxrfxc+DMaYlqOoq8sCklhvwmMJBP/ddl8F/V/npaEnVI6XNnU=@vger.kernel.org X-Gm-Message-State: AOJu0YxwN+YyYqJvb5/umjfPvNMj6jirF8Erfr7/JaUTIzSO/iAr9OUc xKulS9MrPjcpy88D68UPQQqmwauSpsCzFukHl/MVsz3nTq196xK6Qx3qppH6Gz1oRBk= X-Gm-Gg: AR+sD13vBLAiQG4yMNhScmF9InB0RrPRoWLflpSrJtt7nFB5DYdp262sCpmAgHhjNaH TL5qNlJnDJtuF6b3Gh2mBVa4UgyT7aYlF7rA2O8k1BgaIG71u2QffRmXTFQZBeClkA5UOcTaxQB 5f+PHGu/ji+RNy5CQFkNZziu6clGp2YUh1bqMT+ZuydZqWfvPUACN1PjVGjQowi3QEohvdMYD+M Rf1vhwab4WiSi/NwwiMgaMJg2bxksvHEClKVl8w6fX189EshC4Jf25iOTrTW2kCuXAl47MxQHwO Wrn6YD20uNe2+mcuv0J6Le/8q2QwHE4gvu1M6GyiwDIXUpB3c1HiH/kEenAxoMQVxVjPNLYvj/D sKWRlq7MWw/15idTUrl8RyZKaz3atExtrFcyxpUuMixnhGe+lBZS8tRLDxxJIXHGTwu7Ugo63Bc AB5SAHsr3xxo+niXogquFHldE+iWItfO+kFNk8NHvKuHamGfLUzeLpQPNSHHRjxdbNESGUq2BJX ICODgbPYyH6AFUSyjgCajbtTxJYnG0tzn3boAudbn9yQ6CU52oBz6gLdIpJUq6M X-Received: by 2002:adf:ee06:0:b0:47f:9760:4d2e with SMTP id ffacd0b85a97d-482a90f493cmr15861358f8f.24.1787076714970; Tue, 18 Aug 2026 11:11:54 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:54 -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 v4 09/12] fs/ceph/super.h: add `const` to helpers Date: Tue, 18 Aug 2026 20:11:41 +0200 Message-ID: <20260818181144.3541770-10-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 35399689f0c1..ab6fa8319c79 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -588,7 +588,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); @@ -598,12 +598,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; } @@ -818,7 +818,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); } @@ -1076,7 +1076,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, @@ -1173,7 +1173,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); @@ -1357,7 +1357,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 */ @@ -1432,7 +1432,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; @@ -1465,7 +1465,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 Tue Sep 29 20:46:57 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.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 77F5348664F for ; Tue, 18 Aug 2026 18:11:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076732; cv=none; b=K5Iw/xicvSagjn+dwUiEb52ZRVl3FhGC7RLY1UzYEnhmmRyYUpQodmvAnAuSO9SC9LqKTFOKPQwfj7jWc1AZ+tPd348MnOV1hfLeS0jT79f4LFXu+1kuVsQfgqh2pbRidnWdrMRdB/A2+uTRIs/8lWWMrTLbBbB2HthfOrrJY0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076732; c=relaxed/simple; bh=XIaAcsMDWqDAyfrb8kfi4hDQ8HlgRwTpnF2oNK/lVHA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GIC4XL2cjtuzcKw0GrwLXyuISgRa/2Q7Iu8B8mXi286kJHshGuGU3iFYsOwOKklzUEvuKRzm2zhjaGrYkiMm36HOpaH05nYuNnq75hcOY9ZUBQisMtQztZq5kxx2eRcGgkIh8oub+3KC3SdqhZFQ5OihTJ/O9AP2WLwok8/dRQU= 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=XDwVzJi5; arc=none smtp.client-ip=209.85.128.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="XDwVzJi5" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4954a9e8490so8384435e9.1 for ; Tue, 18 Aug 2026 11:11:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076716; x=1787681516; 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=wrA+HmPGA+F3fv34XjLm3D0Yr8NYT9tPwufva4MgP2Y=; b=XDwVzJi5VPy/QJeFmLHU+UEY/pd/qLc/fTVU/LJIj4ARmkKBhf8UEN7Eb7Owm54Qij aeBg0AHdjWpc8aHRXc/Oe3MxTb5JWZp4PB39C7TF9KS/LHgzA9fbLP5bGp19IGyZivy5 PJxscpwv+5sHtuEo4WW0+46YlOj44A/WynSGrBEQjABkmZK4pkHqX/sVbMljpjCCs3oQ sD03hCZSiv/xhtZic0UR01ktnjjFbDM/jEss4tFbPO4C7WFR0Hpqm+ckDzo7v+PbDSLC p9/eDD/1aBXMXtlMs+gI+qS8gOJWHt48GglrlLTBlxtS6jbc42zN8GppuJghnl5CLEYb w8wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076716; x=1787681516; 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=wrA+HmPGA+F3fv34XjLm3D0Yr8NYT9tPwufva4MgP2Y=; b=WYdA4etENjzms+Im2DE+e5L65PpIE5JZzc0JePJrhxzvESg2onllqBlHuD7P8pZkJh MuHdKRzsd8ZX5BfZufAfqJH4H4ikKko/QchhUUyPlXBzr+9qQOwixcCqUKiObdRNy7z4 1vcCmxT34LWK6iNRYwVcP1IqnNCZicwC1UQUOLDpfaZZXZOGId7XUSzIo8lBz/Gj1mzy Bhr2jTsYtbY0DTGhyWMAsbIvWsutWbBwgOrpPX+8QCGCzEwRcWeQJL4rWtzcAGVbN6Sq uGbzMi5KS18ZdAbBCq7hII/FCO3oZ33zU72JSnlLK6eQgKj58kAnswiRn4r9KxanKGvw 084g== X-Forwarded-Encrypted: i=1; AHgh+Rq+Iky3Vds5U3xcGl75+H8399KjDLM5z/H/ikVAJvM0sH9cMB/ZD38CdsNCU7oRagD8Kr2I/3b31eSpXsM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzag92orrtfJ4HwYZQjCSXnPTp2+ruBQPPkwpIICgqBosig9SM0 331LQoqTjiTjBn0Dne51l2FlyYltLatE6NeDhm279NxtV4tAQzdNBBYqXWT1W72bRXM= X-Gm-Gg: AR+sD11N2dPt7Y+raPFXyCZKY/5iU6OArFYLJ/y9VRl7H8cmC2p6siuOT448MwtOg/+ skcMao18KsK7/vQN/lIZGeLJb9HCrBKcvBxuCNiKAjpX72+GOlzfW3+1unkolKVH/7PgC/CO2br UMLGlWUTkIUtUNGYmAfJxXJDK6F6h23BgYNMkIW0NOl6zsgokHdunClRnEyd6qYfp2yMBXjsPeP dbepOsWEYg4cz7MCchHvYlgKJ3YbeYcc/Y6Sg70zA/sG8Mkx1wQdwXQxtS3ag3fi5EO1qA6qzPg 6+JBnUsei9UficJqs/wLKfmdzU2Ne0G4fMplagAMZBHIjolnBjmoHE1Yi6yXOABpVWfZPOb65zr qjO+LxDAk1DduKVwxnv0KILgMsTwgxSot64R8TiH9m0a+4dqHaVfnXYnjkIqRbeeLqaWQLrirWF 0bLFIpVf/dEDgvcOisjsSSNxa4MFM8e3Rn4BtlKK5Vt+ycBsDjlY/rcdvuyXEQt3AxIX+nN5T0+ 6AMN/lpV6lZvg2f1kK7Y8HSqcugdqoAoY39Bj8NQW7GZBoJK+U9iP61gHnBi3wt X-Received: by 2002:a05:600c:5306:b0:493:e543:1dd9 with SMTP id 5b1f17b1804b1-499a0907846mr201086105e9.9.1787076715684; Tue, 18 Aug 2026 11:11:55 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:55 -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 v4 10/12] fs/ceph/super.h: add helper ceph_in_snap() Date: Tue, 18 Aug 2026 20:11:42 +0200 Message-ID: <20260818181144.3541770-11-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 77f1ff658663..ecfd0fed3471 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 1f65aa387008..aba98975a8a3 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 ab6fa8319c79..b0b8d04b594f 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -608,6 +608,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 124dde705e79..af54480d9254 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 Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 17403486B89 for ; Tue, 18 Aug 2026 18:11:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076724; cv=none; b=ANGlCzLs5wmEWE4o/VYTdOjGRwBayO6B6WtnXrPRA6RVmTc4OpatpzNi6ch2ciUXnxh4yXxE++BddK1xnRBZK96kg/rJHDM5i+ghfhwTIlU++NM8TAhWe+wsOml82CtO9U0R4gCPxpNHmnfN61VQAYcLEO5e9tMRHnL4gO82ZP8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076724; c=relaxed/simple; bh=oiVmzcAKmlPDtZjfAObrIsUUramBNrsjJ2BxpPOQa30=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iJRoZJh+EzLUVvtzmXda9udd+2hyl2r5mY5coaVyVoG0iPQUZajr7oydoB+qEZNrE4z/julod34xsRf0riH7L5IDmdrP19xg3EI9ahZmn7AE8a8r8zqYlSTnswCz2d0X2iuqI0Ll7UWsJh4bKYbvHqkUqllygcGy5nJFFDStDQw= 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=PeWloCDt; arc=none smtp.client-ip=209.85.221.49 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="PeWloCDt" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-47fde295992so35885f8f.0 for ; Tue, 18 Aug 2026 11:11:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076716; x=1787681516; 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=pL1KiS9CEGUN/NiOxD9xGDBwx+N/unHU1dSQX3rcHc8=; b=PeWloCDtofr31WlSvmuqxhqlT9hDsnvqiVo0yE+iCg8t5eRnw1WcD5nng6IxKgKs3K hjiJpoesMJc7fCxuZLZ89RiLSeR+P6/lKk52gSybY/i5lViikkikdwBLimHkkmfX/oKg E4aA34f1OeicXofecGi26hHhT54abYvhSe8wcC4gLZfFlhuGtUH+8oecv6daZte3jRxc 92P83WbjheMTmGsGXpekFmRCD8qpqvu49MQYRVUmvmNSSrstHYxBInSSswp/jHHINbHN QEAqJUIk5GPdKIucmVvcqN4uIRhchLqs7k8oaFksc9An60brzEhGknc4pkk4xx9loXgx j4IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076716; x=1787681516; 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=pL1KiS9CEGUN/NiOxD9xGDBwx+N/unHU1dSQX3rcHc8=; b=Lo2UX7vkKq3IC0rgQ0BZMij+hnpev34DR3sw4BE8SGnQ1XqmQdJx83CDOgtoZPOe4X Vr110RedyYYAiJFNSdzr4Eyz0OOY7N9nhZXavBLBxrSgJqsDUEQJNXMK6nfVFmTJt1sn MZRPrUJUPu3BiiXDQBkrRpxXFaj0iGZBnqWKgsOPj2HF/bXiQdUAj8eTk1Z0cNs8JzDV m/d/Jkv3RXCNPOmpe5X4oI7cxm7dI+vvL+Y4DYG9pIBBJP6NqMCEzCe1CASrQxqHyEHB yPKnciFTpkfz5/QT85vo9zE1KzfCdyUcqc7KckCDIT6T3xm7Ng7OGY4UmNgwLJP46rup bj7w== X-Forwarded-Encrypted: i=1; AHgh+RpUyhUwYRo7GELiZaPiYh2j18g03fkoaTDb4X8BwyKfGPi8nwg4snvGPLMN2V+mQMqtYeLIW3IHxVIjpf0=@vger.kernel.org X-Gm-Message-State: AOJu0YzIqtofSCycOB1qrVVcR2WsJ7j40kras33AzZI/EGfJ+Oaujgc5 0eqK3Pgd4DhHA8AjK+LzAcpnAyeYXAv5UO0mr5rDtfEh2XmXzzItDAZfrfxLdNgn2axSnhwfLeI RgCIubPk= X-Gm-Gg: AR+sD11y6swM79UzxkSrCneM6OgbNR3legUsM36VE4s5ReKB8Ef27wefUP76wNDyrxc ULCIFsrMRxu9m/sxJIW8VI3tIJLqJ+6FdYMuIf+TQOXfjH4uLgD90mQCUeqBPsry1fBmtfVVUhW lL+V+PntPYHM8YYASvB4PFIKwyFpfpGN9pNhpLBay+RVj4iHFHCL7t1qQ24jwQvdPiC2N6kg/3X XBPBvkHnsB53pNbkwL5gV17YEr7GN8hmLhhdaxfGXr1I72UA4F0cOsX+zp6yfAXhRX+c4HQLQwz V6OYrmhf77tw0hjzY52p+QJY9KXNeyhf6zxcO23He/jNQUrOQ4XRUinVy8PqRSP3K0sOexwjBBD jxe1hqYSRNOfoGvNQbegY8o/Qhk5rtVBKtWXl9J+iCk6Xr1j4OMTYmhKU71dli7biGbNX8U5XPQ APFch6QeA4XWfHrGffWIImcOqlYrRigQDJOspqo+KefhCYhzmuQFlJbN0VN3KOmVcGNx7mwKmia hnB0Kym+afgHzLMBZ6FgKWLN7t4qtpOH73W7GhiNW4M5Z8twFI9YUo4EMC4ufXp X-Received: by 2002:a05:6000:22c1:b0:46b:70db:2113 with SMTP id ffacd0b85a97d-482a9d5b7d0mr14295154f8f.0.1787076716389; Tue, 18 Aug 2026 11:11:56 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:56 -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 v4 11/12] fs/ceph: use ceph_vino() etc. instead of accessing i_vino directly Date: Tue, 18 Aug 2026 20:11:43 +0200 Message-ID: <20260818181144.3541770-12-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 ecfd0fed3471..7beb1b4d1cd9 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 51ed5aee193f..49213c320d7f 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 b0b8d04b594f..660125d94f8e 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -596,7 +596,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) { @@ -641,9 +641,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 af54480d9254..b8416afd4901 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 Tue Sep 29 20:46:57 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 6E1F1486640 for ; Tue, 18 Aug 2026 18:11:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076732; cv=none; b=kZtGNwWGQqth6vNGuaivn6g5aTlmQx6IPdaO+P4tWbSqAXQkB6rFYPp7dfvGfGruIyrRobtAdzY4T1/x7xpsmW7k2ZT8ZXaoThZ0+B2KgLev1+PhADCXIl3R+rM31ng4RRKXYNeB0aI1rpFbrme23zh7Wb7OsvvqEpmbkeaLeBc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787076732; c=relaxed/simple; bh=o9USGOri0DNHjuRWnRkfOmLtqC+q0bG+eUolSoeXHaY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NlBe64JdH6Ig4hQ6M4IARRKUgHWPad50GsWgrdjncHqJHamYg8V70idSTbZxeQs/mLgeOa4wANR4EA/84RMFuSv01xc4Mdd2KBNo/XLpLcIc2TS6BMmzTJKpj8X6OsrGeqp15nC7/kXn5ykJXa8Hkdia4SzyRt5c4FRFcyOs7Ks= 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=XlVPYj4Q; arc=none smtp.client-ip=209.85.221.44 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="XlVPYj4Q" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-47f92e3c14bso72503f8f.0 for ; Tue, 18 Aug 2026 11:11:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1787076717; x=1787681517; 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=q1npwvHVkojeQbHnFgD+GTDd35EJtvNtQAE3wiFoHlg=; b=XlVPYj4QSJzVdBWTYEZIFsAIXYJuxcrBEaF2aMDu7I6z9ICU1QI1BjwbXfT5Mzm8d2 vx8cYbNDIuf1F77286G6o61TMBIw+kG497SiEzWyn/NsCPMi28fgFTCNgfcSiydjIY3V 9ou/ZcBalsOq+0mpsqe9Cjwp6RN79PX3DnXX+I+7A0gs3H4ARCzoNfW6aUm2gvjUMALG wQZ0nRaimv9GK9pbredNh5NES/22mjzpj36XanzNPoRIaUOr8d3nmdXn27nzfDDyvciw oG96pjZ9COX7yRgc66PjpikPok6MHgGiWxWntgvWS/pxCCcbRCdERjM6MFwmXBOs8w3O oZMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787076717; x=1787681517; 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=q1npwvHVkojeQbHnFgD+GTDd35EJtvNtQAE3wiFoHlg=; b=BNuZ/N661Jk2xB9LN2FLbJyH7EYUf88ZtNy5hYMG/p/Up7SKIbZzRNTrHjhbchP7wv fWE6BuqglQU4/cPG8MNJp97ivg4B5Vy61EfjwXPWSPaJXheTMK6f952aNdWaFQtIHXj2 hbL78RS/ugTQmOjiWXRxc6x2pjqkXZXe4HwhufLQ367B5/mbe3xZC+iM3rcWQzq1Z9P8 k9+KX3s7g46HRLNbbILg1XMdg9pLGFzugJFE9fXPoA8voB8rJ2u1VBzhFYzz1g6F4PVI Ngt9JG9Op/Unv6wwda+swqkOwYxaS0wPjrzYjkztDogWkFb6ny9vf73EAGGyFw374lQ5 1mOg== X-Forwarded-Encrypted: i=1; AHgh+RrZQpQ+I0TxM6conu4Hr67V8W5wQAV7xheVGvSSOBohZ+Ilmrs+g14oUiSsmYpX+J3h+TbDdAR0RVmKyZo=@vger.kernel.org X-Gm-Message-State: AOJu0YwAHHqiyK7W9GxMSBTsjKzYk3CtnGOJ7VvNsxlvls7xhCi+p0N8 uRqrXDP5DxzAoQwbA2LsKf52NkD2f68vFojw80tuPGc9G39q9nsQ4mlX4XkQASO3vlY= X-Gm-Gg: AR+sD10jmrI1IgT9+7NDwIdgG70HGjSir1P7objzFHqSk4nnXPEFKQndcS/QbezovGt djxMA2iJEOLgjWQjgnw7g5ALus9HpJGbXf70BsLXmCg5v5XFSg5zTliEiZCzzFLmSSzp4QY/DlQ Vls+sVuNiRxlrYC4WhHQPvsLdCwsjArvU2fv2vmlSD8/1jaB5xnJAil9BiZVYCBPfXhxnr7We5B WY22XS3zQvCxbEf2L7ngaJ9IFp2YKmKDO3PSi+u0iMjlkzCyb0sX9203Tw/AkCTZTrHOxgoyUqF HMHtvq0TDHwOnNoEFcaFIcqbTr3oL0w3Y1oRvqm/9oMx518aIyvb0jgv/3bWS+tmgWc+SXelKWX WMroQBfhCCaPmbxrhq4akUrRT1XpkzahK1ITFIGYGoual4pYwH1eCFFzxlFPbfhwajdwLtcECHA sbUli/c6GaW8FQMT+k03xL88ulDmdWBmMflPQYwXMg2EJd/T6yhVNgTvQuvRSR6iCEfiMXLrpS5 jZ/TOuse1Bmk2+W26pmkfqUb2FRVDvC0cpAZDSzIbZCaH5BBdKI6bFQZgcEGsWo X-Received: by 2002:a5d:5f4a:0:b0:47f:e770:13e0 with SMTP id ffacd0b85a97d-48160715b9bmr59223175f8f.7.1787076717053; Tue, 18 Aug 2026 11:11:57 -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 ffacd0b85a97d-482a5a3b896sm14302641f8f.16.2026.08.18.11.11.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 11:11:56 -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 v4 12/12] fs/ceph: remove redundant inode number from ceph_inode_info Date: Tue, 18 Aug 2026 20:11:44 +0200 Message-ID: <20260818181144.3541770-13-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260818181144.3541770-1-max.kellermann@ionos.com> References: <20260818181144.3541770-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 aba98975a8a3..4faac8db5f00 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 660125d94f8e..e5ab1b83a84d 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 @@ -570,7 +578,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) @@ -600,12 +615,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