All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] Additional patches for 5.18
@ 2022-03-30 14:49 Matthew Wilcox (Oracle)
  2022-03-30 14:49 ` [PATCH 01/12] readahead: Remove read_cache_pages() Matthew Wilcox (Oracle)
                   ` (14 more replies)
  0 siblings, 15 replies; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

These are some misc patches that I'm going to send to Linus in a
couple of days.  Nothing earth-shattering, but no reason to delay them
to the next merge window.  I've pushed them out to
https://git.infradead.org/users/willy/pagecache.git/shortlog/refs/heads/for-next
so they'll get a bit of testing in -next.

Matthew Wilcox (Oracle) (12):
  readahead: Remove read_cache_pages()
  fs: Remove ->readpages address space operation
  iomap: Simplify is_partially_uptodate a little
  fs: Remove read_actor_t
  fs, net: Move read_descriptor_t to net.h
  fs: Pass an iocb to generic_perform_write()
  filemap: Remove AOP_FLAG_CONT_EXPAND
  ext4: Correct ext4_journalled_dirty_folio() conversion
  f2fs: Correct f2fs_dirty_data_folio() conversion
  f2fs: Get the superblock from the mapping instead of the page
  ntfs: Correct mark_ntfs_record_dirty() folio conversion
  btrfs: Remove a use of PAGE_SIZE in btrfs_invalidate_folio()

 Documentation/filesystems/fsverity.rst |  6 +-
 Documentation/filesystems/locking.rst  |  6 --
 Documentation/filesystems/vfs.rst      | 11 ----
 fs/btrfs/inode.c                       |  2 +-
 fs/btrfs/reflink.c                     |  4 +-
 fs/buffer.c                            |  3 +-
 fs/ceph/file.c                         |  2 +-
 fs/cifs/cifssmb.c                      |  2 +-
 fs/cifs/inode.c                        |  2 +-
 fs/crypto/crypto.c                     |  2 +-
 fs/ext4/file.c                         |  2 +-
 fs/ext4/inode.c                        |  2 +-
 fs/ext4/readpage.c                     |  2 +-
 fs/f2fs/checkpoint.c                   |  2 +-
 fs/f2fs/data.c                         |  6 +-
 fs/f2fs/file.c                         |  2 +-
 fs/f2fs/node.c                         |  4 +-
 fs/fuse/fuse_i.h                       |  2 +-
 fs/iomap/buffered-io.c                 |  9 ++-
 fs/nfs/file.c                          |  2 +-
 fs/ntfs/aops.c                         |  2 +-
 fs/verity/verify.c                     |  4 +-
 include/linux/fs.h                     | 31 +--------
 include/linux/fsverity.h               |  2 +-
 include/linux/net.h                    | 19 ++++++
 include/linux/pagemap.h                |  2 -
 mm/filemap.c                           | 12 ++--
 mm/readahead.c                         | 91 +-------------------------
 28 files changed, 60 insertions(+), 176 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 01/12] readahead: Remove read_cache_pages()
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:51   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 02/12] fs: Remove ->readpages address space operation Matthew Wilcox (Oracle)
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

With no remaining users, remove this function and the related
infrastructure.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 include/linux/pagemap.h |  2 --
 mm/readahead.c          | 76 -----------------------------------------
 2 files changed, 78 deletions(-)

diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index a8d0b327b066..993994cd943a 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -752,8 +752,6 @@ struct page *read_cache_page(struct address_space *, pgoff_t index,
 		filler_t *filler, void *data);
 extern struct page * read_cache_page_gfp(struct address_space *mapping,
 				pgoff_t index, gfp_t gfp_mask);
-extern int read_cache_pages(struct address_space *mapping,
-		struct list_head *pages, filler_t *filler, void *data);
 
 static inline struct page *read_mapping_page(struct address_space *mapping,
 				pgoff_t index, struct file *file)
diff --git a/mm/readahead.c b/mm/readahead.c
index d3a47546d17d..9097af639beb 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -142,82 +142,6 @@ file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
 }
 EXPORT_SYMBOL_GPL(file_ra_state_init);
 
