diff --git a/kernel/mars_bio.c b/kernel/mars_bio.c index fb1cc456..c7f5b521 100644 --- a/kernel/mars_bio.c +++ b/kernel/mars_bio.c @@ -51,6 +51,8 @@ #endif // end_remove_this +int bio_nr_requests = 1024; + static struct timing_stats timings[2] = {}; struct threshold bio_submit_threshold = { @@ -801,6 +803,8 @@ static int bio_switch(struct bio_brick *brick) MARS_INF("'%s' ra_pages OLD=%lu NEW=%d\n", path, q->backing_dev_info.ra_pages, brick->ra_pages); q->backing_dev_info.ra_pages = brick->ra_pages; + q->nr_requests = bio_nr_requests; + brick->bvec_max = queue_max_hw_sectors(q) >> (PAGE_SHIFT - 9); if (brick->bvec_max > BIO_MAX_PAGES) brick->bvec_max = BIO_MAX_PAGES; diff --git a/kernel/mars_bio.h b/kernel/mars_bio.h index 4efe66ca..98b705ea 100644 --- a/kernel/mars_bio.h +++ b/kernel/mars_bio.h @@ -28,6 +28,7 @@ #define BIO_IO_R_MAX_LATENCY 40000 // 40 ms #define BIO_IO_W_MAX_LATENCY 100000 // 100 ms +extern int bio_nr_requests; extern struct threshold bio_submit_threshold; extern struct threshold bio_io_threshold[2]; diff --git a/kernel/sy_old/mars_proc.c b/kernel/sy_old/mars_proc.c index 5fe45bfd..bca019e9 100644 --- a/kernel/sy_old/mars_proc.c +++ b/kernel/sy_old/mars_proc.c @@ -236,6 +236,7 @@ struct ctl_table io_tuning_table[] = { LIMITER_ENTRIES(&global_writeback.limiter, "writeback", "kb"), INT_ENTRY("writeback_until_percent", global_writeback.until_percent, 0600), THRESHOLD_ENTRIES(&global_io_threshold, "global_io"), + INT_ENTRY("bio_nr_requests", bio_nr_requests, 0600), THRESHOLD_ENTRIES(&bio_submit_threshold, "bio_submit"), THRESHOLD_ENTRIES(&bio_io_threshold[0], "bio_io_r"), THRESHOLD_ENTRIES(&bio_io_threshold[1], "bio_io_w"),