Matthew Wilcox <willy@xxxxxxxxxxxxx> writes: > On Mon, Mar 06, 2023 at 12:21:48PM +0530, Ritesh Harjani wrote: >> "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> 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? -ritesh > >> > } else if (fscrypt_inode_uses_fs_layer_crypto(inode)) { >> > for (i = 0; i < nr_wait; i++) { >> > int err2; >> > >> > - err2 = fscrypt_decrypt_pagecache_blocks(page, blocksize, >> > - bh_offset(wait[i])); >> > + err2 = fscrypt_decrypt_pagecache_blocks(&folio->page, >> > + blocksize, bh_offset(wait[i])); >> >> folio_decrypt_pagecache_blocks() takes folio as it's argument now. >> >> Other than that it looks good to me. Please feel free to add - >> Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> > > Thanks. I'll refresh this patchset next week. Sure. Thanks!