-/*
- * see if a page needs releasing upon read_cache_pages() failure
- * - the caller of read_cache_pages() may have set PG_private or PG_fscache
- *   before calling, such as the NFS fs marking pages that are cached locally
- *   on disk, thus we need to give the fs a chance to clean up in the event of
- *   an error
- */
-static void read_cache_pages_invalidate_page(struct address_space *mapping,
-					     struct page *page)
-{
-	if (page_has_private(page)) {
-		if (!trylock_page(page))
-			BUG();
-		page->mapping = mapping;
-		folio_invalidate(page_folio(page), 0, PAGE_SIZE);
-		page->mapping = NULL;
-		unlock_page(page);
-	}
-	put_page(page);
-}
-
-/*
- * release a list of pages, invalidating them first if need be
- */
-static void read_cache_pages_invalidate_pages(struct address_space *mapping,
-					      struct list_head *pages)
-{
-	struct page *victim;
-
-	while (!list_empty(pages)) {
-		victim = lru_to_page(pages);
-		list_del(&victim->lru);
-		read_cache_pages_invalidate_page(mapping, victim);
-	}
-}
-
-/**
- * read_cache_pages - populate an address space with some pages & start reads against them
- * @mapping: the address_space
- * @pages: The address of a list_head which contains the target pages.  These
- *   pages have their ->index populated and are otherwise uninitialised.
- * @filler: callback routine for filling a single page.
- * @data: private data for the callback routine.
- *
- * Hides the details of the LRU cache etc from the filesystems.
- *
- * Returns: %0 on success, error return by @filler otherwise
- */
-int read_cache_pages(struct address_space *mapping, struct list_head *pages,
-			int (*filler)(void *, struct page *), void *data)
-{
-	struct page *page;
-	int ret = 0;
-
-	while (!list_empty(pages)) {
-		page = lru_to_page(pages);
-		list_del(&page->lru);
-		if (add_to_page_cache_lru(page, mapping, page->index,
-				readahead_gfp_mask(mapping))) {
-			read_cache_pages_invalidate_page(mapping, page);
-			continue;
-		}
-		put_page(page);
-
-		ret = filler(data, page);
-		if (unlikely(ret)) {
-			read_cache_pages_invalidate_pages(mapping, pages);
-			break;
-		}
-		task_io_account_read(PAGE_SIZE);
-	}
-	return ret;
-}
-
-EXPORT_SYMBOL(read_cache_pages);
-
 static void read_pages(struct readahead_control *rac, struct list_head *pages,
 		bool skip_page)
 {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 02/12] fs: Remove ->readpages address space operation
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
  2022-03-30 14:49 ` [PATCH 01/12] readahead: Remove read_cache_pages() Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:51   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 03/12] iomap: Simplify is_partially_uptodate a little Matthew Wilcox (Oracle)
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

All filesystems have now been converted to use ->readahead, so
remove the ->readpages operation and fix all the comments that
used to refer to it.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 Documentation/filesystems/fsverity.rst |  6 +++---
 Documentation/filesystems/locking.rst  |  6 ------
 Documentation/filesystems/vfs.rst      | 11 -----------
 fs/btrfs/reflink.c                     |  4 ++--
 fs/cifs/cifssmb.c                      |  2 +-
 fs/cifs/inode.c                        |  2 +-
 fs/crypto/crypto.c                     |  2 +-
 fs/ext4/readpage.c                     |  2 +-
 fs/f2fs/data.c                         |  4 ++--
 fs/fuse/fuse_i.h                       |  2 +-
 fs/verity/verify.c                     |  4 ++--
 include/linux/fs.h                     |  6 ------
 include/linux/fsverity.h               |  2 +-
 mm/filemap.c                           |  2 +-
 mm/readahead.c                         | 15 ++-------------
 15 files changed, 18 insertions(+), 52 deletions(-)

diff --git a/Documentation/filesystems/fsverity.rst b/Documentation/filesystems/fsverity.rst
index 1d831e3cbcb3..8cc536d08f51 100644
--- a/Documentation/filesystems/fsverity.rst
+++ b/Documentation/filesystems/fsverity.rst
@@ -549,7 +549,7 @@ Pagecache
 ~~~~~~~~~
 
 For filesystems using Linux's pagecache, the ``->readpage()`` and
-``->readpages()`` methods must be modified to verify pages before they
+``->readahead()`` methods must be modified to verify pages before they
 are marked Uptodate.  Merely hooking ``->read_iter()`` would be
 insufficient, since ``->read_iter()`` is not used for memory maps.
 
@@ -611,7 +611,7 @@ workqueue, and then the workqueue work does the decryption or
 verification.  Finally, pages where no decryption or verity error
 occurred are marked Uptodate, and the pages are unlocked.
 
-Files on ext4 and f2fs may contain holes.  Normally, ``->readpages()``
+Files on ext4 and f2fs may contain holes.  Normally, ``->readahead()``
 simply zeroes holes and sets the corresponding pages Uptodate; no bios
 are issued.  To prevent this case from bypassing fs-verity, these
 filesystems use fsverity_verify_page() to verify hole pages.
@@ -778,7 +778,7 @@ weren't already directly answered in other parts of this document.
     - To prevent bypassing verification, pages must not be marked
       Uptodate until they've been verified.  Currently, each
       filesystem is responsible for marking pages Uptodate via
-      ``->readpages()``.  Therefore, currently it's not possible for
+      ``->readahead()``.  Therefore, currently it's not possible for
       the VFS to do the verification on its own.  Changing this would
       require significant changes to the VFS and all filesystems.
 
diff --git a/Documentation/filesystems/locking.rst b/Documentation/filesystems/locking.rst
index 2998cec9af4b..c26d854275a0 100644
--- a/Documentation/filesystems/locking.rst
+++ b/Documentation/filesystems/locking.rst
@@ -241,8 +241,6 @@ prototypes::
 	int (*writepages)(struct address_space *, struct writeback_control *);
 	bool (*dirty_folio)(struct address_space *, struct folio *folio);
 	void (*readahead)(struct readahead_control *);
-	int (*readpages)(struct file *filp, struct address_space *mapping,
-			struct list_head *pages, unsigned nr_pages);
 	int (*write_begin)(struct file *, struct address_space *mapping,
 				loff_t pos, unsigned len, unsigned flags,
 				struct page **pagep, void **fsdata);
@@ -274,7 +272,6 @@ readpage:		yes, unlocks				shared
 writepages:
 dirty_folio		maybe
 readahead:		yes, unlocks				shared
-readpages:		no					shared
 write_begin:		locks the page		 exclusive
 write_end:		yes, unlocks		 exclusive
 bmap:
@@ -300,9 +297,6 @@ completion.
 
 ->readahead() unlocks the pages that I/O is attempted on like ->readpage().
 
-->readpages() populates the pagecache with the passed pages and starts
-I/O against them.  They come unlocked upon I/O completion.
-
 ->writepage() is used for two purposes: for "memory cleansing" and for
 "sync".  These are quite different operations and the behaviour may differ
 depending upon the mode.
diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/vfs.rst
index 4f14edf93941..794bd1a66bfb 100644
--- a/Documentation/filesystems/vfs.rst
+++ b/Documentation/filesystems/vfs.rst
@@ -726,8 +726,6 @@ cache in your filesystem.  The following members are defined:
 		int (*writepages)(struct address_space *, struct writeback_control *);
 		bool (*dirty_folio)(struct address_space *, struct folio *);
 		void (*readahead)(struct readahead_control *);
-		int (*readpages)(struct file *filp, struct address_space *mapping,
-				 struct list_head *pages, unsigned nr_pages);
 		int (*write_begin)(struct file *, struct address_space *mapping,
 				   loff_t pos, unsigned len, unsigned flags,
 				struct page **pagep, void **fsdata);
@@ -817,15 +815,6 @@ cache in your filesystem.  The following members are defined:
 	completes successfully.  Setting PageError on any page will be
 	ignored; simply unlock the page if an I/O error occurs.
 
-``readpages``
-	called by the VM to read pages associated with the address_space
-	object.  This is essentially just a vector version of readpage.
-	Instead of just one page, several pages are requested.
-	readpages is only used for read-ahead, so read errors are
-	ignored.  If anything goes wrong, feel free to give up.
-	This interface is deprecated and will be removed by the end of
-	2020; implement readahead instead.
-
 ``write_begin``
 	Called by the generic buffered write code to ask the filesystem
 	to prepare to write len bytes at the given offset in the file.
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index 04a88bfe4fcf..998e3f180d90 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -645,7 +645,7 @@ static int btrfs_extent_same_range(struct inode *src, u64 loff, u64 len,
 	int ret;
 
 	/*
-	 * Lock destination range to serialize with concurrent readpages() and
+	 * Lock destination range to serialize with concurrent readahead() and
 	 * source range to serialize with relocation.
 	 */
 	btrfs_double_extent_lock(src, loff, dst, dst_loff, len);
@@ -739,7 +739,7 @@ static noinline int btrfs_clone_files(struct file *file, struct file *file_src,
 	}
 
 	/*
-	 * Lock destination range to serialize with concurrent readpages() and
+	 * Lock destination range to serialize with concurrent readahead() and
 	 * source range to serialize with relocation.
 	 */
 	btrfs_double_extent_lock(src, off, inode, destoff, len);
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 071e2f21a7db..bc3ded4f34f6 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -597,7 +597,7 @@ CIFSSMBNegotiate(const unsigned int xid,
 	set_credits(server, server->maxReq);
 	/* probably no need to store and check maxvcs */
 	server->maxBuf = le32_to_cpu(pSMBr->MaxBufferSize);
-	/* set up max_read for readpages check */
+	/* set up max_read for readahead check */
 	server->max_read = server->maxBuf;
 	server->max_rw = le32_to_cpu(pSMBr->MaxRawSize);
 	cifs_dbg(NOISY, "Max buf = %d\n", ses->server->maxBuf);
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 60d853c92f6a..2f9e7d2f81b6 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -49,7 +49,7 @@ static void cifs_set_ops(struct inode *inode)
 			inode->i_fop = &cifs_file_ops;
 		}
 
-		/* check if server can support readpages */
+		/* check if server can support readahead */
 		if (cifs_sb_master_tcon(cifs_sb)->ses->server->max_read <
 				PAGE_SIZE + MAX_CIFS_HDR_SIZE)
 			inode->i_data.a_ops = &cifs_addr_ops_smallbuf;
diff --git a/fs/crypto/crypto.c b/fs/crypto/crypto.c
index 4fcca79f39ae..526a4c1bed99 100644
--- a/fs/crypto/crypto.c
+++ b/fs/crypto/crypto.c
@@ -248,7 +248,7 @@ EXPORT_SYMBOL(fscrypt_encrypt_block_inplace);
  * which must still be locked and not uptodate.  Normally, blocksize ==
  * PAGE_SIZE and the whole page is decrypted at once.
  *
- * This is for use by the filesystem's ->readpages() method.
+ * This is for use by the filesystem's ->readahead() method.
  *
  * Return: 0 on success; -errno on failure
  */
diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
index 1aa26d6634fc..af491e170c4a 100644
--- a/fs/ext4/readpage.c
+++ b/fs/ext4/readpage.c
@@ -109,7 +109,7 @@ static void verity_work(struct work_struct *work)
 	struct bio *bio = ctx->bio;
 
 	/*
-	 * fsverity_verify_bio() may call readpages() again, and although verity
+	 * fsverity_verify_bio() may call readahead() again, and although verity
 	 * will be disabled for that, decryption may still be needed, causing
 	 * another bio_post_read_ctx to be allocated.  So to guarantee that
 	 * mempool_alloc() never deadlocks we must free the current ctx first.
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index f8fcbe91059b..c92920c8661d 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -164,7 +164,7 @@ static void f2fs_verify_bio(struct work_struct *work)
 	bool may_have_compressed_pages = (ctx->enabled_steps & STEP_DECOMPRESS);
 
 	/*
-	 * fsverity_verify_bio() may call readpages() again, and while verity
+	 * fsverity_verify_bio() may call readahead() again, and while verity
 	 * will be disabled for this, decryption and/or decompression may still
 	 * be needed, resulting in another bio_post_read_ctx being allocated.
 	 * So to prevent deadlocks we need to release the current ctx to the
@@ -2392,7 +2392,7 @@ static void f2fs_readahead(struct readahead_control *rac)
 	if (!f2fs_is_compress_backend_ready(inode))
 		return;
 
-	/* If the file has inline data, skip readpages */
+	/* If the file has inline data, skip readahead */
 	if (f2fs_has_inline_data(inode))
 		return;
 
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index eac4984cc753..488b460e046f 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -627,7 +627,7 @@ struct fuse_conn {
 	/** Connection successful.  Only set in INIT */
 	unsigned conn_init:1;
 
-	/** Do readpages asynchronously?  Only set in INIT */
+	/** Do readahead asynchronously?  Only set in INIT */
 	unsigned async_read:1;
 
 	/** Return an unique read error after abort.  Only set in INIT */
diff --git a/fs/verity/verify.c b/fs/verity/verify.c
index 0adb970f4e73..14e2fb49cff5 100644
--- a/fs/verity/verify.c
+++ b/fs/verity/verify.c
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Data verification functions, i.e. hooks for ->readpages()
+ * Data verification functions, i.e. hooks for ->readahead()
  *
  * Copyright 2019 Google LLC
  */
@@ -214,7 +214,7 @@ EXPORT_SYMBOL_GPL(fsverity_verify_page);
  * that fail verification are set to the Error state.  Verification is skipped
  * for pages already in the Error state, e.g. due to fscrypt decryption failure.
  *
- * This is a helper function for use by the ->readpages() method of filesystems
+ * This is a helper function for use by the ->readahead() method of filesystems
  * that issue bios to read data directly into the page cache.  Filesystems that
  * populate the page cache without issuing bios (e.g. non block-based
  * filesystems) must instead call fsverity_verify_page() directly on each page.
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 183160872133..7c81887cc7e8 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -370,12 +370,6 @@ struct address_space_operations {
 	/* Mark a folio dirty.  Return true if this dirtied it */
 	bool (*dirty_folio)(struct address_space *, struct folio *);
 
-	/*
-	 * Reads in the requested pages. Unlike ->readpage(), this is
-	 * PURELY used for read-ahead!.
-	 */
-	int (*readpages)(struct file *filp, struct address_space *mapping,
-			struct list_head *pages, unsigned nr_pages);
 	void (*readahead)(struct readahead_control *);
 
 	int (*write_begin)(struct file *, struct address_space *mapping,
diff --git a/include/linux/fsverity.h b/include/linux/fsverity.h
index b568b3c7d095..a7afc800bd8d 100644
--- a/include/linux/fsverity.h
+++ b/include/linux/fsverity.h
@@ -221,7 +221,7 @@ static inline void fsverity_enqueue_verify_work(struct work_struct *work)
  *
  * This checks whether ->i_verity_info has been set.
  *
- * Filesystems call this from ->readpages() to check whether the pages need to
+ * Filesystems call this from ->readahead() to check whether the pages need to
  * be verified or not.  Don't use IS_VERITY() for this purpose; it's subject to
  * a race condition where the file is being read concurrently with
  * FS_IOC_ENABLE_VERITY completing.  (S_VERITY is set before ->i_verity_info.)
diff --git a/mm/filemap.c b/mm/filemap.c
index 647d72bf23b6..d904cd7e4181 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2538,7 +2538,7 @@ static int filemap_create_folio(struct file *file,
 	 * the page cache as the locked folio would then be enough to
 	 * synchronize with hole punching. But there are code paths
 	 * such as filemap_update_page() filling in partially uptodate
-	 * pages or ->readpages() that need to hold invalidate_lock
+	 * pages or ->readahead() that need to hold invalidate_lock
 	 * while mapping blocks for IO so let's hold the lock here as
 	 * well to keep locking rules simple.
 	 */
diff --git a/mm/readahead.c b/mm/readahead.c
index 9097af639beb..297bd0719cda 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -170,13 +170,6 @@ static void read_pages(struct readahead_control *rac, struct list_head *pages,
 			unlock_page(page);
 			put_page(page);
 		}
-	} else if (aops->readpages) {
-		aops->readpages(rac->file, rac->mapping, pages,
-				readahead_count(rac));
-		/* Clean up the remaining pages */
-		put_pages_list(pages);
-		rac->_index += rac->_nr_pages;
-		rac->_nr_pages = 0;
 	} else {
 		while ((page = readahead_page(rac))) {
 			aops->readpage(rac->file, page);
@@ -253,10 +246,7 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 		folio = filemap_alloc_folio(gfp_mask, 0);
 		if (!folio)
 			break;
-		if (mapping->a_ops->readpages) {
-			folio->index = index + i;
-			list_add(&folio->lru, &page_pool);
-		} else if (filemap_add_folio(mapping, folio, index + i,
+		if (filemap_add_folio(mapping, folio, index + i,
 					gfp_mask) < 0) {
 			folio_put(folio);
 			read_pages(ractl, &page_pool, true);
@@ -318,8 +308,7 @@ void force_page_cache_ra(struct readahead_control *ractl,
 	struct backing_dev_info *bdi = inode_to_bdi(mapping->host);
 	unsigned long max_pages, index;
 
-	if (unlikely(!mapping->a_ops->readpage && !mapping->a_ops->readpages &&
-			!mapping->a_ops->readahead))
+	if (unlikely(!mapping->a_ops->readpage && !mapping->a_ops->readahead))
 		return;
 
 	/*
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 03/12] iomap: Simplify is_partially_uptodate a little
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
  2022-03-30 14:49 ` [PATCH 01/12] readahead: Remove read_cache_pages() Matthew Wilcox (Oracle)
  2022-03-30 14:49 ` [PATCH 02/12] fs: Remove ->readpages address space operation Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:52   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 04/12] fs: Remove read_actor_t Matthew Wilcox (Oracle)
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

Remove the unnecessary variable 'len' and fix a comment to refer to
the folio instead of the page.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/iomap/buffered-io.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c
index 49dccd9050f1..8ce8720093b9 100644
--- a/fs/iomap/buffered-io.c
+++ b/fs/iomap/buffered-io.c
@@ -435,18 +435,17 @@ bool iomap_is_partially_uptodate(struct folio *folio, size_t from, size_t count)
 {
 	struct iomap_page *iop = to_iomap_page(folio);
 	struct inode *inode = folio->mapping->host;
-	size_t len;
 	unsigned first, last, i;
 
 	if (!iop)
 		return false;
 
-	/* Limit range to this folio */
-	len = min(folio_size(folio) - from, count);
+	/* Caller's range may extend past the end of this folio */
+	count = min(folio_size(folio) - from, count);
 
-	/* First and last blocks in range within page */
+	/* First and last blocks in range within folio */
 	first = from >> inode->i_blkbits;
-	last = (from + len - 1) >> inode->i_blkbits;
+	last = (from + count - 1) >> inode->i_blkbits;
 
 	for (i = first; i <= last; i++)
 		if (!test_bit(i, iop->uptodate))
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 04/12] fs: Remove read_actor_t
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (2 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 03/12] iomap: Simplify is_partially_uptodate a little Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:52   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 05/12] fs, net: Move read_descriptor_t to net.h Matthew Wilcox (Oracle)
                   ` (10 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

This typedef is not used any more.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 include/linux/fs.h | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/include/linux/fs.h b/include/linux/fs.h
index 7c81887cc7e8..7588d3a0ced8 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -357,9 +357,6 @@ typedef struct {
 	int error;
 } read_descriptor_t;
 
-typedef int (*read_actor_t)(read_descriptor_t *, struct page *,
-		unsigned long, unsigned long);
-
 struct address_space_operations {
 	int (*writepage)(struct page *page, struct writeback_control *wbc);
 	int (*readpage)(struct file *, struct page *);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 05/12] fs, net: Move read_descriptor_t to net.h
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (3 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 04/12] fs: Remove read_actor_t Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:52   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 06/12] fs: Pass an iocb to generic_perform_write() Matthew Wilcox (Oracle)
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

fs.h has no more need for this typedef; networking is now the sole user
of the read_descriptor_t.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 include/linux/fs.h  | 19 -------------------
 include/linux/net.h | 19 +++++++++++++++++++
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/include/linux/fs.h b/include/linux/fs.h
index 7588d3a0ced8..8ff28939de60 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -338,25 +338,6 @@ static inline bool is_sync_kiocb(struct kiocb *kiocb)
 	return kiocb->ki_complete == NULL;
 }
 
-/*
- * "descriptor" for what we're up to with a read.
- * This allows us to use the same read code yet
- * have multiple different users of the data that
- * we read from a file.
- *
- * The simplest case just copies the data to user
- * mode.
- */
-typedef struct {
-	size_t written;
-	size_t count;
-	union {
-		char __user *buf;
-		void *data;
-	} arg;
-	int error;
-} read_descriptor_t;
-
 struct address_space_operations {
 	int (*writepage)(struct page *page, struct writeback_control *wbc);
 	int (*readpage)(struct file *, struct page *);
diff --git a/include/linux/net.h b/include/linux/net.h
index ba736b457a06..12093f4db50c 100644
--- a/include/linux/net.h
+++ b/include/linux/net.h
@@ -125,6 +125,25 @@ struct socket {
 	struct socket_wq	wq;
 };
 
+/*
+ * "descriptor" for what we're up to with a read.
+ * This allows us to use the same read code yet
+ * have multiple different users of the data that
+ * we read from a file.
+ *
+ * The simplest case just copies the data to user
+ * mode.
+ */
+typedef struct {
+	size_t written;
+	size_t count;
+	union {
+		char __user *buf;
+		void *data;
+	} arg;
+	int error;
+} read_descriptor_t;
+
 struct vm_area_struct;
 struct page;
 struct sockaddr;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 06/12] fs: Pass an iocb to generic_perform_write()
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (4 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 05/12] fs, net: Move read_descriptor_t to net.h Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:49 ` [PATCH 07/12] filemap: Remove AOP_FLAG_CONT_EXPAND Matthew Wilcox (Oracle)
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Matthew Wilcox (Oracle), Christoph Hellwig, Christian Brauner

We can extract both the file pointer and the pos from the iocb.
This simplifies each caller as well as allowing generic_perform_write()
to see more of the iocb contents in the future.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Christian Brauner <brauner@kernel.org>
---
 fs/ceph/file.c     |  2 +-
 fs/ext4/file.c     |  2 +-
 fs/f2fs/file.c     |  2 +-
 fs/nfs/file.c      |  2 +-
 include/linux/fs.h |  2 +-
 mm/filemap.c       | 10 ++++++----
 6 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index feb75eb1cd82..6c9e837aa1d3 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -1869,7 +1869,7 @@ static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from)
 		 * are pending vmtruncate. So write and vmtruncate
 		 * can not run at the same time
 		 */
-		written = generic_perform_write(file, from, pos);
+		written = generic_perform_write(iocb, from);
 		if (likely(written >= 0))
 			iocb->ki_pos = pos + written;
 		ceph_end_io_write(inode);
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 8bd66cdc41be..6feb07e3e1eb 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -267,7 +267,7 @@ static ssize_t ext4_buffered_write_iter(struct kiocb *iocb,
 		goto out;
 
 	current->backing_dev_info = inode_to_bdi(inode);
-	ret = generic_perform_write(iocb->ki_filp, from, iocb->ki_pos);
+	ret = generic_perform_write(iocb, from);
 	current->backing_dev_info = NULL;
 
 out:
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index d3f39a704b8b..5b89af0f27f0 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -4448,7 +4448,7 @@ static ssize_t f2fs_buffered_write_iter(struct kiocb *iocb,
 		return -EOPNOTSUPP;
 
 	current->backing_dev_info = inode_to_bdi(inode);
-	ret = generic_perform_write(file, from, iocb->ki_pos);
+	ret = generic_perform_write(iocb, from);
 	current->backing_dev_info = NULL;
 
 	if (ret > 0) {
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index b0ca244c50d0..150b7fa8f0a7 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -646,7 +646,7 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
 	result = generic_write_checks(iocb, from);
 	if (result > 0) {
 		current->backing_dev_info = inode_to_bdi(inode);
-		result = generic_perform_write(file, from, iocb->ki_pos);
+		result = generic_perform_write(iocb, from);
 		current->backing_dev_info = NULL;
 	}
 	nfs_end_io_write(inode);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 8ff28939de60..468dc7ec821f 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2999,7 +2999,7 @@ extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *);
 extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *);
 extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *);
 extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *);
-extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t);
+ssize_t generic_perform_write(struct kiocb *, struct iov_iter *);
 
 ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
 		rwf_t flags);
diff --git a/mm/filemap.c b/mm/filemap.c
index d904cd7e4181..3a5ffb5587cd 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -3752,9 +3752,10 @@ generic_file_direct_write(struct kiocb *iocb, struct iov_iter *from)
 }
 EXPORT_SYMBOL(generic_file_direct_write);
 
-ssize_t generic_perform_write(struct file *file,
-				struct iov_iter *i, loff_t pos)
+ssize_t generic_perform_write(struct kiocb *iocb, struct iov_iter *i)
 {
+	struct file *file = iocb->ki_filp;
+	loff_t pos = iocb->ki_pos;
 	struct address_space *mapping = file->f_mapping;
 	const struct address_space_operations *a_ops = mapping->a_ops;
 	long status = 0;
@@ -3884,7 +3885,8 @@ ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
 		if (written < 0 || !iov_iter_count(from) || IS_DAX(inode))
 			goto out;
 
-		status = generic_perform_write(file, from, pos = iocb->ki_pos);
+		pos = iocb->ki_pos;
+		status = generic_perform_write(iocb, from);
 		/*
 		 * If generic_perform_write() returned a synchronous error
 		 * then we want to return the number of bytes which were
@@ -3916,7 +3918,7 @@ ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
 			 */
 		}
 	} else {
-		written = generic_perform_write(file, from, iocb->ki_pos);
+		written = generic_perform_write(iocb, from);
 		if (likely(written > 0))
 			iocb->ki_pos += written;
 	}
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 07/12] filemap: Remove AOP_FLAG_CONT_EXPAND
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (5 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 06/12] fs: Pass an iocb to generic_perform_write() Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:52   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 08/12] ext4: Correct ext4_journalled_dirty_folio() conversion Matthew Wilcox (Oracle)
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

This flag is no longer used, so remove it.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/buffer.c        | 3 +--
 include/linux/fs.h | 1 -
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/fs/buffer.c b/fs/buffer.c
index d67fbe063a3a..2b5561ae5d0b 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2352,8 +2352,7 @@ int generic_cont_expand_simple(struct inode *inode, loff_t size)
 	if (err)
 		goto out;
 
-	err = pagecache_write_begin(NULL, mapping, size, 0,
-				    AOP_FLAG_CONT_EXPAND, &page, &fsdata);
+	err = pagecache_write_begin(NULL, mapping, size, 0, 0, &page, &fsdata);
 	if (err)
 		goto out;
 
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 468dc7ec821f..bbde95387a23 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -275,7 +275,6 @@ enum positive_aop_returns {
 	AOP_TRUNCATED_PAGE	= 0x80001,
 };
 
-#define AOP_FLAG_CONT_EXPAND		0x0001 /* called from cont_expand */
 #define AOP_FLAG_NOFS			0x0002 /* used by filesystem to direct
 						* helper code (eg buffer layer)
 						* to clear GFP_FS from alloc */
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 08/12] ext4: Correct ext4_journalled_dirty_folio() conversion
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (6 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 07/12] filemap: Remove AOP_FLAG_CONT_EXPAND Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:53   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 09/12] f2fs: Correct f2fs_dirty_data_folio() conversion Matthew Wilcox (Oracle)
                   ` (6 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

This should use the new folio_buffers() instead of page_has_buffers().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/ext4/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 1ce13f69fbec..13740f2d0e61 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -3589,7 +3589,7 @@ const struct iomap_ops ext4_iomap_report_ops = {
 static bool ext4_journalled_dirty_folio(struct address_space *mapping,
 		struct folio *folio)
 {
-	WARN_ON_ONCE(!page_has_buffers(&folio->page));
+	WARN_ON_ONCE(!folio_buffers(folio));
 	folio_set_checked(folio);
 	return filemap_dirty_folio(mapping, folio);
 }
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 09/12] f2fs: Correct f2fs_dirty_data_folio() conversion
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (7 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 08/12] ext4: Correct ext4_journalled_dirty_folio() conversion Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:53   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 10/12] f2fs: Get the superblock from the mapping instead of the page Matthew Wilcox (Oracle)
                   ` (5 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

I got the return value wrong.  Very little checks the return value
from set_page_dirty(), so nobody noticed during testing.

Fixes: 4f5e34f71318 ("f2fs: Convert f2fs_set_data_page_dirty to f2fs_dirty_data_folio")
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/f2fs/data.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index c92920c8661d..8e0c2e773c8d 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -3571,7 +3571,7 @@ static bool f2fs_dirty_data_folio(struct address_space *mapping,
 		f2fs_update_dirty_folio(inode, folio);
 		return true;
 	}
-	return true;
+	return false;
 }
 
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 10/12] f2fs: Get the superblock from the mapping instead of the page
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (8 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 09/12] f2fs: Correct f2fs_dirty_data_folio() conversion Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:49 ` [PATCH 11/12] ntfs: Correct mark_ntfs_record_dirty() folio conversion Matthew Wilcox (Oracle)
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

