mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
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:
parent
cf62eb2c7a
commit
7c5c654c09
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user