virtio-blk: add a knob to disable request merging
this adds a knob to disable request merging for debugging or benchmarks if dedired. Signed-off-by: Peter Lieven <pl@kamp.de> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									95f7142abc
								
							
						
					
					
						commit
						c99495ac1b
					
				| 
						 | 
					@ -531,7 +531,8 @@ void virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
 | 
				
			||||||
        /* merge would exceed maximum number of requests or IO direction
 | 
					        /* merge would exceed maximum number of requests or IO direction
 | 
				
			||||||
         * changes */
 | 
					         * changes */
 | 
				
			||||||
        if (mrb->num_reqs > 0 && (mrb->num_reqs == VIRTIO_BLK_MAX_MERGE_REQS ||
 | 
					        if (mrb->num_reqs > 0 && (mrb->num_reqs == VIRTIO_BLK_MAX_MERGE_REQS ||
 | 
				
			||||||
                                  is_write != mrb->is_write)) {
 | 
					                                  is_write != mrb->is_write ||
 | 
				
			||||||
 | 
					                                  !req->dev->conf.request_merging)) {
 | 
				
			||||||
            virtio_blk_submit_multireq(req->dev->blk, mrb);
 | 
					            virtio_blk_submit_multireq(req->dev->blk, mrb);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -950,6 +951,8 @@ static Property virtio_blk_properties[] = {
 | 
				
			||||||
#ifdef __linux__
 | 
					#ifdef __linux__
 | 
				
			||||||
    DEFINE_PROP_BIT("scsi", VirtIOBlock, conf.scsi, 0, true),
 | 
					    DEFINE_PROP_BIT("scsi", VirtIOBlock, conf.scsi, 0, true),
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					    DEFINE_PROP_BIT("request-merging", VirtIOBlock, conf.request_merging, 0,
 | 
				
			||||||
 | 
					                    true),
 | 
				
			||||||
    DEFINE_PROP_BIT("x-data-plane", VirtIOBlock, conf.data_plane, 0, false),
 | 
					    DEFINE_PROP_BIT("x-data-plane", VirtIOBlock, conf.data_plane, 0, false),
 | 
				
			||||||
    DEFINE_PROP_END_OF_LIST(),
 | 
					    DEFINE_PROP_END_OF_LIST(),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -113,6 +113,7 @@ struct VirtIOBlkConf
 | 
				
			||||||
    uint32_t scsi;
 | 
					    uint32_t scsi;
 | 
				
			||||||
    uint32_t config_wce;
 | 
					    uint32_t config_wce;
 | 
				
			||||||
    uint32_t data_plane;
 | 
					    uint32_t data_plane;
 | 
				
			||||||
 | 
					    uint32_t request_merging;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct VirtIOBlockDataPlane;
 | 
					struct VirtIOBlockDataPlane;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue