From nobody Tue Sep 29 04:09:38 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2778D39A7F2 for ; Wed, 12 Aug 2026 20:29:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566604; cv=none; b=X5aOIhRl6DfDVQacay5HVsDzdZjJPBxH4VjO04xTewfJ7k52OP8dF4EOlxa1zozjP/f6COpeoBVI8Eq9+1N0S+ZTEojv1UfsWRXHn3lifNWcW+X99s0WTXcx02kmYx+N0dwg5rKIzXK2IYGdaopc6sOnDI6hP8Qez9bmzEiwCFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566604; c=relaxed/simple; bh=rECAuaCU+sisvFAxlz4wBECy3Fjxf/Y512+AyaTPnw8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YWu8PG6sVuuymweutCkxwJivqBNU6fDpGQ32WrluztAJoxs0LgPjzcvaGTWMTJuzPhb/lMOJe08u17Z2VVgPpshpCQ2eAVK6v/wJXidov/xqLee6e9jjGouLm9VdVbGRL/C2o17PzhUrFd3olwKPs2J8giincxrTviO9Slcjqso= 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=gYj2qtJ/; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="gYj2qtJ/" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-4813ea321cdso159649f8f.1 for ; Wed, 12 Aug 2026 13:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566596; x=1787171396; 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=gYj2qtJ/tSAxXCuhI+gY/mpcN92pFGrcfQBNC3UgBpEuvuH2MUf1QqWG7JMXIDDi53 Ice41kea+BI2l17coyKcBx+5eCgoH58zsdbRU6nGPK6tCTRXAYo7YRpnPv8EbndG82tQ q7SYqo4vuS7XwkigyAuKhdHTEHzo/PBJSZlpRFgeiMzMUv0fVaEpCCdY4Kg9Ep8yQoT1 YioI1n1p8257FP9EuRA3ftgCpCEDtxLpBnWbCPHlnJSPjflSAg/d3hJCBO8oPOdTL4XJ 7wvLF+eii7LzLcyDXAs1TU7D1qIhoyFQfL8rKLMNqJFJ4oCTacDKJR8qUE61UZ8g/pGA Yh5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566596; x=1787171396; 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=nc7sR6R7313rnD4cvmWbXCJaTpMptoCAaBAHbNI6jORK7Ux6KB60DNbi8ka2UElwp5 CxhcQOK8ZUn2ICAbywkBT2j21fAJo1S07yshksn9l2QZ17mGPrW5HF4wVh4QLmaS8BcD 83RJU+I/+6z81XdO5A3z+la6eDk/SC96NqY28x5+6BlfUd2eGIraMeNJAHRSLdtuIN0D X/LP+vWfdYWkpZ2+E88hzZeVOJSSydEZGRMEOJBNQHkfFH9XJnw0pqXI1zSPI1lUmEgn h27cG9wO4QvaH/uSJ9dlxGfk+TxaHWzQ5B0pE9qOSSjnnyyB57dUW4U28Kh/oVR18XcP iyYw== X-Forwarded-Encrypted: i=1; AHgh+RppTrqAIU6H6kevuZ2E7r0nrGbpzBQVvkGMd04t+UxHoVYuG8/d114RJpM3jYHjyPbvQ8O6mVEfD72hUao=@vger.kernel.org X-Gm-Message-State: AOJu0YwHRtseOxwCjpR02uQhtKPEDMsPtDvYfCBKHueLy+1SRJbL0Ysj aoQYpKuCN0o5wV40l0mSjf9f9fE+EzuxlJdQQeXUjL1RsB+LGqoKLlV5tXP68vsoseg= X-Gm-Gg: AR+sD12sd2pF8t4g6oIRTLJbI4DQQyQP02CBEHm/hrVzKcLtI2CD0cFqIx3nGp27Kd/ 5BHaVHGbEMsa6psTn4s4jy0rAD0pOBRI2hsKlFB6grN+khhd0CvAAz5DG8bTW+JAUd5wXqHhE/Z hK92mmER+OFpAgb1htgRsA80WoL8WvYVu51ruL/vZjiuDxCo0Sn6StKytR4rn4TooO6LjuCFqv4 TT03NqIYRoc1x3LUuMDO9v0G9YrW4S/EE+Zqg832JKivytwJt4cv7bkEfsD152x7/RjSLO1sy1K tliBQgr9HoRJ7rSu8T3AFHmP/bWQFfyZnFcWrYKCUYzvIlpeF+dWjePGtfsc6zTMQn07EnExxCv VFPHSdegNnEosD1IOycEysdPJs9LjyEYivwDn31hkJJ/2PVO2F/QQnCm90gBmAZhSNcH9riNswQ aiMpwuDrcF4QpIjYwtUc7wvYuaPTghbT2VBbciZJw2RsaKErroV9oL0uQdXxARhdRvZ+rP2aH7P 8JEsv75p63ic8E+kXEq/FAzYt6e2dCy1B8ZgMm3/JL90qKCFnrGAkzYl23NBdvi X-Received: by 2002:a05:6000:41ea:b0:481:2fff:2a09 with SMTP id ffacd0b85a97d-4815a540db2mr425678f8f.14.1786566596589; Wed, 12 Aug 2026 13:29: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-4815a569ab3sm328979f8f.11.2026.08.12.13.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:29: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 v3 01/12] fs/ceph/super: remove unused field `i_cap_migration_resv` Date: Wed, 12 Aug 2026 22:29:38 +0200 Message-ID: <20260812202950.1800340-2-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 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 847A939B97E for ; Wed, 12 Aug 2026 20:30:01 +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=1786566607; cv=none; b=FSXKqQgsSI+AnR2mgopjYjqgYE9mkzabF10s7F/5KAJDVoTH1FQ/Ikn8FqI9FRIbCnXo9+ZEVFLbnCzTugwJHHC2vw+PjvD3Vsg7GFUAHttwV30NbYgBgn3qRZhBVO2p2yF3vCDdGC3wLiQSH0YnyNJJ/+WxlSlIOpKecU45NY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566607; c=relaxed/simple; bh=9XEOCpJ92dHTmRtWjKTA/Gb5ilHulLiXFfGINfxa9k4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dlfRe6QjoEFAw0Som0ni1pIBXeSm9ZBDOp9qgkr15KYq1n8g1O9J1A1q3c0zwQwgToAerRoyTripatA4AFre9TAcRv2eQVRz7et3oTztTJT2Qcyctp0SieYF9abkKSiFBzmeXnPdnJc1xwEfpNzHym+fmXEOAn1FTZKGebaIc7g= 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=VXLzODNN; 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="VXLzODNN" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-47fd66a094eso524579f8f.3 for ; Wed, 12 Aug 2026 13:30:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566597; x=1787171397; 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=VXLzODNNZwSOSHzPRe+TDed9G0cS7MrRExehI6//A1vP/Eqq1j/z1+aKLpiaBecpCx 2eHKAWLZRMBYtXtdHZHBtqt/oG/PyeIE0P6GvPq101PXvvP6DcO90lJ3Q7yqNZppQD/o /sOoSMttMTvMGqfw/+zaS/y8rmVWiWhAofAvGUJmE3lnZz/gvra8ui3q3B0VCr6WccJy Q4uikeNh/gnqzi9b0LpgKdvUOuYXi+m+0SAdSwvXtNKwhzBU6D1VMGqPyvfnpHZ90Giz 8q57IQ0O6vn/bIQ59WzPfGGjk5Mxa9dqss+hCFklOtoovPfuOWNC/tXDTR3w4o/WyULw sVrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566597; x=1787171397; 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=U2ZX7DFLwkKZ8smJ3bnq6PrPh9ofAzn98TWQvH3DTOm3C0EQ6PTGA0mnuEmx3ravJa zZuFTJmfqpdGLUXD8mchL2uWuWpF8YhZF/w6qEfVnAnk3m5z0QmVHXMK0ba5cqIfIqqH m/g83Z495UzxJ9SYv3fXOPse/UNpHjr/gkrSflXgcTMCNq5KQrsPWwM1GvoIrA4jPEdb xaFVuHXktwIu8dIwMzrbwkHuvOl7nEiShAUBVNr/F+nzqJ/jX7MwAwJxLLNhEwLpQT2b XazZ6TsitAz91TG63Wobm8p/87XEqSF2LpFk8Mgne+R5R4mOhl+LH0Z4Eikcnf2zt1Ql yuWQ== X-Forwarded-Encrypted: i=1; AHgh+Rr8nCmcjGaah9zhruR0QeJAxkEdO5e+mG0r7ZqQPZuIdfkc4BFIzMRnDu8YtV94e3+qexgdAA9zgFk4aS4=@vger.kernel.org X-Gm-Message-State: AOJu0YweqtBXpY6WIL4NotkTHd9cFJowSj+HI7l6G7mCtILqTRoKvbBo PmFnLNayZTU4gK3ekYlg8NvcmwCvgypaXRFhG5VUKK2DPbosmioaFSl/Jv15Lzgz1vI= X-Gm-Gg: AR+sD106w3RpVR2UBigV7A5skCGcRIVzEz8fR15NuGo8W3IDcCiLknQUkxgiJMn6UD9 oFvf7XcgP4WRayCIIaDpt7Vj0C5HSJAgGuz7H1oHa5zusEPzhL9LfKI8GcrNiCovXNs2oIv2tF8 w55sGQNIDlQ/wA2o7FlKLZ/lVJ3bKlp9H6QX7YUvq2OhiyS7Ko3X6ENpdj7VmqZm3TEZ5rASYc2 48N87s0QFOoQh/zEWB1i3pNpc4tuRSkPhKS+CWoWA1L2aok2IHf3tG8cNMWRw8Ptd0wBvH9oadf VPz1W8HSKDEUWY1wJxaPI/VjHD4nfWcy1t2LdT/83NFLP3etZU9twkopLFw7++NpIC/Zauh38DX Rr0yzfC23aXstUc2vtXYNHjNgs/BknUwHv5MUHrRb50q/oPW93T7Bew/Js0XuQppsHxu4IGiluk mExCVT86NSm3Qi4ojEer115L7thygD2tBQ1s8Dfossw10rJUtjkq0eZYct3pGo1s8bMMz0s15ma 8dKnOXuL+TvVEit40iiaOLLUYQZb4Ay5T53XFIITGHgkiu5Bao/dG58XXyi19xV X-Received: by 2002:adf:e19e:0:b0:47f:8488:50f0 with SMTP id ffacd0b85a97d-48159c904c7mr1168021f8f.4.1786566597358; Wed, 12 Aug 2026 13:29: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-4815a569ab3sm328979f8f.11.2026.08.12.13.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:29: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 v3 02/12] fs/ceph/super: make field `i_truncate_pagecache_size` optional Date: Wed, 12 Aug 2026 22:29:39 +0200 Message-ID: <20260812202950.1800340-3-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FFCF39CCE0 for ; Wed, 12 Aug 2026 20:30:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566605; cv=none; b=HqA5yb3vECw6Gq/h93J0ZYnkayW4apsZtyvcnRfStqwFir+ru5fLc5lhx/ci2zDEzpSNELzj207pofvL/4oSK59AiT8+v9SdzmL/gFKYYoGSWvDih2FVQwpHASmY34AgbKV81Qg/QRqi0nhxa0b+9f5Vi3Ic/GKBi7Vm4SivzVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566605; c=relaxed/simple; bh=spohi4066YMjfHPtqROzqn34a27EiH9ElD9O/6aLbLs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hzVPVpyHmtxgecEagiaPFZAqYfM+vTz+ty3e1Z5rUs3FbvuQGMgU5OWSu7yuXq2R/KT6YeOqnyl+mdd8OO+N0LVKO2kj+jqTAnQwjMJFhpJSliqKfVw+oNmYYUcrv8w1XJyLzWhP2qdmMq6TTQJJqLwo8FYQqz7P4T0v+VYc6nA= 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=FMvNps5d; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="FMvNps5d" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-49800c6a846so14688355e9.3 for ; Wed, 12 Aug 2026 13:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566598; x=1787171398; 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=FMvNps5dYXKknGgQ8sXe8VNyl5jnfVTr4anHX0SytfqtWqFn1GgEVErlyu1RI2HSsz eAgO3fvQXA8q40wAj/9ZjOxJ6g/OZNheiw/1lxLmNWlzTXH+Hr1uASRqBiAcExi8kJ8b WgqhZg4VSTNzSaVEnOqUSloHBNa9kp/qiq+yawMIngcDr+EB826p2eyi8fFlGooLVW+M YAhGhclDOhU1g/QUEgQduCd26sdjXYQpI55oU72jl5yJxde5hig593U6lhuOwVYmycgC K4vq33G7Xz0Ev+SO78d5dVfNgB/1tpsFwbixaurX6bqn9UiPOPYCdz1K66dJZLnuFbOO dabQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566598; x=1787171398; 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=L9RPULIfNLuEfDl33ULD+aY1nL9G1sSfewFTr4mxkR+Wb2T60VJgdSOAiQIAWhmQXB ilURYLiuWx4ARjOLJelGhtse6VkYwYY/pdq+NgiSvQYYdLd9nZwHXWdJ7hcffnr57iw+ t9Nsxj7cQ1dvEWxFr5MtJProvuS9Gzdm/h7ohEv+OUOHubSdLpSBxoVfPi0+HCrCmhXy urRJDsNMZuaiAXx4b5zwLjCrkEkeuD883UIHmdcefHJiwfwxnQ6tmowQB2d0uoWX4a42 eiRIDbwjB2c8QLk6/f15aAvsslwW+iWIEyrsEJ/+SDyDtK0XRH8zHrqa/YiDEMimcQjH xqhg== X-Forwarded-Encrypted: i=1; AHgh+RqAExtaEAaFoX2W/hnxS0Xne+83aPimIYyC8SBL8TAl6jcX3Ekxgcgnrng/b8bYApGIijtZssyWCh+J3Fc=@vger.kernel.org X-Gm-Message-State: AOJu0YwmkC3hTmWOYzOT+PiMo89pKv9FYNRLXH4NBvllBdhqs+uJTlGd kar+/0wd7y27vQhGfUNv1R7bZmhsAdYEiDhKSD6bdqm2bpMzIDNoEQ8HfbQT8sjLcS4= X-Gm-Gg: AR+sD12gXm7XTBnVb0KltY5fMiMIFeZ5xL8cAKnRfvZIBVt6gA29xRe0Ip4vZaXvhCu 4XBTfr/fVoD5/AiP5Qj8xEY0aO5nf8SIEGCK5jxG1fL16LNH+cAnh9LPrSuwnWCWlDwz6W/n9Lh TpEIZeXEi0zG1BXHaArea+fqkE2UcNSjyBJJVum46RGrigukU4XnRsTVkhYILXBII/o2muVU7hT NnY1yPzcl0uc8fjOjRxOSnexEKvAf5vqtO2MXVPzAR+ob7RE5C9ocgarX2VLd8MNmICSGyU9f+B PuCpGL1aor3t55pU7g8kQdIzrcfK9Bk8iKCCvJLhj6ghs4KT4Y6tWDaZRiJpDIwAwZridCwmPzb 6FU/Iz6aIIWPReqXqruZhatKrm6RT6V57G5gq+RKfDPNLemgfFJwHH2ye73RhV/Wt1zj6JnvN+x 7hLRVz+fMUHU7U4GROURVYZ5Ke3EaEJ6XiGsJROp8J/eHmKjWnHDy6sN81Di8HDzDEJ9jrGriSW klTzP3PnOoy/FUqFZYik3UVXOV8tMw8uAkQTfZcsktewCqTSJl2ES2g0P880VY3/JacIrxJdf4= X-Received: by 2002:a05:600c:828f:b0:499:518d:ebd6 with SMTP id 5b1f17b1804b1-499821d08b5mr3929715e9.17.1786566598062; Wed, 12 Aug 2026 13:29:58 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.29.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:29:57 -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 v3 03/12] include/ceph/ceph_fs.h: convert `pool_id` to u32 Date: Wed, 12 Aug 2026 22:29:40 +0200 Message-ID: <20260812202950.1800340-4-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.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 D8E2A3988E2 for ; Wed, 12 Aug 2026 20:30:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566604; cv=none; b=skWtR5RqDkY1PJrwqXd3QNsZGxfrYGmuDCTUJvypk31E/pdY4t8d024JSQ6KkgmBUSiLDsT1P/x99elnWKITYio9WEIfOm6+KwnXeO/9nA0kN4cCuMfcEm2EttNSlQaMlLyDo5wnrnqmxTk7FhWLbL58cFS7Ov4gXZ763qzPSZs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566604; c=relaxed/simple; bh=mh3Wvp3erJw6hgEc0BaFtMvIaRlm0xL2iUvFtRAjH5M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B4F7FUVQlSqNdC1TJz70wAcrTf+G0/ig0ffOsirexPSZP6+Gd8Z5JNvfRJyb41/SRb675I0jJd3bAxRtiEXAkXtqxS36z5wBSi1K5NCPF+XP+ZSbcVgxI52nF14aWAgiDJD7mK4Gx8yIuS1zEJmz7YRhtKmXZIbRMyMawyPPMNA= 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=WK9aqTKf; arc=none smtp.client-ip=209.85.221.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="WK9aqTKf" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-47f84023916so1173540f8f.3 for ; Wed, 12 Aug 2026 13:30:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566599; x=1787171399; 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=WK9aqTKfWsP235+xvpSaQl7ZJPYJ43KQ5vjeeM5kB3YzV6d+nW15WRW9ne7IWuXk55 3ZQlAIg727FnbaHlka4iE2mP3JlHf6HMufWzUf/HzqnRYlHw+hOQQTUiAdhG202f3TUl iT6JZjzVxMbAr3GKzLtDvox49diDkhVuOUo3QCijbOyAhN86V/88/+sr5ir2Io2EA/6b 7K/snJA2CfO3/Br4g18K0JZYuSiTr9xvrJrZf40gIDWKapPSc1ZpHhrSIyYXtEx6Ik4D pZw0FuJMFD5ZpodKk63GqsRQYQw/FkBga6SROc8UYTUcyfN5+BMWDZLLOIorC3fHrkPc rePg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566599; x=1787171399; 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=LBMOb468ruk3NoLlsu1ybVBervR7TNK4Mwcilqzjsa3V8uTAJ38fAAb8sHBvDP0DsY 9ZanigNsY9zwmX1WVgZPUZh4FYUWnpdS2XI2JnecuxU9J231AtOw233WNL6rvM5ap5jg iryArJQfI6zLyledI+gUsGdlWhze0XXn2luzgo0Mjqy1hkwDnuV25//LWGjazm3qI2jo as4SjjPtK7uJq+yaOOCjQBn/RFRm6RmuIwSCLMojseROgrEVR278tneZIrgBaX2ek5ev 2GhBr8bPMLKWjiYtZu3yvHDmjzBEX8zb0RKkk7cfykpJ2UiFJWnAHJmvvjmNR+FQE8RO Uvkw== X-Forwarded-Encrypted: i=1; AHgh+RrdXI+vsEMMm+mz626/1jso6iGi8YjotzFKLoDD6JAUAuMLXEAar+M+ipT9hIEKjEijICJrROz0eKL7lAU=@vger.kernel.org X-Gm-Message-State: AOJu0YxtTvviq37WaLNt1+d1Pvi6voBizj6UzipiJFJMtqzoWQTc2BCM YwpVgGf8HTkPwK1QusWPVwCOdSjr+ne5lxejzOW+QErqbSVo/yvn+c/SxgNX4dQM5EM= X-Gm-Gg: AR+sD12q4z0I8KX3OAhsvXReRYOBGd6O/lyJzOa3TrVhjduI41LB7SX0zmjC3gVkMrs F5V7B9RqfaxsDfijBlrIOtS6/pXyZ11RCnqeLNr+PfU7iH+Zhk7hcnndknKCSdcvM7fztS0gBuq y7WyKJIe2eAJiSGc61Sm2LSzXZHVMY2mJ+5jFmIrhyWqKWroiZ05pFvZ6EUIJjGkjvXxW3a+34r NQA0ERuuB+1GJPltxtG/9K8d7zHQUsEkMV1MD5uo0SqWJHFsw6rZZB6gnhdZg4q7Zb5TbiMfzXX JwTT1AM9wTyt/EQm7oojLzWWyaqfuTMO6HwBRNr3YJXw/ud0kkNmI6xOaMM3BG6EsJLa9m5nbyJ 5+BJJEWb/ngt30fjIeeejDa6OSXVMBjWw0219aJ3Z9J11FYzWZuBs1L+1riau6remmCjTKgUo2E m71orSAcHEtYuRO4VAElm3URPK7dSEdoOqpbjH69iwEyRp8RJyakHLgMEpoGhi6ZB68mBi3nus4 tMj9nLF1HZbQrOTtlisj5/DhDVBEC9B4ODBliU2Wz0YYrAJZqFLYqRz3bqso0Tr X-Received: by 2002:a05:6000:46c9:b0:47f:8fc8:af01 with SMTP id ffacd0b85a97d-4815a01017cmr598862f8f.27.1786566598647; Wed, 12 Aug 2026 13:29:58 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.29.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:29:58 -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 v3 04/12] fs/ceph/super.h: convert ceph_inode_xattr fields to `bool` Date: Wed, 12 Aug 2026 22:29:41 +0200 Message-ID: <20260812202950.1800340-5-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0E5CB397699 for ; Wed, 12 Aug 2026 20:30:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566607; cv=none; b=Vgkle6hxagUb7ChHRImsONnhy8OqatkMM9DWZ7ajqG+9M7mcrgBJOSGRABOZvibdCULmeFZLZO6UtkCeu/2yf3w9Vm3S5Y19yuyOu0SPn03faKkr+u7KpcZEZ9J7IpoV14LHxi+rQ/n9yQDr0djp7RCmba9y2K26t2+Fvf++RUo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566607; c=relaxed/simple; bh=PNsEuMwh6x9U7wnGeQD0+2aN3K+WtwxzV9yJyPU6bqU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Bi0bB9OXA1N7FXv7Ba9E0fTZx0OUUUXmnk3i1jlR4ynhwYMdFMBsebw88b21eFWEtNNO5mXB4GDDlRb7s/MTNLOGl+ndD5Ks6rH6ml9W1jPENijPyBMINfp1EAqbJ5JCbN08yqYGbpGRLeyBqzygqIF5eSNXbGR2omKlxVyVTUs= 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=N5az5wGJ; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="N5az5wGJ" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4954f5e8020so6988655e9.2 for ; Wed, 12 Aug 2026 13:30:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566599; x=1787171399; 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=N5az5wGJiBrX/fOcXkIsOFiPFj0WKwzYSdFxQOvklQTl/V2jy2l9SFnmPl+X0dhGsZ 8gc9UAMWC0dU+0/GsiXVU4UTEP9QejpAur+uyjy+NuVKABh1vwiqBbEnx/7h7aOTviB9 nntsXrUCnnf0Oq0oP14dXd/FdA8M58Rw4TCW8S9niDEKiEuDS+LbdHUSEA/JnMZozE/3 ONbNKi3MWjnGAzrNuaT20dYpaJ/Cre8DKAL+5jEPUnxxGgR8ZLBWxlMdzEDVyAXFGZlB xVTzccAF6kywX65fhnh1ymw3gEkkoQSai3h3YmIPtSeXxhU7Wm4xhQ4BllkWU2Ls0lkG unrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566599; x=1787171399; 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=V+08ZToGv1xa9nZMI11Cn18MeVjfbxv4yAtF/gtsDIt58Pd7S/HVEee8QxWxK7d5Lv ID1c1nkmh6+jyz07EKtzfh+AfJXjlFbm7QJt2/vTVdozf7KqaZ63SR9Dx629wPD9+xoG YOpXVs906g9NTEYn4WLEOtUhX2vxlNea9YfdZCvbxyGjeP2W8d6SCRM7VusxITRRhBK5 e+P/85IZv9EfFCyTo+OJaRYWOFL3GT5FR0JebjIWDn0dqzAXOup+o14aFLuBsAhXv2uA GeuU/4LTBWOh8iMD2KBmkmbpO51g0/wq39cfxASAZhAwDQHAgbERbn+vXUFy4WlRy0lf KItA== X-Forwarded-Encrypted: i=1; AHgh+Rox00b5r3F1k7cjOu8iOEUQCtjnNoqM4i44dPMoxZ1WJFmXZN5cxIJKQqHQEHtV0J3YS3MazoSLLMuQuuo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzfr4rlahyVBvb/UTw5O6YPBMt5I99u1GtTwh0lT2yHusc06ytJ PsIsX4USUYbgEq0DF79V6B8ChSHfNbb9o2tsT7pfXcNzM5uT/ax7VyzXHodGUZNPWdY= X-Gm-Gg: AR+sD10CRLjb2xsXq36dXSmlYUtgB9nBgAcbq4OlQXG997l0hTOW0rQ30np41OOvQio p25WdObAGwj5+zrgr23AxSApbC/L39mXrKypxQl/u1k8gdFbXIrbmmNrF2l6u7VUhDY6GKTvhT8 WjWIWPdwbvSRFbSlX7GkaCfQ+qCZqDhgqI7mwXkm8dTf25Ls/431/bTnzS/smR/YBxriqXJR+lA gpxTp9j/RMpJAKxzfoeE7MIGnkH7Qvqx2efUHQ5KxBHVgO/kPuBYr1TYmo1mJO/YFRShCE06/ra DwsI5tc9Df8YlCjSp6tewD2HxMtDzJ6Fp0B+PLj9jkRNefpZ7jfmyavleZRitSQygKjgD5g+SJ9 0C4V9UFyIuUWb2/wP3iKg0T3StS19MSctA+CFHBBDyRixPnaYrIvUQMR0ndoFVKvAMBUsQFZ7zq 8Pavw7Xv/9bKYhpFMZj0b8FNoF4ISly84ytctla3isG4PDL50jdD48/oEsUrFdJayvUgYSqWUE/ sZQxg0ne56e2rzY7Q9OLnY+eci04CTxsjxhkxgTg9fL1SgM3Qy1opt7QDJeG27D X-Received: by 2002:a05:600c:8519:b0:499:8177:2a0b with SMTP id 5b1f17b1804b1-4998218ee5cmr4170485e9.9.1786566599311; Wed, 12 Aug 2026 13:29:59 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.29.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:29:59 -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 v3 05/12] fs/ceph/super.h: convert ceph_cap_snap.writing fields to `bool` Date: Wed, 12 Aug 2026 22:29:42 +0200 Message-ID: <20260812202950.1800340-6-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 925C239C649 for ; Wed, 12 Aug 2026 20:30:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566607; cv=none; b=Wej4ELmcfHBCQStJkSOTiWfVg/FvCeBRh4dSPay3zAJYsJG+PwRPvRJ8SQ8bOLPHe+ypf06To0r5JfdWkcRf2cD8+Z/GhkMM6gBpeyvfcyPnLLxQlYUCDldJgYR31FF2g6dIyYZlF3We5pdACZv2N6gWMvyatLItaurwUOvnlqs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566607; c=relaxed/simple; bh=M75HovAwVxE+r0W1d1j99uEBsZ5rG6t5WcnCQiQhemA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PPAV+R2EBPEc5h2NlqpJDtXbnIDtQKt8RnAnbb2I2e4VSmSIOotX2QTdo6+uA2T+a64hGu0dn2VCuGuqldOkgaOaQMt6u18N7Dy4c2o9EBMfhV70+4xkdiJreXb0BdCBm+XvTQyxMCRS7iIYYFQnaVJQopm46r4DTPZ/o0/ZNNk= 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=HAPbrm1u; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="HAPbrm1u" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-47f84023916so1173554f8f.3 for ; Wed, 12 Aug 2026 13:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566600; x=1787171400; 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=HAPbrm1uykOG2uSfUFY2n4gMRjTYej11d38/8ysHWdOAQ5+Tq3MeFypz7MIXKNK1Bm FtiCf2uzrqXa+243GntZzIijWu9UPeiHRyKF2HSbBfWsvnG0zge2XsIjqVI6oIdiZmmw fBwfvmSZUiQpfWVfe7vNucHknkwQ10wNoxRaevzEYzJdVgtFt8Af/BBvlsbg5W9fCJk3 CXSzju805jgfU+zzRI5Btj8UYAdoShJkPHjb2q3ZqBSf1fNxO+uGrWgTbDihXnXd9LSP ttNGdzvEzn1GWi1aBelEbDpaV0j17Lnpht92Ys5JAHG0XvQ9aL4LO1zMLz+enPCZtzBq 6gRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566600; x=1787171400; 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=NHSASxmPZ6oe70GC4DXL1UDcKiZeFiGjYubWwDS+ZLAr+IWl02L17Qopg5CZXxbzw8 AB167j745U7u9uy5Fc8SryCfnaDTXWfysrSXZdpJxhJ00OhzJBIGnf/a73iQTYPZdSLC keOuV5Pd3Ij1+j1Hp4ht2cMU8ZWGAmu1ls+spp4sy4fPe2UjY3taAX3nwUnnAuYFY6oW 9+PjlpjOUETnoQUvnffhdGovNRDSBzlKbI2OT8dUTb1DJliXCaWZ4qjpGgPd7Mr96+r/ 6kaxQT/dEtAPhBbpxKIMO6Tb8nVZqwal2+2Aq98BXRwqTZVuyyn8JMlcC2BSPg/U2S/v h1gQ== X-Forwarded-Encrypted: i=1; AHgh+RplWJJAwoBzpfGQcQMt/+NAxzVuUolTo1f+7WsuNKcFUBrN5L/BsmxZ++zX+B/5PQvLQq+F5weqO6nDtJw=@vger.kernel.org X-Gm-Message-State: AOJu0YzcUbSRZw+UEV+QSAtgqthx6Wz+/5rfT+j2QEOQpm5viNljAdAe u2rv2S0s6MGwBJFeWAIQfkug52ezuCrqAFUHcWmdT+fYMg7dj3rBs7OXzRphjOSibx0= X-Gm-Gg: AR+sD11ZYRSKNNc91edx6qUHHzrlLJn+Kr94jsR0ysyDw6JlF935z/55SHcofDoRg9q w6QLxuSfSECMfZx/do0WZxKbsknp93BWaC8WB/RrLHK3e/oL2RMOi6v9J/nmaittDP9Ms2bskMR pU2byROWlP1ldWfIwZ0eS/mh8nMZw5wcleOjCVYY7whrGIl4s4nMcs2mCTC+wM0KErnVK7G3yUH WqgTBZ1INHrR8iFS0TKEFfMDXs9af00G9NcXLTnReh0cHi78mhTCbKaQgxTyrNln8LFv+VwjkWm H4QoJCuv6frt+O4KxTPjiR7un7oBkxslAqbkF/gsXFIDqeerfMFJsVaiNnEvxaNDz7Nznsi4eLi 4m72ZHDIzbsf74OLwl2Z6u1o7EYDE/D2rUX8rIWvKQga1JztJVgJDrW6zkWkDLYSLQl1WzGL4a+ dJnmZXE/sXj6J6zfuAHkMJsoAmH//e8Tt4CDmCY7tSOgvWlGf5x+MIzuY+K/JBz0LAtYm7kwbEo L6Oi0xua2mJK4ibPN47XkDMks0TXH1nJyJnXPM5WYkcowBMOMX3V/4tEMQMu5yu X-Received: by 2002:a5d:4acb:0:b0:47f:d0fb:ea40 with SMTP id ffacd0b85a97d-48159ffda98mr775975f8f.21.1786566599907; Wed, 12 Aug 2026 13:29:59 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.29.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:29:59 -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 v3 06/12] fs/ceph: consistently use `u32` for `time_warp_seq` Date: Wed, 12 Aug 2026 22:29:43 +0200 Message-ID: <20260812202950.1800340-7-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 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 EA9B139CCF0 for ; Wed, 12 Aug 2026 20:30:03 +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=1786566607; cv=none; b=UC+HnF54NV8BnS6s3W1VaNEKwTrG0snYCrlTqxQcoovmbzPKIBUpUMyNeQRzr1KyjD9C82PYNm638p89VmBcA9WCVppjdvQH5qfDXaLPNn68IO3rbQPQbV7cXoEWxfqumPmr8T8RPqbFfY+VkC8lgTFmp3JLsfwM3r5OWGhbJM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566607; c=relaxed/simple; bh=rWcD9UAVTx1Qu4X1tQhXaEYVpYkM9g/KFb6msHCmSJk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YwL//kGr6QzWd04AYgpu/fAPRe2bZyxVlhnbfA3XgoCiIQ+W1ZMLBq0fUNIANYvp9UZ467C8FkWafhxHprwjDPKmBIff2+EMvlYricNIy3uQNQrAD7meBEv/1bstdywhe9FIpJLvefSKwTiLbXKiBY5IsjOjyHspW51zqf5YpPU= 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=hkE7Rw/U; 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="hkE7Rw/U" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-47f92e3c14bso1069029f8f.0 for ; Wed, 12 Aug 2026 13:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566600; x=1787171400; 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=hkE7Rw/UU12gk1Rds71jD9DarvLak7qJPVa+TCc0Qxi8yo+4qL8Vsmh5wrtuUX4Glc OmWbdBUxO7M3uWB0fV4dSkPjag40D50nBc6xqacsyknyu6uHh5giS8xJgC+hepPfm4iJ ow+KYOC09REHJFuawTk1YKw4VQxoSEEDrBDMcd9hmq76G2S1ZRXvy+7D6pNWjwWMwqQT yW8bfnLzR+IANn8s4ohH0d0g/FIZhoZdA/90WvR2BC02uTHizE3v4MQW12HjMz1my3oA 8yWW+Jig92+HTPZZx59z5W7vDl6ECWT5XubEMjPbuYbdGlnGOmduOWcn2kDcYVoN7eBl d9CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566600; x=1787171400; 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=QcNpyAO8jyGUisxOpQPrwKAASnWe0Nax4GS+1NN5c+9G6QFHf4r/yRcYyMX1d2u/9z e3b9eFtln2vjmDy4tnWef2S/G31sEMg5mxwBk5u9nZnoBx/w6VUxsXeyGpmrdyyMPQXI Lz+2J8W6kDplGp+FYEJmt7GDNl2F+T1jOJhFxJBd8mZH3UZ6+FEWQA3vDto+F5KdBpqH jTXPfFiALFTkmEUPRQJdJFviTiRfSYD4JlNyhqK1yRFK/sI9wN/zQKa3tq5U1+IAM9XC YFvv3Sindd3tX0i3oOOiCLiWREYboaqOme+oBrUhDLGEhSs2SaNTMsD4+xJ7ui7tnw8m lebA== X-Forwarded-Encrypted: i=1; AHgh+Rofpc0nSdHD5lFDEExDyYHx/VldUzLdsPsVhUTd4I9vARVtxgRIy8fEecTYBoF/aPhZOJ0bb4OeOPLtH8w=@vger.kernel.org X-Gm-Message-State: AOJu0YwlKK/OKCk1NsyS8zvxIlwG9Zic4Sh6YMoElzPwnSM9ZGzMkSxx jzYEsRpoZSE+exUXzs87UveBKlkFRrj+NFjro+d0oy4/kYhIJVRkg30zsr4bQq4VlZs= X-Gm-Gg: AR+sD12znGcbEEyqVxjCFHUatGNX/fwJ8LWpzLvk3ITa8sjNUvz7DLm1veeYRk12Nxf 91IxW84tf3B6LCOBilMj/fjJunWmCb8dr4CBYyMEcGF5lhNuKuMtCxKv3Bq6i9UqOzzg7xn15fR HSIJ0NxfeeBNQTuhGAk6B8C8jBMa5xWqOfFn8F9I8V/hHY1HaogEqCtHQaJVDWjm7ndo+9zJcFk m0Jz6MQ5TTmgrLL1V/b7ET9KCgrJrGpWGd/UROUIlChbY5bS95oTBjiLM6B6aOgLb/Sf8mokkhq HYe/+WbmWlnTs6opHcOtzvhsSK5NBUi/MqjxvOGZrmmq/ocSTWADf52LkThUyITvgN9t1TC9cHK OeoVsjTTgpTyXj1Po7QxCu9NuTf3zSk0jTkHqWFEmn+01UkEAh67dZeKk13PFNmPeUGTrnrvisr TPcHPsSs2N4P3+7IMwuqcKmqdjqsbKGhX3AKldYtu6dAW4v4+pFM0judyjhCHJiPs5g2nLz666j THrFzPHqMln4jcGsgAjJ4XudvW+woeByMFWIbnkoGP0lIootSSosrZ3dSpWln3H X-Received: by 2002:a05:6000:2304:b0:47f:81c4:36a5 with SMTP id ffacd0b85a97d-48159fe3877mr972832f8f.15.1786566600564; Wed, 12 Aug 2026 13:30:00 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.30.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:30:00 -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 v3 07/12] fs/ceph/super: reorder fields to eliminate padding holes Date: Wed, 12 Aug 2026 22:29:44 +0200 Message-ID: <20260812202950.1800340-8-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 A689139A079 for ; Wed, 12 Aug 2026 20:30:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566608; cv=none; b=D9RNW679hYzZvYRqagN2+LbXSj6CW1JELXAPyEbz04a4ZGWJb2fRTPN6plcKMyJzFlbT3En/W60R4alnPDgUC5D/WawSa/t9JQuLIJnnpND0HShMlYXmxFFgJk6zG1+odK+OC2G8xU8TpA3pjbgMqQ830DCHFHf2mRgCg3gjFUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566608; c=relaxed/simple; bh=vZ7gRo95tF/kqgzTVygqtXNVLMo92lelt/8iAfWrtpE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kKVKcVzq/80cSBlLpry/QRWRjV7DRNMElvuEcZHS7Xh1+aPslGaoqfO7HTkx+6dOMfzVXvrxnU32AhA4nPKpieqDIe2nyja+p2LJxY49xk1RlVxgxCCLoMkgNrG6TXh9MTY69Pobp2HiZcEghpUuqPF/TGz5rAEdEkAja2wFpCw= 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=dDhZT+mn; arc=none smtp.client-ip=209.85.128.54 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="dDhZT+mn" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4953de5be0aso9846495e9.0 for ; Wed, 12 Aug 2026 13:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566601; x=1787171401; 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=dDhZT+mni2/QOmcoF1waKr//UZZ+l/ysPVBA8HpK/li+axAivk/OCf6RLFZSH4ijgR bRxvEeogifwJIXDxMtaG5GufiLPB4BZXuqleUbeIJGJBw15WgPjVgjmXbefkCil90m/c xSPkjl/fOeGYsfiOoXMXwVPlphHl9W6PNbpqkafRZA9qOEfx1Xc8d1asvISc7rTolt4v x0Nrl4mI4P9xxPXgpwaE3UYzUB3euBelzsjoUnNbarLdfl69mO+NTaruyXRTCx7gcIuR Vnuw9Z/qilupqU9rsO26Qhi8XZXvRLSUgZnYtYwrtBF87wUPBrY39Tq/NstSN0byxc+i F0sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566601; x=1787171401; 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=IjK/3fFed88kYWC9vgkm4/BHGAj7lNLbCLFyI61eEfUjZ0peZgZCSHasZGI1NVN2z+ /Bd0G4UVuFA7HGBerXJEMMbAS8CSFQ44YaTodoX1ZpJEl6j8sbUVC1qS+I7sUgDYf5dm uGGzhFwHOeZkf7c4gx0j3X8fVgcXxa9i/bYu5oMK9R2eeu4CDys+moi6IGoAXtiEfQ9X vThzpIOPD4hrbCubCJeaYDLmHaW336Jj7H7EKpOicCP7spiv26C7PKIv/r4AD9GenggJ m/BQjYOkNSutMOQlkHyX07OmCtxPaEbvQfWD2lZXHgTbPV9bKhOch+2hOpcbhrLGFFmn Bw2g== X-Forwarded-Encrypted: i=1; AHgh+RrHgjKnIaQeTlOpoqQva6mlRmRMe+VapskXQeAWOEu5JciNwKXC2w8Jo0L/qvPFKWaO/1BfWGHX3uPC5O4=@vger.kernel.org X-Gm-Message-State: AOJu0YxyH/7C2Fhg7VxWPlS2604bl1WrGawJesHEiyhOSfhBXz+/p6ld q25jGJZjok+fQp1pUqUQT4YAq+FyHP99yIyuY+JkNrGfqfIfZfNQPaZ4CzTb6VGs/kE= X-Gm-Gg: AR+sD13x+5XOnXGFrqGhTwve7RreFEnYBF4gH0esxBm+FKQ4El81RbSwWFpwlBCna2g UWESFB1rRuMy/hi756Ir9JVDSlOKzl3Mpgygva43AG/e4GKodPB3VlxZljr6VLeVIXruelWAsRj zxSFG/N55HHgFELEedNIIbQw/8bEetXD7A1pgTryi/j1EjSU8ynR4RxILBU2DI7rVS/MVlKmxXI HVoqYl8fTqAmpgu+sZxI8W2aLftwQ8XqXDIktKfW1QN4Xm7uiSmPbwcFNQkt30sA3DBQzDqKnrU oim4vwv89+uG0rqlrw4Ln3clIzgcWWnBlnRsVU84CbkMpykElmhg2VyzYz4fIwAkWTH1WkHKj60 4g9jQEzn5TtAoXdr4OuFikYcManWr8jtC5FKVOg2D1cD3w9QlJ204Ruz2KVNvLS4LTJggCJfzkh pSnQ8tD8yerScTRApCCbGnYS1dzGSsDTukZNsaEqgiN/AIVdyR4+vDHvHp3H8l3C8K7Q88DxRD3 WqidhTPb6yAjcNUyMj+8ynzsz7wg8gf3lGNqg3st0FFnGoxf7+xmW5wzbseQlZM X-Received: by 2002:a05:600c:6995:b0:495:5890:8f6c with SMTP id 5b1f17b1804b1-4998216ad6cmr5510455e9.7.1786566601183; Wed, 12 Aug 2026 13:30:01 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.30.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:30:00 -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 v3 08/12] fs/ceph: remove i_truncate_mutex, use i_fragtree_mutex for both Date: Wed, 12 Aug 2026 22:29:45 +0200 Message-ID: <20260812202950.1800340-9-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 651F539A80E for ; Wed, 12 Aug 2026 20:30:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566609; cv=none; b=e+PZeF21jYxcCmU1fw2CeHsbSv5ImNpwJDTm957BxAjuG2ZYMpa3OzKP72deFKCi/M3Ue/tEtvt3l3a0xvv5JdBd431r6Bbi9Pjm6HHjP3Py5BZz/ib0pvLrdj+RurWK91cq2Fe+ptXOQPv5UD3iwMaflAvTRuHRChJvKH0WheA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566609; c=relaxed/simple; bh=uwMVf0O38dwYPksuPIL39EvOaE6wl/Xh+HGE7GDWUgA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d7Jhu5Xzqk7rfUaqxmjbUA3VzvMTIPZO4FF1uCVQ3eEhJ3al+RomobamkHmR2j4BIPkVkUoujsayJ4X4hjkONCEfbrWDDfKHZGN9gIawg02zuF0WXWIhdBmaGrEDSRmT09x4Di8pGvheRk26a4ezAW8F0JZJiNz431n875hFILo= 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=C/c2dcKR; arc=none smtp.client-ip=209.85.128.54 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="C/c2dcKR" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4956869750eso8549195e9.2 for ; Wed, 12 Aug 2026 13:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566602; x=1787171402; 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=C/c2dcKRhjD6YRvjLhcN9/0daxGYiUyyBnQEJJXATnXX55xhIg6B18pyor9DmU8Ks4 JZD0lbbY9zr/5yByC5WoGsdSIvKFjvlcvnw0ZrRKdQN6DIMHCd3NSMvbR6BUsBiddCjj qRmlUOVzwpkGsQMpEcIPlpiu14wcbFj2MEvqosWvVMhj8rsXxUOVVpyu6SuBV9gEat5G ymADTTjAUA8Yaqw35idX1an1LYjaGigd8J7vp6aZioST0QkFYrd1Me3Ry7y7CLYpGlN2 gxqPSXNHEKFR0+JMPm0yhvyUk1b606uIX9+gO55rTeWylOedHH3E5dNQCyjrq74w8iJt 8LMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566602; x=1787171402; 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=L+EpypVXwNEDC+bMddHOqCGRzkYEtF1jGHOYnyciFFTCLYfyiNd7G9S1hToYRdppGD PC5oZNOHw8sLrTv7yXM3bxeZ+/YOSpL6dBZg+7rSzgdKifpJ9aMvu0rffKq+OMzkyIbg dPgFUFdncsr27Yw2ZtlkYb5+RbqePNPl7w5VNZywhrXuqApcmCBU4h63jftT2TzlhW7P /fo3DX9iG2GKvkh0V2unca9eu9btXR59scne3p5DXq4bMMFWxpWX8npS5MStrj3BL2dS ta87zru20VW/8a4c1j76RF0reHIMG9/GH6oODue+ZmJdM9hYyMxBAqMgwCBDIW53/+iY TXOQ== X-Forwarded-Encrypted: i=1; AHgh+Roe4UZRcWN0VrrV2qMroXy70PPqN3h4gLe26nCK8JAJrvBh7n8qIII96x5ZW0DBDmTYqjH5AptGkbv1bys=@vger.kernel.org X-Gm-Message-State: AOJu0YyAJ0wmTCfkUzZovFSQ47hB81pMsL5N3w93Vgk0yiXYVyfOiGKO WS6+4ZJEE2uO06bJseyZYRzwGTqvrDaPEej68l9uB/5Gk+PWw+O823A6WfR2LhTs8IbyddcUJUb tFEU1qLw= X-Gm-Gg: AR+sD10xMNbiZ348fUE09TVXQdC9PmL22QPf3JabhDI93YBrcK1XPKermcDnYfS4ead lT8AfOuBTXQVqSE2ZpUJpxkmTCp6BlOAaFX2SJyX6t6UOVfuzfaneLEmJe7IES/vNBkaUUs4hxf BBCqzQvINGKiAUvzkPPIhuJMWVnXdWhnLCoqXb8aBPHtVGgC8+QJJ4hZuxzFk5tqdZNEcdyQz6K BOrxQdYFG1uDcmw7gwbJHDW5KR63e2OYv/ACX8gmwCCdN6cIuUPYrMhEFF0s6QBmLXQzXcKb6MW qmfdrhP42yAT2J//nCKTjiyqMjhWeDVyUVJPwdZb0+viXyq3yJ6gYEITkK38LNjWX3lPhnBuZNw zLsra9vTHb4qPwXbBt5zMcAiI5HdEueI7LR2jO9zAKUiiYGVJ51NwcnHEWbuuXUg51xY1j4MuXI n8Qfg1zwcJvdOyEKH2v7WfazqEoN5iyOIENFDG4Duy3jjke6+McGDBquBxGoiIbU1TUcAMyd+3M 1R28Rqu8DnQq/DlhLfOOEAkm6zKlv0Fjy7d5IbO7sMfPIXA691xx+kJE5ARE9qe X-Received: by 2002:a05:600c:810a:b0:495:737a:7afe with SMTP id 5b1f17b1804b1-499821fb5f9mr2578085e9.15.1786566602024; Wed, 12 Aug 2026 13:30:02 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.30.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:30:01 -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 v3 09/12] fs/ceph/super.h: add `const` to helpers Date: Wed, 12 Aug 2026 22:29:46 +0200 Message-ID: <20260812202950.1800340-10-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 04:09:38 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 650E41DA62E for ; Wed, 12 Aug 2026 20:30:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566609; cv=none; b=sUP1KV3oR8JZDzAR74h+M2qtTZ179E2WOI9YT+1e3j32rnEomPZeVzdtxMLKYpt6gk4kLrf8rBoHHLpCtMLJA0q5XbjdT+buPR49f11GpHtFokmCeHfJ2PhLPJkupsNs8ut8B+yO+NkAQ+sF8jt0LwkmbMzxotyNnfz7XiNsCLY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566609; c=relaxed/simple; bh=dg4XycQgbP52ff/jMZ+ruw0UIVZtZYKbyBYR8u9n6iU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ET2PHrt3g2/Wgi0G2U4upUTiJUraxs2LVx+dwW/SLvdFlEEnlSl4srL6547hsWnHHr/zMAh/QajL/RMR5KU/zdulrInWvxF/D/IxM0Zf2mzRSctoq3WMthfnYdFC2Az/V/Hyi1Sg23SJf15EgeBHC/YsoERHvyQcaS9VdfjUXOQ= 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=N93JHfts; arc=none smtp.client-ip=209.85.221.53 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="N93JHfts" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-47fde295992so207533f8f.0 for ; Wed, 12 Aug 2026 13:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566603; x=1787171403; 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=sr6Inj40Q52yIlmd6pGulinTuc3cDoTPWh/IL/dOKtI=; b=N93JHftsJ9XPsewJ7khKGz8RDmdM7P7TNQMa6MvkLcgDXXNdDBcsiikaui0Bazy0Yx 54cmb0KI8Yc0AWKfNEcy9H2f/TTwmQnGALM1tHCzxo3HVf+ze8wwL/X4BEvKQcjnDDfX /gQYrQEDSJAGew4y+/iz4JMt/TDGzwrrY8vHAr+ZSX1A9jSTerRH1KkoCrVwd8qd+btf JBWPNSYrmofRT4i9YZxT9uOEDjfycU1+T2x2RbnZF0yJj4uIVI45yZ2JBy5agRnQeXCK gJ4zgvmCrVKJxDEyXHDn3KWzGGRZoDZ0sCDVQk2AAByIAVWS7/3OvTPJ/JfguXS8nzcR /G+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566603; x=1787171403; 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=sr6Inj40Q52yIlmd6pGulinTuc3cDoTPWh/IL/dOKtI=; b=THeLaJyHdoUiz3A6Fqmqr7JzOXq7ZhOx/v/mthTv2sqAtTwq0wKBakBcljCe+N+Lki tvArBUH1Sr92aVhHAN1fYr3uQEZWEmchAVn9iNcLag9pjF3Kd1tQSLbgVlUzj/lilyZU mxrseQVVmLGjonfWW6yG4POmR+m0EHHfsc6LLFoxJhlWrlWUFQvdOu+ZgqnH+DZm+eJG uksUajO6tQhhHd/kyPvxuZBebtBiSHb7PtHOxtfB7ZLB8pvtvOa1HehADaqT5zNjHHL8 nLEshKfss8U3Iyez6vjV27eB6TJn4hS+AquzvORp1OssMCE1AWwVPreE8pFM2DZ/LXzA seAQ== X-Forwarded-Encrypted: i=1; AHgh+RpjWm+KNnPu6i/LoDkyesha18JkePcLE/RRv95Rp14YcKZnfv5vXR1ITdRsixuyxcsRgPhKe5SBcTYaV8U=@vger.kernel.org X-Gm-Message-State: AOJu0YxpslpDF7VcupG1ZFbFmQ9Q3nemKaheqIKoJA67vhf7BVQ13yyb 6BzrW8Rb8Mw4l900CGlxJt2RqtleikEIRYvDAlHnEFGwt06GiwZMBCQvvMn0FjbokUM= X-Gm-Gg: AR+sD11iASiv3lqC32e6eJVl1bR15MovtWN5GKtMyXORsoJ6hvSMtiCfZka1CcyBqDq LqWdEcD08p68MRbmwNWYmZzeZNSd/9dkUfSbgM6iwoo6HjhHA2xyqknLz/4PZAjoYHf5xIA1g5Q yqOZvwBOiaN16zB+zlXVxNEYspNeYdA90pzN97FJT7F412c4N5jV3WMhdTf3vfV9+YM1TJhup60 wzbKHeSZsNK27i8jHHyead2rx/aHI+JifF73DXQ7L2+Y3fKHtgXfXbarUZpWnLzPE/77rYQcE82 J+A7jEikT+w3X0cEs3pyXp9vaNXhl88aFZpBCZqthfZ6yN7NT2OXfLYMvMsJjIvBCMTVWziwq1s wI/IOL85pTQW1itz/g1qajlz6XJ6WvX7BqqsFhRgta4ugszPq8gFWWUpeRuqLLEdRiOcjHtDXUg j5ODMt8D2wyMGe3y21FvDTCjfBSRCr+PTvGbw3m7X5LUWlkvfE3FA7Wyl8aR2Cn5ITvDR7zFAZ7 LXWkBUXaLhlaPpJVoLbatH9FAay0xaVSfY537n67oKQ5MuN9TfkSuZyQZ6GIaCv X-Received: by 2002:a05:6000:2c0e:b0:481:314b:b041 with SMTP id ffacd0b85a97d-4815a5c9325mr304526f8f.7.1786566602654; Wed, 12 Aug 2026 13:30:02 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.30.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:30:02 -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 v3 10/12] fs/ceph/super.h: add helper ceph_in_snap() Date: Wed, 12 Aug 2026 22:29:47 +0200 Message-ID: <20260812202950.1800340-11-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 | 20 ++++++++++---------- 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, 47 insertions(+), 39 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 ef9e92e362d3..484f86f6155f 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; @@ -1207,7 +1207,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); @@ -1359,7 +1359,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) ? @@ -1488,7 +1488,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 @@ -1986,7 +1986,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; @@ -2070,7 +2070,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); @@ -2125,7 +2125,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_in_snap(&dir_ci->netfs.inode)) return; =20 /* who calls d_delete() should also disable dcache readdir */ 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 04:09:38 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 543B139CD1B for ; Wed, 12 Aug 2026 20:30:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566610; cv=none; b=CByZubA4VIbIDh4uer3G2O9qZ1MpO9HHe2mb3xIKTVGk+xpJuQxg0OXIaOUkymyvCG2hpSv29/tLkhZydVGJ0jBKue5LEGm4L7LcJxtSYBMG2ICexByCdnHb8ADcIn7O6jP6qZ3xOmVkHTfoVX2z+qKXnazHkfwC2PAZL2QjMz4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566610; c=relaxed/simple; bh=yU1VW+v7+vbT6B3wN45UIfC/BjVP2vAYyGNWNhw+BHw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F0gfc4Ezin4APNIk33l6NmXgRHRN185EkevVF+f06PtodZVXTQToMelinNSZStYLvTBXw0oZzN3MQEhZB5IKBDBw9oCiYmAspECrqDlp6r136GSCs6fFti+RAXQcIi3DlsX6l41OCmSrFPXPetBunhDwbAmZfJzJVVEFlxrFjSI= 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=CLyjPbVz; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="CLyjPbVz" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4954aff6088so9791155e9.3 for ; Wed, 12 Aug 2026 13:30:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566603; x=1787171403; 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=Q0GwsUU62a4nufC1hoAjEItpwFESwLtkTjaWIBNIOxQ=; b=CLyjPbVzAIvUNpUyyEy2ndZ+mF7puKJGrgTd1D93PjrWF+S+JgrGu7sV2mzozaueTf 2+BKoj4A8J5RFDt3pflw+fa8vQMQjtnuFGUVk023FPVEF+YaYx05vDpbyt1qmzmOaP2h qySCxJUryBKGlm1GctMvf7hIl5su4hhHrVgW6sGSk8gTaIYyucHz6ZVV9WxpiwyVj5q1 4A0emzpQdE1hkH7dm81RF9kGzYuasUr61c1gmINUROGmGu6UoCKICFd5SpsEGu1kv307 yacMhEj4ScgMkdXqjDZL7xU8LDCu/erhX8DRLB2zs58k4dfY29WbtmEAWGhyeiGnn89y u29A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566603; x=1787171403; 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=Q0GwsUU62a4nufC1hoAjEItpwFESwLtkTjaWIBNIOxQ=; b=Fx6AWxXZgqKJhm+IwooZi1RXlBxDhMgB3PFF4+B2UGh2E27bBlPkWnbnWRDN5NV/mo u0jkxot2aEdQJ6vQcpSqvT6B6LGifpJShOkmYbv/AjW7ZnJZMiybMJ6OYj0H5RJn0Kyy 2peo8do8O1ig3JoTwSe3dSGgOdhON8PkU9TmbhMgvvkpCI4wODv8ttkSbLDhD8l4A9yh EJLb0ERyqL61z2TPu5TaDYLI1Sy5N0vvjYV+kpN5gaYyVAPOnRvRjpT8g1NN97QDl5dW hSVwNwfXaV0LiGOQwcYlEg+UJgtk/WRE40Rp8f9xbf5xAJqsqlgDhCtfI6kZ76qwhKzY Rigg== X-Forwarded-Encrypted: i=1; AHgh+RrJOVSCx5rb0FEKSg306MvoXoREn+DIo4mfZSbbZusWagdwm1FFi/T0tzkuCCXaiZKra3O2MJX5Jp6pcAw=@vger.kernel.org X-Gm-Message-State: AOJu0YzCiKWYPM+mflybs1uc8+6QBuvvJFykvlRZBOBKGYhAmPagnlPg eSMT7x4/Nv+Tmp9oozdXlw5AmvIj5FRFrUdKiLIJZizI8NpXELuN0+wdEc2er91W/ck= X-Gm-Gg: AR+sD11l+9Qrg+ke8OWilAxX6kRmpDZkKk/MhinnVUSCFJFBJq38aITGrXLn1LeL725 D0LfOkvwpP07+04l5Q4fD2CZD8OglhQbgMKRlRGCgw0Ha8ghN9D/oks7ff9ykAvpJTl70ktXFWp fTLPNX0gCDvCVNQ8DCTIl3YVW5/ArdyTKr6hRQuRcyFocEPCWuAa5sSilmrTnGx7Ka16H1ckppb CpMMgVssqpJt5T0Wka2mE4K7KPc7Mqfg4STrl1PR4/5l1BU/g4zPzmDT5ZLTbP5wNKTLDGPPE8Y 9f3D6yjl7/kwplbMmtIgmH3rB80mzABELQLK0/HMXBdI3CcVnfyaj8T2XLCWHi+0qWRr84+PO2q nwG+ws9R/lsCMjHND+eLDVvHRY17KCrmsNwUnp4MHdZj4hsPWs0a6yLs/plme4kY2s51+YvuD90 6Rwa85/bbM73Wl0RKeKR/D1MEO7topT+hhC6j8Cy7YgrA2ZNIOjlJp8ap5eO9MqxFn/2dEzoLF6 hqXWYCXjfRsOWODCN7k89EKPu57k6u8sQixqVSUJ4d3fBHlfkui77hqG5PceItn X-Received: by 2002:a05:600c:6309:b0:493:cc25:9c0e with SMTP id 5b1f17b1804b1-499821cf32emr3273845e9.14.1786566603335; Wed, 12 Aug 2026 13:30:03 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.30.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:30:03 -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 v3 11/12] fs/ceph: use ceph_vino() etc. instead of accessing i_vino directly Date: Wed, 12 Aug 2026 22:29:48 +0200 Message-ID: <20260812202950.1800340-12-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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/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 ++-- 8 files changed, 20 insertions(+), 22 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/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 04:09:38 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 509D039D6F6 for ; Wed, 12 Aug 2026 20:30:07 +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=1786566610; cv=none; b=Eq0GIhCg7bFLmNMIBRm1U4aJXovyM9iouypf9XUNgGSyFGJn4lfGF9utjttrI5aiHhpv/OOUSN5mJnIdT8+/H2bSe5GHuIe9KMHVtECUAK/FczWxylg0UUVbBbNxNZR1BfrC36dVHL6CW/mrqndxn9kGPu9E9Sc0ATBYdg8DztA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786566610; c=relaxed/simple; bh=ItMu+kPTmFZnDgkl0OWkN0vhR8c+L6Q5g3sYeFtqIxA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BGWe8XBBdUHAGJ0z5T3xa8VYym4e+ufFrUDRpVk1lnfsVRmyC00J8ip0NyM8WIa85QmwLcLU2BuBa4tu/JctUZQIwxF9o+gkn9kmY6ZiwSLTZ9mjyq98v+AuM42/bWqjk02s7yzKJF3ljKgqpDlCltzPNBO6AcrL8SO/5iC+96Y= 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=HuJfhdlN; 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="HuJfhdlN" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-47f703a9e5dso664222f8f.0 for ; Wed, 12 Aug 2026 13:30:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1786566604; x=1787171404; 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=XrwzJCwKgkiHPJrVYexM5E0v3kPPNtTc3vEMJzL4u4Y=; b=HuJfhdlNWY7CjLaDwOXPfYnvjTtv2XA8b3Gbo/4zuxvre84d6aiwPbZYBL3HR33SI3 euAbxXFwuzjmGmIZh7hfd6exzzWtkwqsoyOF7VBE5UJTiRkcHC6J581P4Dj1EhGoPh7R YVQY08nQ3zu1bHwM6tXVUZky7aeIuN29/Swi8DukFAwVn9r/xGu0XS6ecxCRezenRyrH nSWZ9YN1W9OzZ0yMGYuHu3WPtRsJBZtCj6SPbgf1W7aHKyz1emlBZpwz30nSIKdPpxwx UfgMbdzX0Ry81OSipzGtssYucSQmMhEk5JzgVv2mlyJgiQNL3n5OScIAuFijg+QFuw/P CYjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786566604; x=1787171404; 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=XrwzJCwKgkiHPJrVYexM5E0v3kPPNtTc3vEMJzL4u4Y=; b=TSwDUVwV5ovUcqizY7qUqXQ04kYzeFPUqgPvjzJ+KXSnNBqyVejffTqFrwcA7bPd2A M1OHx2q7+vmMTXpYcgImh16F5MFPTeiu/VsccIvUFb5SjTe3HXydjjDb6FWfGz87xoN0 +ZjlcWP0OUaeAepOvjxBccHgfrZDSo+hRRj1rhn1/1uc12ZbDZ1EJ4oFSN10kQ8ZomMa YPZWaGJ3KrcBSwvlGsleYBMt6//sGwvoZsoW+msaJLyVIdXoM4gNUAfB9gg0XxeJzs3S k4W4im06zn+8M/0GJDy7muPwSAxyz4+H7q3EDh78ApXEPDANLoEfMt+L+ALAaNqcoh6T Kddg== X-Forwarded-Encrypted: i=1; AHgh+RpenuysgcScvfEK5brDG8Ia28LuoJ42qTCbzrkKzkORC/5135+AQsbIwzabr6SZTGaTe3Qu4YBZ4aO0g/U=@vger.kernel.org X-Gm-Message-State: AOJu0Yz5wSetuIxk+tKnPRCPADcy/5nMrrYATEYFpuLdsEndebeNnXQf wrkOChffvbVkckYX1Os5J0EcF7VJZrmZvBrEhITFpTgM+bo2DNzGYlaCtqaC4BrS0iQ= X-Gm-Gg: AR+sD12exf/ckzLq/7Xczx/+pe7/5dyMgEJikE3caYU8p696CqosRtAPSPxJVvJfcuG woEVlA4aUh86i67GKUA2WI0ZMaMsUlswrR3km+lCbyDyPT3S0Nnv2VmEmBGwfNG+Nl+KLGkZpfn 4L1++kwVRL1GJsESQzyOm0ydMK3SSg/Y8cHxsSMaSF4bWXPYJQyZw4QDqQlRYTFdVd3WzCwNxn2 Ce3TwJ9MxYFQ/UB7PjKjlCfMM7uR4Kk6qi8MmNcCTuOcTsiIFQcKdRSoIoNfjtphA9yNqp9pXQ7 SziXP8q39YQtVOqYBJCASi6fOGVlOFmVhScBhAOMERoJbURfBV+wtwkURJKeLnSnjQdrPhyA1e/ prWDDHsg8YA48P0YQruOHiK4p4/WP8tFw3pkbaEsJdXA3KRE1yi+O3iDey/SHZwZUFHtt8uFf5G lmTqa531k9KodgubfXAOJIZpqKeJKAd3gm59gFLtsvpXTQd0WC8QqZfTYEtSPcuCnV31NJ61Sm5 beCcOKFuz/x0eNIDFfOjId3CEfPcjblw94sDzmNFOQBqIEESHDT7WBzqQuAQY5b X-Received: by 2002:a5d:5589:0:b0:47d:fc23:abe8 with SMTP id ffacd0b85a97d-4815a00e64bmr720119f8f.28.1786566603971; Wed, 12 Aug 2026 13:30:03 -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-4815a569ab3sm328979f8f.11.2026.08.12.13.30.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 13:30:03 -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 v3 12/12] fs/ceph: remove redundant inode number from ceph_inode_info Date: Wed, 12 Aug 2026 22:29:49 +0200 Message-ID: <20260812202950.1800340-13-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260812202950.1800340-1-max.kellermann@ionos.com> References: <20260812202950.1800340-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 | 7 +++++++ fs/ceph/super.h | 23 +++++++++++++++++++++++ 3 files changed, 33 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..e82877782601 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -44,11 +44,18 @@ static void ceph_inode_work(struct work_struct *work); */ static int ceph_set_ino_cb(struct inode *inode, void *data) { + const struct ceph_vino *vino =3D data; 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