Re: [PATCH 1/4] ceph: add ceph_folio_snap_context()

"Zi Yan" <[email protected]> Sun, 02 Aug 2026 18:44:07 -0400
Newsgroups org.kernel.vger.ceph-devel,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>
On Sun Aug 2, 2026 at 5:52 PM EDT, Matthew Wilcox wrote:
> On Sun, Aug 02, 2026 at 12:50:02PM -0400, Tal Zussman wrote:
>> +static inline struct ceph_snap_context *ceph_folio_snap_context(struct =
folio *folio)
>> +{
>> +	if (folio_test_private(folio))
>> +		return (void *)folio->private;
>> +	return NULL;
>> +}
>
> Filesystem folios _ought_to have folio->private as NULL when PG_private
> is unset and PG_private set when folio->private is non-NULL.  Now, ceph
> could be doing something Bad (I believe hugetlbfs does not honour this
> for various reasons), but it looks like it's using
> folio_attach_private() / folio_detach_private() appropriately.
>
> So I think we should just do:
>
> static inline
> struct ceph_snap_context *ceph_folio_snap_context(const struct folio *fol=
io)
> {
> 	return folio->private;
> }

Yes, please. So I do not need to handle another exceptional user when I
am trying to remove PG_private[1].

[1] https://lore.kernel.org/all/20260731-remove-pg_private-v1-0-142c97ba356=
[email protected]/
>
> (folio->private is already void *, so it doesn't need to be cast).
> Splitting the definition where I did puts the unimmportant information
> (static inline) on the previous line, so somebody grepping for
> ceph_folio_snap_context gets the return type, while not breaking 80
> columns.




--=20
Best Regards,
Yan, Zi