[Devel] [PATCH RHEL7 COMMIT] ploop: Kill __dio_io_page()

Konstantin Khorenko khorenko at virtuozzo.com
Fri Jul 5 10:50:08 MSK 2019


The commit is pushed to "branch-rh7-3.10.0-957.21.3.vz7.106.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-957.21.3.vz7.106.4
------>
commit bbaf33fb8d70f3e2a9b2b495e0b981c4335a50b3
Author: Kirill Tkhai <ktkhai at virtuozzo.com>
Date:   Fri Jul 5 10:50:05 2019 +0300

    ploop: Kill __dio_io_page()
    
    As now clearly seen, functions dio_make_io() and
    __dio_io_page() are identical, so let's stop
    to hate a reader and remove the duplicate code.
    
    Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 drivers/block/ploop/io_direct.c | 92 ++---------------------------------------
 1 file changed, 3 insertions(+), 89 deletions(-)

diff --git a/drivers/block/ploop/io_direct.c b/drivers/block/ploop/io_direct.c
index 092a79bb4522..0bf97ad76ce2 100644
--- a/drivers/block/ploop/io_direct.c
+++ b/drivers/block/ploop/io_direct.c
@@ -1299,94 +1299,6 @@ static int dio_alloc_sync(struct ploop_io * io, loff_t pos, loff_t len)
 	return err;
 }
 
-static int
-__dio_io_page(struct ploop_io *io, unsigned long rw, struct page *page,
-	    sector_t sec, bio_end_io_t *bi_end_io, void *bi_private)
-{
-	struct bio_list bl = BIO_EMPTY_LIST;
-	struct bio * bio;
-	unsigned int len;
-	struct extent_map * em;
-	sector_t nsec;
-	int nr_bios = 0;
-	int err;
-	int off;
-
-	bio = NULL;
-	em = NULL;
-	off = 0;
-
-	len = PAGE_SIZE;
-
-	while (len > 0) {
-		int copy;
-
-		if (!em || sec >= em->end) {
-			if (em)
-				ploop_extent_put(em);
-			em = extent_lookup_create(io, sec, len>>9);
-			if (IS_ERR(em))
-				goto out_em_err;
-		}
-
-		nsec = dio_isec_to_phys(em, sec);
-
-		if (bio == NULL ||
-		    bio->bi_sector + (bio->bi_size>>9) != nsec) {
-flush_bio:
-			bio = bio_alloc(GFP_NOFS, 32);
-			if (bio == NULL)
-				goto enomem;
-			bio_list_add(&bl, bio);
-			bio->bi_bdev = io->files.bdev;
-			bio->bi_sector = nsec;
-		}
-
-		copy = len;
-		if (copy > ((em->end - sec) << 9))
-			copy = (em->end - sec) << 9;
-		if (bio_add_page(bio, page, copy, off) != copy) {
-			/* Oops. */
-			goto flush_bio;
-		}
-
-		off += copy;
-		len -= copy;
-		sec += copy >> 9;
-	}
-
-	if (em)
-		ploop_extent_put(em);
-
-	while (bl.head) {
-		struct bio * b = bl.head;
-		bl.head = b->bi_next;
-
-		b->bi_next = NULL;
-		b->bi_end_io = bi_end_io;
-		b->bi_private = bi_private;
-		nr_bios++;
-		submit_bio(rw, b);
-	}
-
-	return nr_bios;
-
-enomem:
-	err = -ENOMEM;
-	goto out;
-
-out_em_err:
-	err = PTR_ERR(em);
-out:
-	while (bl.head) {
-		struct bio * b = bl.head;
-		bl.head = b->bi_next;
-		b->bi_next = NULL;
-		bio_put(b);
-	}
-	return err;
-}
-
 static void
 dio_io_page(struct ploop_io * io, unsigned long rw,
 	    struct ploop_request * preq, struct page * page,
@@ -1404,7 +1316,9 @@ dio_io_page(struct ploop_io * io, unsigned long rw,
 	if (rw & REQ_WRITE)
 		ploop_prepare_tracker(preq, sec);
 
-	nr_bios = __dio_io_page(io, rw, page, sec, dio_endio_async, preq);
+	nr_bios = dio_make_io(io, rw, page, PAGE_SIZE, 0, sec,
+			      dio_endio_async, preq);
+
 	if (nr_bios < 0) {
 		/* Just for uniformity -- make the counter 1 */
 		ploop_prepare_io_request(preq);



More information about the Devel mailing list