nilfs2: convert nilfs_btnode_prepare_change_key to use a folio

Saves three calls to compound_head().

Link: https://lkml.kernel.org/r/20231114084436.2755-19-konishi.ryusuke@gmail.com
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Matthew Wilcox (Oracle) 2023-11-14 17:44:34 +09:00 committed by Andrew Morton
parent cf62eb2c7a
commit 7c5c654c09

View File

@ -185,23 +185,23 @@ int nilfs_btnode_prepare_change_key(struct address_space *btnc,
ctxt->newbh = NULL;
if (inode->i_blkbits == PAGE_SHIFT) {
struct page *opage = obh->b_page;
lock_page(opage);
struct folio *ofolio = obh->b_folio;
folio_lock(ofolio);
retry:
/* BUG_ON(oldkey != obh->b_folio->index); */
if (unlikely(oldkey != opage->index))
NILFS_PAGE_BUG(opage,
if (unlikely(oldkey != ofolio->index))
NILFS_PAGE_BUG(&ofolio->page,
"invalid oldkey %lld (newkey=%lld)",
(unsigned long long)oldkey,
(unsigned long long)newkey);
xa_lock_irq(&btnc->i_pages);
err = __xa_insert(&btnc->i_pages, newkey, opage, GFP_NOFS);
err = __xa_insert(&btnc->i_pages, newkey, ofolio, GFP_NOFS);
xa_unlock_irq(&btnc->i_pages);
/*
* Note: page->index will not change to newkey until
* Note: folio->index will not change to newkey until
* nilfs_btnode_commit_change_key() will be called.
* To protect the page in intermediate state, the page lock
* To protect the folio in intermediate state, the folio lock
* is held.
*/
if (!err)
@ -213,7 +213,7 @@ retry:
if (!err)
goto retry;
/* fallback to copy mode */
unlock_page(opage);
folio_unlock(ofolio);
}
nbh = nilfs_btnode_create_block(btnc, newkey);
@ -225,7 +225,7 @@ retry:
return 0;
failed_unlock:
unlock_page(obh->b_page);
folio_unlock(obh->b_folio);
return err;
}