It's slightly more efficient to go directly from the mapping to the
superblock than to go from the page.  Now that these routines have
the mapping passed to them, there's no reason not to use it.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/f2fs/checkpoint.c | 2 +-
 fs/f2fs/node.c       | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index a8fc4fa511a8..f5366feea82d 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -456,7 +456,7 @@ static bool f2fs_dirty_meta_folio(struct address_space *mapping,
 		folio_mark_uptodate(folio);
 	if (!folio_test_dirty(folio)) {
 		filemap_dirty_folio(mapping, folio);
-		inc_page_count(F2FS_P_SB(&folio->page), F2FS_DIRTY_META);
+		inc_page_count(F2FS_M_SB(mapping), F2FS_DIRTY_META);
 		set_page_private_reference(&folio->page);
 		return true;
 	}
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 0b6e741e94a0..c45d341dcf6e 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -2146,11 +2146,11 @@ static bool f2fs_dirty_node_folio(struct address_space *mapping,
 		folio_mark_uptodate(folio);
 #ifdef CONFIG_F2FS_CHECK_FS
 	if (IS_INODE(&folio->page))
-		f2fs_inode_chksum_set(F2FS_P_SB(&folio->page), &folio->page);
+		f2fs_inode_chksum_set(F2FS_M_SB(mapping), &folio->page);
 #endif
 	if (!folio_test_dirty(folio)) {
 		filemap_dirty_folio(mapping, folio);
-		inc_page_count(F2FS_P_SB(&folio->page), F2FS_DIRTY_NODES);
+		inc_page_count(F2FS_M_SB(mapping), F2FS_DIRTY_NODES);
 		set_page_private_reference(&folio->page);
 		return true;
 	}
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 11/12] ntfs: Correct mark_ntfs_record_dirty() folio conversion
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (9 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 10/12] f2fs: Get the superblock from the mapping instead of the page Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:53   ` Christoph Hellwig
  2022-03-30 14:49 ` [PATCH 12/12] btrfs: Remove a use of PAGE_SIZE in btrfs_invalidate_folio() Matthew Wilcox (Oracle)
                   ` (3 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

We've already done the work of block_dirty_folio() here, leaving
only the work that needs to be done by filemap_dirty_folio().
This was a misconversion where I misread __set_page_dirty_nobuffers()
as __set_page_dirty_buffers().

Fixes: e621900ad28b ("fs: Convert __set_page_dirty_buffers to block_dirty_folio")
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/ntfs/aops.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c
index d154dcfe06af..90e3dad8ee45 100644
--- a/fs/ntfs/aops.c
+++ b/fs/ntfs/aops.c
@@ -1746,7 +1746,7 @@ void mark_ntfs_record_dirty(struct page *page, const unsigned int ofs) {
 		set_buffer_dirty(bh);
 	} while ((bh = bh->b_this_page) != head);
 	spin_unlock(&mapping->private_lock);
-	block_dirty_folio(mapping, page_folio(page));
+	filemap_dirty_folio(mapping, page_folio(page));
 	if (unlikely(buffers_to_free)) {
 		do {
 			bh = buffers_to_free->b_this_page;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 12/12] btrfs: Remove a use of PAGE_SIZE in btrfs_invalidate_folio()
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (10 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 11/12] ntfs: Correct mark_ntfs_record_dirty() folio conversion Matthew Wilcox (Oracle)
@ 2022-03-30 14:49 ` Matthew Wilcox (Oracle)
  2022-03-30 14:53   ` Christoph Hellwig
  2022-03-31 12:35 ` [PATCH 13/12] mm: remove the pages argument to read_pages Christoph Hellwig
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox (Oracle) @ 2022-03-30 14:49 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Matthew Wilcox (Oracle)

While btrfs doesn't use large folios yet, this should have been changed
as part of the conversion from invalidatepage to invalidate_folio.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/btrfs/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index aa0a60ee26cb..6bfc4343c98d 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8296,7 +8296,7 @@ static void btrfs_invalidate_folio(struct folio *folio, size_t offset,
 	 * cover the full folio, like invalidating the last folio, we're
 	 * still safe to wait for ordered extent to finish.
 	 */
-	if (!(offset == 0 && length == PAGE_SIZE)) {
+	if (!(offset == 0 && length == folio_size(folio))) {
 		btrfs_releasepage(&folio->page, GFP_NOFS);
 		return;
 	}
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: [PATCH 01/12] readahead: Remove read_cache_pages()
  2022-03-30 14:49 ` [PATCH 01/12] readahead: Remove read_cache_pages() Matthew Wilcox (Oracle)
@ 2022-03-30 14:51   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:51 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:19PM +0100, Matthew Wilcox (Oracle) wrote:
> With no remaining users, remove this function and the related
> infrastructure.
> 
> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 02/12] fs: Remove ->readpages address space operation
  2022-03-30 14:49 ` [PATCH 02/12] fs: Remove ->readpages address space operation Matthew Wilcox (Oracle)
@ 2022-03-30 14:51   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:51 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:20PM +0100, Matthew Wilcox (Oracle) wrote:
> All filesystems have now been converted to use ->readahead, so
> remove the ->readpages operation and fix all the comments that
> used to refer to it.

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 03/12] iomap: Simplify is_partially_uptodate a little
  2022-03-30 14:49 ` [PATCH 03/12] iomap: Simplify is_partially_uptodate a little Matthew Wilcox (Oracle)
@ 2022-03-30 14:52   ` Christoph Hellwig
  2022-03-30 16:00     ` Matthew Wilcox
  0 siblings, 1 reply; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:52 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:21PM +0100, Matthew Wilcox (Oracle) wrote:
> Remove the unnecessary variable 'len' and fix a comment to refer to
> the folio instead of the page.

I'd rather keep the len name instead of count, but either way this looks
ok:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 04/12] fs: Remove read_actor_t
  2022-03-30 14:49 ` [PATCH 04/12] fs: Remove read_actor_t Matthew Wilcox (Oracle)
@ 2022-03-30 14:52   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:52 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:22PM +0100, Matthew Wilcox (Oracle) wrote:
> This typedef is not used any more.

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 05/12] fs, net: Move read_descriptor_t to net.h
  2022-03-30 14:49 ` [PATCH 05/12] fs, net: Move read_descriptor_t to net.h Matthew Wilcox (Oracle)
@ 2022-03-30 14:52   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:52 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:23PM +0100, Matthew Wilcox (Oracle) wrote:
> fs.h has no more need for this typedef; networking is now the sole user
> of the read_descriptor_t.

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 07/12] filemap: Remove AOP_FLAG_CONT_EXPAND
  2022-03-30 14:49 ` [PATCH 07/12] filemap: Remove AOP_FLAG_CONT_EXPAND Matthew Wilcox (Oracle)
@ 2022-03-30 14:52   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:52 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:25PM +0100, Matthew Wilcox (Oracle) wrote:
> This flag is no longer used, so remove it.

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 08/12] ext4: Correct ext4_journalled_dirty_folio() conversion
  2022-03-30 14:49 ` [PATCH 08/12] ext4: Correct ext4_journalled_dirty_folio() conversion Matthew Wilcox (Oracle)
@ 2022-03-30 14:53   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:53 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 09/12] f2fs: Correct f2fs_dirty_data_folio() conversion
  2022-03-30 14:49 ` [PATCH 09/12] f2fs: Correct f2fs_dirty_data_folio() conversion Matthew Wilcox (Oracle)
@ 2022-03-30 14:53   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:53 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:27PM +0100, Matthew Wilcox (Oracle) wrote:
> I got the return value wrong.  Very little checks the return value
> from set_page_dirty(), so nobody noticed during testing.

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 11/12] ntfs: Correct mark_ntfs_record_dirty() folio conversion
  2022-03-30 14:49 ` [PATCH 11/12] ntfs: Correct mark_ntfs_record_dirty() folio conversion Matthew Wilcox (Oracle)
@ 2022-03-30 14:53   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:53 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:29PM +0100, Matthew Wilcox (Oracle) wrote:
> We've already done the work of block_dirty_folio() here, leaving
> only the work that needs to be done by filemap_dirty_folio().
> This was a misconversion where I misread __set_page_dirty_nobuffers()
> as __set_page_dirty_buffers().

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 12/12] btrfs: Remove a use of PAGE_SIZE in btrfs_invalidate_folio()
  2022-03-30 14:49 ` [PATCH 12/12] btrfs: Remove a use of PAGE_SIZE in btrfs_invalidate_folio() Matthew Wilcox (Oracle)
@ 2022-03-30 14:53   ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-30 14:53 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:30PM +0100, Matthew Wilcox (Oracle) wrote:
> While btrfs doesn't use large folios yet, this should have been changed
> as part of the conversion from invalidatepage to invalidate_folio.

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 03/12] iomap: Simplify is_partially_uptodate a little
  2022-03-30 14:52   ` Christoph Hellwig
@ 2022-03-30 16:00     ` Matthew Wilcox
  2022-03-31 12:33       ` Christoph Hellwig
  0 siblings, 1 reply; 29+ messages in thread
From: Matthew Wilcox @ 2022-03-30 16:00 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 07:52:11AM -0700, Christoph Hellwig wrote:
> On Wed, Mar 30, 2022 at 03:49:21PM +0100, Matthew Wilcox (Oracle) wrote:
> > Remove the unnecessary variable 'len' and fix a comment to refer to
> > the folio instead of the page.
> 
> I'd rather keep the len name instead of count, but either way this looks
> ok:

Heh, that was the way I did it first.  But block_is_partially_uptodate()
uses 'count', include/linux/fs.h calls it 'count' and one of the two
callers in mm/filemap.c calls it 'count', so I thought it was probably
best to not call it len.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 03/12] iomap: Simplify is_partially_uptodate a little
  2022-03-30 16:00     ` Matthew Wilcox
