diff --git a/lib/bdev/ocf/vbdev_ocf.c b/lib/bdev/ocf/vbdev_ocf.c
index 641d39fdce..b34f715501 100644
--- a/lib/bdev/ocf/vbdev_ocf.c
+++ b/lib/bdev/ocf/vbdev_ocf.c
@@ -588,8 +588,11 @@ static int queue_poll(void *opaque)
 {
 	struct vbdev_ocf_qcxt *qctx = opaque;
 	uint32_t iono = ocf_queue_pending_io(qctx->queue);
+	int i, max = spdk_min(32, iono);
 
-	ocf_queue_run(qctx->queue);
+	for (i = 0; i < max; i++) {
+		ocf_queue_run_single(qctx->queue);
+	}
 
 	if (iono > 0) {
 		return 1;