[PATCH v1 06/16] iomap: move read/readahead logic out of CONFIG_BLOCK guard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There is no longer a dependency on CONFIG_BLOCK in the iomap read and
readahead logic. Move this logic out of the CONFIG_BLOCK guard.

Signed-off-by: Joanne Koong <joannelkoong@xxxxxxxxx>
---
 fs/iomap/buffered-io.c | 81 ++++++++++++++++++++++++------------------
 1 file changed, 46 insertions(+), 35 deletions(-)

diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c
index 8dd26c50e5ea..f26544fbcb36 100644
--- a/fs/iomap/buffered-io.c
+++ b/fs/iomap/buffered-io.c
@@ -317,6 +317,12 @@ static int iomap_read_inline_data(const struct iomap_iter *iter,
 	return 0;
 }
 
+struct iomap_readpage_ctx {
+	struct folio		*cur_folio;
+	bool			folio_unlocked;
+	struct readahead_control *rac;
+};
+
 #ifdef CONFIG_BLOCK
 static void iomap_finish_folio_read(struct folio *folio, size_t off,
 		size_t len, int error)
@@ -350,12 +356,6 @@ static void iomap_read_end_io(struct bio *bio)
 	bio_put(bio);
 }
 
-struct iomap_readpage_ctx {
-	struct folio		*cur_folio;
-	bool			folio_unlocked;
-	struct readahead_control *rac;
-};
-
 static void iomap_read_folio_range_async(struct iomap_iter *iter,
 		struct iomap_readpage_ctx *ctx, loff_t pos, size_t plen)
 {
@@ -404,6 +404,46 @@ static void iomap_read_folio_range_async(struct iomap_iter *iter,
 	}
 }
 
+static int iomap_read_folio_range_sync(const struct iomap_iter *iter,
+		struct folio *folio, loff_t pos, size_t len)
+{
+	const struct iomap *srcmap = iomap_iter_srcmap(iter);
+	struct bio_vec bvec;
+	struct bio bio;
+
+	bio_init(&bio, srcmap->bdev, &bvec, 1, REQ_OP_READ);
+	bio.bi_iter.bi_sector = iomap_sector(srcmap, pos);
+	bio_add_folio_nofail(&bio, folio, len, offset_in_folio(folio, pos));
+	return submit_bio_wait(&bio);
+}
+
+static void iomap_readfolio_submit(const struct iomap_iter *iter)
+{
+	struct bio *bio = iter->private;
+
+	if (bio)
+		submit_bio(bio);
+}
+#else
+static void iomap_read_folio_range_async(struct iomap_iter *iter,
+		struct iomap_readpage_ctx *ctx, loff_t pos, size_t len)
+{
+	WARN_ON_ONCE(1);
+}
+
+static int iomap_read_folio_range_sync(const struct iomap_iter *iter,
+		struct folio *folio, loff_t pos, size_t len)
+{
+	WARN_ON_ONCE(1);
+	return -EIO;
+}
+
+static void iomap_readfolio_submit(const struct iomap_iter *iter)
+{
+	WARN_ON_ONCE(1);
+}
+#endif /* CONFIG_BLOCK */
+
 static int iomap_readpage_iter(struct iomap_iter *iter,
 		struct iomap_readpage_ctx *ctx)
 {
@@ -445,14 +485,6 @@ static int iomap_readpage_iter(struct iomap_iter *iter,
 	return iomap_iter_advance(iter, &length);
 }
 
-static void iomap_readfolio_submit(const struct iomap_iter *iter)
-{
-	struct bio *bio = iter->private;
-
-	if (bio)
-		submit_bio(bio);
-}
-
 static void iomap_readfolio_complete(const struct iomap_iter *iter,
 		const struct iomap_readpage_ctx *ctx)
 {
@@ -558,27 +590,6 @@ void iomap_readahead(struct readahead_control *rac, const struct iomap_ops *ops)
 }
 EXPORT_SYMBOL_GPL(iomap_readahead);
 
-static int iomap_read_folio_range_sync(const struct iomap_iter *iter,
-		struct folio *folio, loff_t pos, size_t len)
-{
-	const struct iomap *srcmap = iomap_iter_srcmap(iter);
-	struct bio_vec bvec;
-	struct bio bio;
-
-	bio_init(&bio, srcmap->bdev, &bvec, 1, REQ_OP_READ);
-	bio.bi_iter.bi_sector = iomap_sector(srcmap, pos);
-	bio_add_folio_nofail(&bio, folio, len, offset_in_folio(folio, pos));
-	return submit_bio_wait(&bio);
-}
-#else
-static int iomap_read_folio_range_sync(const struct iomap_iter *iter,
-		struct folio *folio, loff_t pos, size_t len)
-{
-	WARN_ON_ONCE(1);
-	return -EIO;
-}
-#endif /* CONFIG_BLOCK */
-
 /*
  * iomap_is_partially_uptodate checks whether blocks within a folio are
  * uptodate or not.
-- 
2.47.3





[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux