All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phillip Lougher <phillip@squashfs.org.uk>
To: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-fsdevel@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 22/30] squashfs: Convert squashfs_symlink_read_folio to use folio APIs
Date: Sun, 28 Apr 2024 22:40:01 +0100	[thread overview]
Message-ID: <87af91eb-e5cb-473f-9724-35d7dab41736@squashfs.org.uk> (raw)
In-Reply-To: <20240420025029.2166544-23-willy@infradead.org>

On 20/04/2024 03:50, Matthew Wilcox (Oracle) wrote:
> Remove use of page APIs, return the errno instead of 0, switch from
> kmap_atomic to kmap_local and use folio_end_read() to unify the two
> exit paths.
> 
> Cc: Phillip Lougher <phillip@squashfs.org.uk>
> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>

Tested-by: Phillip Lougher <phillip@squashfs.org.uk>
Reviewed-by: Phillip Lougher <phillip@squashfs.org.uk>

You've mentioned a couple of times you prefer the patches in
the series to go through the fs maintainers.  Andrew Morton is
currently handling submission of Squashfs patches for me, and
I'm happy with either Andrew or you merging it.

CC'ing Andrew.

Regards

Phillip

> ---
>   fs/squashfs/symlink.c | 35 ++++++++++++++++-------------------
>   1 file changed, 16 insertions(+), 19 deletions(-)
> 
> diff --git a/fs/squashfs/symlink.c b/fs/squashfs/symlink.c
> index 2bf977a52c2c..6ef735bd841a 100644
> --- a/fs/squashfs/symlink.c
> +++ b/fs/squashfs/symlink.c
> @@ -32,20 +32,19 @@
>   
>   static int squashfs_symlink_read_folio(struct file *file, struct folio *folio)
>   {
> -	struct page *page = &folio->page;
> -	struct inode *inode = page->mapping->host;
> +	struct inode *inode = folio->mapping->host;
>   	struct super_block *sb = inode->i_sb;
>   	struct squashfs_sb_info *msblk = sb->s_fs_info;
> -	int index = page->index << PAGE_SHIFT;
> +	int index = folio_pos(folio);
>   	u64 block = squashfs_i(inode)->start;
>   	int offset = squashfs_i(inode)->offset;
>   	int length = min_t(int, i_size_read(inode) - index, PAGE_SIZE);
> -	int bytes, copied;
> +	int bytes, copied, error;
>   	void *pageaddr;
>   	struct squashfs_cache_entry *entry;
>   
>   	TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
> -			"%llx, offset %x\n", page->index, block, offset);
> +			"%llx, offset %x\n", folio->index, block, offset);
>   
>   	/*
>   	 * Skip index bytes into symlink metadata.
> @@ -57,14 +56,15 @@ static int squashfs_symlink_read_folio(struct file *file, struct folio *folio)
>   			ERROR("Unable to read symlink [%llx:%x]\n",
>   				squashfs_i(inode)->start,
>   				squashfs_i(inode)->offset);
> -			goto error_out;
> +			error = bytes;
> +			goto out;
>   		}
>   	}
>   
>   	/*
>   	 * Read length bytes from symlink metadata.  Squashfs_read_metadata
>   	 * is not used here because it can sleep and we want to use
> -	 * kmap_atomic to map the page.  Instead call the underlying
> +	 * kmap_local to map the folio.  Instead call the underlying
>   	 * squashfs_cache_get routine.  As length bytes may overlap metadata
>   	 * blocks, we may need to call squashfs_cache_get multiple times.
>   	 */
> @@ -75,29 +75,26 @@ static int squashfs_symlink_read_folio(struct file *file, struct folio *folio)
>   				squashfs_i(inode)->start,
>   				squashfs_i(inode)->offset);
>   			squashfs_cache_put(entry);
> -			goto error_out;
> +			error = entry->error;
> +			goto out;
>   		}
>   
> -		pageaddr = kmap_atomic(page);
> +		pageaddr = kmap_local_folio(folio, 0);
>   		copied = squashfs_copy_data(pageaddr + bytes, entry, offset,
>   								length - bytes);
>   		if (copied == length - bytes)
>   			memset(pageaddr + length, 0, PAGE_SIZE - length);
>   		else
>   			block = entry->next_index;
> -		kunmap_atomic(pageaddr);
> +		kunmap_local(pageaddr);
>   		squashfs_cache_put(entry);
>   	}
>   
> -	flush_dcache_page(page);
> -	SetPageUptodate(page);
> -	unlock_page(page);
> -	return 0;
> -
> -error_out:
> -	SetPageError(page);
> -	unlock_page(page);
> -	return 0;
> +	flush_dcache_folio(folio);
> +	error = 0;
> +out:
> +	folio_end_read(folio, error == 0);
> +	return error;
>   }
>   
>   


  reply	other threads:[~2024-04-28 21:59 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-20  2:49 [PATCH 00/30] Remove PG_error flag Matthew Wilcox (Oracle)
2024-04-20  2:49 ` [PATCH 01/30] btrfs: Use a folio in wait_dev_supers() Matthew Wilcox (Oracle)
2024-04-23 12:25   ` Johannes Thumshirn
2024-04-20  2:49 ` [PATCH 02/30] btrfs: Use a folio in write_dev_supers() Matthew Wilcox (Oracle)
2024-04-23 12:26   ` Johannes Thumshirn
2024-04-25 14:44   ` David Sterba
2024-04-25 16:38     ` Matthew Wilcox
2024-04-20  2:49 ` [PATCH 03/30] btrfs: Use the folio iterator in btrfs_end_super_write() Matthew Wilcox (Oracle)
2024-04-23 12:26   ` Johannes Thumshirn
2024-04-20  2:49 ` [PATCH 04/30] btrfs: Remove use of the folio error flag Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 05/30] jfs: Remove use of " Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 06/30] bcachefs: Remove calls to folio_set_error Matthew Wilcox (Oracle)
2024-04-20  3:04   ` Kent Overstreet
2024-04-20  2:50 ` [PATCH 07/30] befs: Convert befs_symlink_read_folio() to use folio_end_read() Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 08/30] coda: Convert coda_symlink_filler() " Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 09/30] ext2: Remove call to folio_set_error() Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 10/30] ext4: Remove calls to to set/clear the folio error flag Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 11/30] fuse: Convert fuse_readpages_end() to use folio_end_read() Matthew Wilcox (Oracle)
2024-04-22 15:20   ` Miklos Szeredi
2024-04-20  2:50 ` [PATCH 12/30] hostfs: Convert hostfs_read_folio() to use a folio Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 13/30] isofs: Remove calls to set/clear the error flag Matthew Wilcox (Oracle)
2024-04-22 21:57   ` Jan Kara
2024-04-23 17:51     ` Matthew Wilcox
2024-04-23 21:22       ` Jan Kara
2024-04-20  2:50 ` [PATCH 14/30] jffs2: Remove calls to set/clear the folio " Matthew Wilcox (Oracle)
2024-04-20  2:50   ` Matthew Wilcox (Oracle)
2024-04-22 14:46   ` Zhihao Cheng
2024-04-22 14:46     ` Zhihao Cheng
2024-04-22 15:56     ` Richard Weinberger
2024-04-22 15:56       ` Richard Weinberger
2024-04-20  2:50 ` [PATCH 15/30] nfs: Remove calls to folio_set_error Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 16/30] nilfs2: Remove calls to folio_set_error() and folio_clear_error() Matthew Wilcox (Oracle)
2024-04-23 16:36   ` Ryusuke Konishi
2024-04-23 17:51     ` Matthew Wilcox
2024-04-23 17:58       ` Ryusuke Konishi
2024-04-20  2:50 ` [PATCH 17/30] ntfs3: Remove calls to set/clear the error flag Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 18/30] orangefs: " Matthew Wilcox (Oracle)
2024-04-24 18:02   ` Mike Marshall
2024-04-20  2:50 ` [PATCH 19/30] reiserfs: Remove call to folio_set_error() Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 20/30] romfs: Convert romfs_read_folio() to use a folio Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 21/30] smb: Remove calls to set folio error flag Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 22/30] squashfs: Convert squashfs_symlink_read_folio to use folio APIs Matthew Wilcox (Oracle)
2024-04-28 21:40   ` Phillip Lougher [this message]
2024-04-20  2:50 ` [PATCH 23/30] squashfs: Remove calls to set the folio error flag Matthew Wilcox (Oracle)
2024-04-28 21:42   ` Phillip Lougher
2024-04-20  2:50 ` [PATCH 24/30] ufs: Remove call " Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 25/30] vboxsf: Convert vboxsf_read_folio() to use a folio Matthew Wilcox (Oracle)
2024-04-22 10:59   ` Hans de Goede
2024-04-20  2:50 ` [PATCH 26/30] mm/memory-failure: Stop setting the folio error flag Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 27/30] iomap: Remove calls to set and clear " Matthew Wilcox (Oracle)
2024-04-22  6:16   ` Christoph Hellwig
2024-04-22 15:05     ` Matthew Wilcox
2024-04-22 15:26       ` Christoph Hellwig
2024-04-22 17:51         ` Matthew Wilcox
2024-04-25 12:23           ` Christoph Hellwig
2024-04-25 12:44             ` Matthew Wilcox
2024-04-25 12:51               ` Christoph Hellwig
2024-04-25 16:47                 ` Darrick J. Wong
2024-04-25 16:55   ` Darrick J. Wong
2024-04-20  2:50 ` [PATCH 28/30] buffer: Remove calls to set and clear the " Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 29/30] fs: " Matthew Wilcox (Oracle)
2024-04-20  2:50 ` [PATCH 30/30] mm: Remove PG_error Matthew Wilcox (Oracle)
2024-05-09  4:26 ` [PATCH 00/30] Remove PG_error flag Theodore Ts'o

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=87af91eb-e5cb-473f-9724-35d7dab41736@squashfs.org.uk \
    --to=phillip@squashfs.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=willy@infradead.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.