lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 15 Mar 2023 20:27:50 +0530 From: Ritesh Harjani (IBM) <ritesh.list@...il.com> To: Matthew Wilcox <willy@...radead.org> Cc: Theodore Tso <tytso@....edu>, Andreas Dilger <adilger.kernel@...ger.ca>, linux-ext4@...r.kernel.org, linux-fsdevel@...r.kernel.org Subject: Re: [PATCH 25/31] ext4: Convert ext4_block_write_begin() to take a folio Matthew Wilcox <willy@...radead.org> writes: > On Mon, Mar 06, 2023 at 08:51:45PM +0530, Ritesh Harjani wrote: >> Matthew Wilcox <willy@...radead.org> writes: >> >> > On Mon, Mar 06, 2023 at 12:21:48PM +0530, Ritesh Harjani wrote: >> >> "Matthew Wilcox (Oracle)" <willy@...radead.org> writes: >> >> >> >> > All the callers now have a folio, so pass that in and operate on folios. >> >> > Removes four calls to compound_head(). >> >> >> >> Why do you say four? Isn't it 3 calls of PageUptodate(page) which >> >> removes calls to compound_head()? Which one did I miss? >> >> >> >> > - BUG_ON(!PageLocked(page)); >> >> > + BUG_ON(!folio_test_locked(folio)); >> > >> > That one ;-) >> >> __PAGEFLAG(Locked, locked, PF_NO_TAIL) >> >> #define __PAGEFLAG(uname, lname, policy) \ >> TESTPAGEFLAG(uname, lname, policy) \ >> __SETPAGEFLAG(uname, lname, policy) \ >> __CLEARPAGEFLAG(uname, lname, policy) >> >> #define TESTPAGEFLAG(uname, lname, policy) \ >> static __always_inline bool folio_test_##lname(struct folio *folio) \ >> { return test_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \ >> static __always_inline int Page##uname(struct page *page) \ >> { return test_bit(PG_##lname, &policy(page, 0)->flags); } >> >> How? PageLocked(page) doesn't do any compount_head() calls no? > > You missed one piece of the definition ... > > #define PF_NO_TAIL(page, enforce) ({ \ > VM_BUG_ON_PGFLAGS(enforce && PageTail(page), page); \ > PF_POISONED_CHECK(compound_head(page)); }) aah yes, right. Thanks for pointing it. -ritesh
Powered by blists - more mailing lists