Fail if we can't satisfy the minimum block size
authorJens Axboe <axboe@kernel.dk>
Mon, 6 Feb 2012 20:58:56 +0000 (21:58 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 6 Feb 2012 20:58:56 +0000 (21:58 +0100)
Commit 799441286648bdced4f42d3040f37fd2e35eaf1d introduced a bug
where if we cannot satisfy the minimum block size from a given
offset, then we will loop forever trying to do that. Fix that bug
checking early if it is indeed a possible thing to satisfy, if
not give up.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_u.c

diff --git a/io_u.c b/io_u.c
index 54f8685bc5c510608e3a6e5e7a7ef09f766ccebf..8a033485e7cf9eee2adbb893ab2d13bd2695dde0 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -377,6 +377,12 @@ static unsigned int __get_next_buflen(struct thread_data *td, struct io_u *io_u)
        if (minbs == maxbs)
                return minbs;
 
+       /*
+        * If we can't satisfy the min block size from here, then fail
+        */
+       if (!io_u_fits(td, io_u, minbs))
+               return 0;
+
        if (td->o.use_os_rand)
                rand_max = OS_RAND_MAX;
        else