@ 2022-03-31 12:33       ` Christoph Hellwig
  0 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-31 12:33 UTC (permalink / raw)
  To: Matthew Wilcox; +Cc: Christoph Hellwig, linux-fsdevel

On Wed, Mar 30, 2022 at 05:00:21PM +0100, Matthew Wilcox wrote:
> On Wed, Mar 30, 2022 at 07:52:11AM -0700, Christoph Hellwig wrote:
> > On Wed, Mar 30, 2022 at 03:49:21PM +0100, Matthew Wilcox (Oracle) wrote:
> > > Remove the unnecessary variable 'len' and fix a comment to refer to
> > > the folio instead of the page.
> > 
> > I'd rather keep the len name instead of count, but either way this looks
> > ok:
> 
> Heh, that was the way I did it first.  But block_is_partially_uptodate()
> uses 'count', include/linux/fs.h calls it 'count' and one of the two
> callers in mm/filemap.c calls it 'count', so I thought it was probably
> best to not call it len.

As said I'm fine either way, but len seems more descriptiv here.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 13/12] mm: remove the pages argument to read_pages
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (11 preceding siblings ...)
  2022-03-30 14:49 ` [PATCH 12/12] btrfs: Remove a use of PAGE_SIZE in btrfs_invalidate_folio() Matthew Wilcox (Oracle)
@ 2022-03-31 12:35 ` Christoph Hellwig
  2022-03-31 13:50   ` Matthew Wilcox
  2022-03-31 12:35 ` [PATCH 14/12] mm: remove the skip_page " Christoph Hellwig
  2022-03-31 23:32 ` [PATCH 00/12] Additional patches for 5.18 Al Viro
  14 siblings, 1 reply; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-31 12:35 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

From: Christoph Hellwig <hch@lst.de>

This is always an empty list or NULL with the removal of the ->readahead
support, so remove it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 mm/readahead.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/mm/readahead.c b/mm/readahead.c
index 297bd0719cda9..05207a663801f 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -142,8 +142,7 @@ file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
 }
 EXPORT_SYMBOL_GPL(file_ra_state_init);
 
-static void read_pages(struct readahead_control *rac, struct list_head *pages,
-		bool skip_page)
+static void read_pages(struct readahead_control *rac, bool skip_page)
 {
 	const struct address_space_operations *aops = rac->mapping->a_ops;
 	struct page *page;
@@ -179,7 +178,6 @@ static void read_pages(struct readahead_control *rac, struct list_head *pages,
 
 	blk_finish_plug(&plug);
 
-	BUG_ON(pages && !list_empty(pages));
 	BUG_ON(readahead_count(rac));
 
 out:
@@ -206,7 +204,6 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 {
 	struct address_space *mapping = ractl->mapping;
 	unsigned long index = readahead_index(ractl);
-	LIST_HEAD(page_pool);
 	gfp_t gfp_mask = readahead_gfp_mask(mapping);
 	unsigned long i;
 
@@ -238,7 +235,7 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 			 * have a stable reference to this page, and it's
 			 * not worth getting one just for that.
 			 */
-			read_pages(ractl, &page_pool, true);
+			read_pages(ractl, true);
 			i = ractl->_index + ractl->_nr_pages - index - 1;
 			continue;
 		}
@@ -249,7 +246,7 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 		if (filemap_add_folio(mapping, folio, index + i,
 					gfp_mask) < 0) {
 			folio_put(folio);
-			read_pages(ractl, &page_pool, true);
+			read_pages(ractl, true);
 			i = ractl->_index + ractl->_nr_pages - index - 1;
 			continue;
 		}
@@ -263,7 +260,7 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 	 * uptodate then the caller will launch readpage again, and
 	 * will then handle the error.
 	 */
-	read_pages(ractl, &page_pool, false);
+	read_pages(ractl, false);
 	filemap_invalidate_unlock_shared(mapping);
 	memalloc_nofs_restore(nofs);
 }
@@ -537,7 +534,7 @@ void page_cache_ra_order(struct readahead_control *ractl,
 		ra->async_size += index - limit - 1;
 	}
 
-	read_pages(ractl, NULL, false);
+	read_pages(ractl, false);
 
 	/*
 	 * If there were already pages in the page cache, then we may have
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 14/12] mm: remove the skip_page argument to read_pages
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (12 preceding siblings ...)
  2022-03-31 12:35 ` [PATCH 13/12] mm: remove the pages argument to read_pages Christoph Hellwig
@ 2022-03-31 12:35 ` Christoph Hellwig
  2022-03-31 23:32 ` [PATCH 00/12] Additional patches for 5.18 Al Viro
  14 siblings, 0 replies; 29+ messages in thread
From: Christoph Hellwig @ 2022-03-31 12:35 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

From: Christoph Hellwig <hch@lst.de>

The skip_page argument to read_pages controls if rac->_index is
incremented before returning from the function.  Just open code that in
the callers.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 mm/readahead.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/mm/readahead.c b/mm/readahead.c
index 05207a663801f..2e5c695b303d7 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -142,14 +142,14 @@ file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
 }
 EXPORT_SYMBOL_GPL(file_ra_state_init);
 
-static void read_pages(struct readahead_control *rac, bool skip_page)
+static void read_pages(struct readahead_control *rac)
 {
 	const struct address_space_operations *aops = rac->mapping->a_ops;
 	struct page *page;
 	struct blk_plug plug;
 
 	if (!readahead_count(rac))
-		goto out;
+		return;
 
 	blk_start_plug(&plug);
 
@@ -179,10 +179,6 @@ static void read_pages(struct readahead_control *rac, bool skip_page)
 	blk_finish_plug(&plug);
 
 	BUG_ON(readahead_count(rac));
-
-out:
-	if (skip_page)
-		rac->_index++;
 }
 
 /**
@@ -235,7 +231,8 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 			 * have a stable reference to this page, and it's
 			 * not worth getting one just for that.
 			 */
-			read_pages(ractl, true);
+			read_pages(ractl);
+			ractl->_index++;
 			i = ractl->_index + ractl->_nr_pages - index - 1;
 			continue;
 		}
@@ -246,7 +243,8 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 		if (filemap_add_folio(mapping, folio, index + i,
 					gfp_mask) < 0) {
 			folio_put(folio);
-			read_pages(ractl, true);
+			read_pages(ractl);
+			ractl->_index++;
 			i = ractl->_index + ractl->_nr_pages - index - 1;
 			continue;
 		}
@@ -260,7 +258,7 @@ void page_cache_ra_unbounded(struct readahead_control *ractl,
 	 * uptodate then the caller will launch readpage again, and
 	 * will then handle the error.
 	 */
-	read_pages(ractl, false);
+	read_pages(ractl);
 	filemap_invalidate_unlock_shared(mapping);
 	memalloc_nofs_restore(nofs);
 }
@@ -534,7 +532,7 @@ void page_cache_ra_order(struct readahead_control *ractl,
 		ra->async_size += index - limit - 1;
 	}
 
-	read_pages(ractl, false);
+	read_pages(ractl);
 
 	/*
 	 * If there were already pages in the page cache, then we may have
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: [PATCH 13/12] mm: remove the pages argument to read_pages
  2022-03-31 12:35 ` [PATCH 13/12] mm: remove the pages argument to read_pages Christoph Hellwig
@ 2022-03-31 13:50   ` Matthew Wilcox
  0 siblings, 0 replies; 29+ messages in thread
From: Matthew Wilcox @ 2022-03-31 13:50 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: linux-fsdevel

On Thu, Mar 31, 2022 at 05:35:23AM -0700, Christoph Hellwig wrote:
> From: Christoph Hellwig <hch@lst.de>
> 
> This is always an empty list or NULL with the removal of the ->readahead
> support, so remove it.

Thanks, I meant to do this and forgot.  Added this patch.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 00/12] Additional patches for 5.18
  2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
                   ` (13 preceding siblings ...)
  2022-03-31 12:35 ` [PATCH 14/12] mm: remove the skip_page " Christoph Hellwig
@ 2022-03-31 23:32 ` Al Viro
  14 siblings, 0 replies; 29+ messages in thread
From: Al Viro @ 2022-03-31 23:32 UTC (permalink / raw)
  To: Matthew Wilcox (Oracle); +Cc: linux-fsdevel

On Wed, Mar 30, 2022 at 03:49:18PM +0100, Matthew Wilcox (Oracle) wrote:
> These are some misc patches that I'm going to send to Linus in a
> couple of days.  Nothing earth-shattering, but no reason to delay them
> to the next merge window.  I've pushed them out to
> https://git.infradead.org/users/willy/pagecache.git/shortlog/refs/heads/for-next
> so they'll get a bit of testing in -next.

Looks sane.  Feel free to slap my Reviewed-by: and Acked-by: on those

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2022-03-31 23:32 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-30 14:49 [PATCH 00/12] Additional patches for 5.18 Matthew Wilcox (Oracle)
2022-03-30 14:49 ` [PATCH 01/12] readahead: Remove read_cache_pages() Matthew Wilcox (Oracle)
2022-03-30 14:51   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 02/12] fs: Remove ->readpages address space operation Matthew Wilcox (Oracle)
2022-03-30 14:51   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 03/12] iomap: Simplify is_partially_uptodate a little Matthew Wilcox (Oracle)
2022-03-30 14:52   ` Christoph Hellwig
2022-03-30 16:00     ` Matthew Wilcox
2022-03-31 12:33       ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 04/12] fs: Remove read_actor_t Matthew Wilcox (Oracle)
2022-03-30 14:52   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 05/12] fs, net: Move read_descriptor_t to net.h Matthew Wilcox (Oracle)
2022-03-30 14:52   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 06/12] fs: Pass an iocb to generic_perform_write() Matthew Wilcox (Oracle)
2022-03-30 14:49 ` [PATCH 07/12] filemap: Remove AOP_FLAG_CONT_EXPAND Matthew Wilcox (Oracle)
2022-03-30 14:52   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 08/12] ext4: Correct ext4_journalled_dirty_folio() conversion Matthew Wilcox (Oracle)
2022-03-30 14:53   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 09/12] f2fs: Correct f2fs_dirty_data_folio() conversion Matthew Wilcox (Oracle)
2022-03-30 14:53   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 10/12] f2fs: Get the superblock from the mapping instead of the page Matthew Wilcox (Oracle)
2022-03-30 14:49 ` [PATCH 11/12] ntfs: Correct mark_ntfs_record_dirty() folio conversion Matthew Wilcox (Oracle)
2022-03-30 14:53   ` Christoph Hellwig
2022-03-30 14:49 ` [PATCH 12/12] btrfs: Remove a use of PAGE_SIZE in btrfs_invalidate_folio() Matthew Wilcox (Oracle)
2022-03-30 14:53   ` Christoph Hellwig
2022-03-31 12:35 ` [PATCH 13/12] mm: remove the pages argument to read_pages Christoph Hellwig
2022-03-31 13:50   ` Matthew Wilcox
2022-03-31 12:35 ` [PATCH 14/12] mm: remove the skip_page " Christoph Hellwig
2022-03-31 23:32 ` [PATCH 00/12] Additional patches for 5.18 Al Viro

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.