io_u_queue: add debug assert check on adding too many elements
authorJens Axboe <axboe@fb.com>
Fri, 20 Mar 2015 04:15:02 +0000 (22:15 -0600)
committerJens Axboe <axboe@fb.com>
Fri, 20 Mar 2015 04:25:35 +0000 (22:25 -0600)
Caught a bug in the io-threads branch, lets merge it into master.

Signed-off-by: Jens Axboe <axboe@fb.com>
io_u_queue.c
io_u_queue.h

index 80a32ba3afd20d4a8b3669935ca10d035720a554..9994c7879a066a6b277b1863bd6e7f902ba01795 100644 (file)
@@ -8,6 +8,7 @@ int io_u_qinit(struct io_u_queue *q, unsigned int nr)
                return 1;
 
        q->nr = 0;
                return 1;
 
        q->nr = 0;
+       q->max = nr;
        return 0;
 }
 
        return 0;
 }
 
index bda40d5ea263920055f6d75c62bdca8e4559034c..118e59342b5da4bd814be51aa7f561d519603838 100644 (file)
@@ -8,6 +8,7 @@ struct io_u;
 struct io_u_queue {
        struct io_u **io_us;
        unsigned int nr;
 struct io_u_queue {
        struct io_u **io_us;
        unsigned int nr;
+       unsigned int max;
 };
 
 static inline struct io_u *io_u_qpop(struct io_u_queue *q)
 };
 
 static inline struct io_u *io_u_qpop(struct io_u_queue *q)
@@ -25,7 +26,12 @@ static inline struct io_u *io_u_qpop(struct io_u_queue *q)
 
 static inline void io_u_qpush(struct io_u_queue *q, struct io_u *io_u)
 {
 
 static inline void io_u_qpush(struct io_u_queue *q, struct io_u *io_u)
 {
-       q->io_us[q->nr++] = io_u;
+       if (q->nr < q->max) {
+               q->io_us[q->nr++] = io_u;
+               return;
+       }
+
+       assert(0);
 }
 
 static inline int io_u_qempty(const struct io_u_queue *q)
 }
 
 static inline int io_u_qempty(const struct io_u_queue *q)