All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-nilfs@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [PATCH 31/35] nilfs2: Convert nilfs_add_link() to use a folio
Date: Mon,  6 Nov 2023 17:38:59 +0000	[thread overview]
Message-ID: <20231106173903.1734114-32-willy@infradead.org> (raw)
In-Reply-To: <20231106173903.1734114-1-willy@infradead.org>

Remove six calls to compound_head() by using the folio API.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/nilfs2/dir.c | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/fs/nilfs2/dir.c b/fs/nilfs2/dir.c
index 25a468dda0f3..fd4f99a7f402 100644
--- a/fs/nilfs2/dir.c
+++ b/fs/nilfs2/dir.c
@@ -440,30 +440,28 @@ int nilfs_add_link(struct dentry *dentry, struct inode *inode)
 	unsigned int chunk_size = nilfs_chunk_size(dir);
 	unsigned int reclen = NILFS_DIR_REC_LEN(namelen);
 	unsigned short rec_len, name_len;
-	struct page *page = NULL;
+	struct folio *folio = NULL;
 	struct nilfs_dir_entry *de;
 	unsigned long npages = dir_pages(dir);
 	unsigned long n;
-	char *kaddr;
-	unsigned int from, to;
+	size_t from, to;
 	int err;
 
 	/*
 	 * We take care of directory expansion in the same loop.
-	 * This code plays outside i_size, so it locks the page
+	 * This code plays outside i_size, so it locks the folio
 	 * to protect that region.
 	 */
 	for (n = 0; n <= npages; n++) {
+		char *kaddr = nilfs_get_folio(dir, n, &folio);
 		char *dir_end;
 
-		kaddr = nilfs_get_page(dir, n, &page);
-		err = PTR_ERR(kaddr);
 		if (IS_ERR(kaddr))
-			goto out;
-		lock_page(page);
+			return PTR_ERR(kaddr);
+		folio_lock(folio);
 		dir_end = kaddr + nilfs_last_byte(dir, n);
 		de = (struct nilfs_dir_entry *)kaddr;
-		kaddr += PAGE_SIZE - reclen;
+		kaddr += folio_size(folio) - reclen;
 		while ((char *)de <= kaddr) {
 			if ((char *)de == dir_end) {
 				/* We hit i_size */
@@ -490,16 +488,16 @@ int nilfs_add_link(struct dentry *dentry, struct inode *inode)
 				goto got_it;
 			de = (struct nilfs_dir_entry *)((char *)de + rec_len);
 		}
-		unlock_page(page);
-		unmap_and_put_page(page, kaddr);
+		folio_unlock(folio);
+		folio_release_kmap(folio, kaddr);
 	}
 	BUG();
 	return -EINVAL;
 
 got_it:
-	from = offset_in_page(de);
+	from = offset_in_folio(folio, de);
 	to = from + rec_len;
-	err = nilfs_prepare_chunk(page, from, to);
+	err = nilfs_prepare_chunk(&folio->page, from, to);
 	if (err)
 		goto out_unlock;
 	if (de->inode) {
@@ -514,16 +512,15 @@ int nilfs_add_link(struct dentry *dentry, struct inode *inode)
 	memcpy(de->name, name, namelen);
 	de->inode = cpu_to_le64(inode->i_ino);
 	nilfs_set_de_type(de, inode);
-	nilfs_commit_chunk(page, page->mapping, from, to);
+	nilfs_commit_chunk(&folio->page, folio->mapping, from, to);
 	inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
 	nilfs_mark_inode_dirty(dir);
 	/* OFFSET_CACHE */
 out_put:
-	unmap_and_put_page(page, de);
-out:
+	folio_release_kmap(folio, de);
 	return err;
 out_unlock:
-	unlock_page(page);
+	folio_unlock(folio);
 	goto out_put;
 }
 
-- 
2.42.0


  parent reply	other threads:[~2023-11-06 17:39 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-06 17:38 [PATCH 00/35] nilfs2: Folio conversions Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 01/35] nilfs2: Add nilfs_end_folio_io() Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 02/35] nilfs2: Convert nilfs_abort_logs to use folios Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 03/35] nilfs2: Convert nilfs_segctor_complete_write " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 04/35] nilfs2: Convert nilfs_forget_buffer to use a folio Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 05/35] nilfs2: Convert to nilfs_folio_buffers_clean() Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 06/35] nilfs2: Convert nilfs_writepage() to use a folio Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 07/35] nilfs2: Convert nilfs_mdt_write_page() " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 08/35] nilfs2: Convert to nilfs_clear_folio_dirty() Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 09/35] nilfs2: Convert to __nilfs_clear_folio_dirty() Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 10/35] nilfs2: Convert nilfs_segctor_prepare_write to use folios Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 11/35] nilfs2: Convert nilfs_page_mkwrite() to use a folio Matthew Wilcox (Oracle)
2023-11-09 13:11   ` Ryusuke Konishi
2023-11-09 13:37     ` Matthew Wilcox
2023-11-09 14:22       ` Ryusuke Konishi
2023-11-06 17:38 ` [PATCH 12/35] nilfs2: Convert nilfs_mdt_create_block " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 13/35] nilfs2: Convert nilfs_mdt_submit_block " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 14/35] nilfs2: Convert nilfs_gccache_submit_read_data " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 15/35] nilfs2: Convert nilfs_btnode_create_block " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 16/35] nilfs2: Convert nilfs_btnode_submit_block " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 17/35] nilfs2: Convert nilfs_btnode_delete " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 18/35] nilfs2: Convert nilfs_btnode_prepare_change_key " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 19/35] nilfs2: Convert nilfs_btnode_commit_change_key " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 20/35] nilfs2: Convert nilfs_btnode_abort_change_key " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 21/35] nilfs2: Remove page_address() from nilfs_set_link Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 22/35] nilfs2: Remove page_address() from nilfs_add_link Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 23/35] nilfs2: Remove page_address() from nilfs_delete_entry Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 24/35] nilfs2: Return the mapped address from nilfs_get_page() Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 25/35] nilfs2: Pass the mapped address to nilfs_check_page() Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 26/35] nilfs2: Switch to kmap_local for directory handling Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 27/35] nilfs2: Add nilfs_get_folio() Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 28/35] nilfs2: Convert nilfs_readdir to use a folio Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 29/35] nilfs2: Convert nilfs_find_entry " Matthew Wilcox (Oracle)
2023-11-06 17:38 ` [PATCH 30/35] nilfs2: Convert nilfs_rename() to use folios Matthew Wilcox (Oracle)
2023-11-06 17:38 ` Matthew Wilcox (Oracle) [this message]
2023-11-06 17:39 ` [PATCH 32/35] nilfs2: Convert nilfs_empty_dir() to use a folio Matthew Wilcox (Oracle)
2023-11-06 17:39 ` [PATCH 33/35] nilfs2: Convert nilfs_make_empty() " Matthew Wilcox (Oracle)
2023-11-06 17:39 ` [PATCH 34/35] nilfs2: Convert nilfs_prepare_chunk() and nilfs_commit_chunk() to folios Matthew Wilcox (Oracle)
2023-11-06 17:39 ` [PATCH 35/35] nilfs2: Convert nilfs_page_bug() to nilfs_folio_bug() Matthew Wilcox (Oracle)
2023-11-07  1:49 ` [PATCH 00/35] nilfs2: Folio conversions Ryusuke Konishi
2023-11-12  0:10   ` Ryusuke Konishi
2023-11-21 17:43     ` Ryusuke Konishi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231106173903.1734114-32-willy@infradead.org \
    --to=willy@infradead.org \
    --cc=konishi.ryusuke@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-nilfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.