bio: adapt to REQ_IDLE in place of NOIDLE

This commit is contained in:
Thomas Schoebel-Theuer 2019-02-20 07:38:00 +01:00 committed by Thomas Schoebel-Theuer
parent e2d37327cd
commit 2176f6ee13
4 changed files with 6 additions and 5 deletions

View File

@ -434,14 +434,19 @@ void _bio_ref_io(struct bio_output *output, struct mref_object *mref, bool cork)
bio_get(bio); bio_get(bio);
rw = mref->ref_rw & 1; rw = mref->ref_rw & 1;
if (brick->do_noidle && !cork) { if (cork) {
// adapt to different kernel versions (TBD: improve) // adapt to different kernel versions (TBD: improve)
#ifdef REQ_IDLE
rw |= REQ_IDLE;
#else /* sorry this went clumsy over time, adaptation to _any_ kernel is a hell */
} else {
#if defined(BIO_RW_RQ_MASK) || defined(BIO_FLUSH) #if defined(BIO_RW_RQ_MASK) || defined(BIO_FLUSH)
rw |= (1 << BIO_RW_NOIDLE); rw |= (1 << BIO_RW_NOIDLE);
#elif defined(REQ_NOIDLE) #elif defined(REQ_NOIDLE)
rw |= REQ_NOIDLE; rw |= REQ_NOIDLE;
#else #else
#warning Cannot control the NOIDLE flag #warning Cannot control the NOIDLE flag
#endif
#endif #endif
} }
if (!mref->ref_skip_sync) { if (!mref->ref_skip_sync) {

View File

@ -61,7 +61,6 @@ struct bio_brick {
int ra_pages; int ra_pages;
int bg_threshold; int bg_threshold;
int bg_maxfly; int bg_maxfly;
bool do_noidle;
bool do_sync; bool do_sync;
bool do_unplug; bool do_unplug;
// readonly // readonly

View File

@ -354,7 +354,6 @@ int _set_server_bio_params(struct mars_brick *_brick, void *private)
} }
bio_brick = (void*)_brick; bio_brick = (void*)_brick;
bio_brick->ra_pages = 0; bio_brick->ra_pages = 0;
bio_brick->do_noidle = true;
bio_brick->do_sync = true; bio_brick->do_sync = true;
bio_brick->do_unplug = true; bio_brick->do_unplug = true;
MARS_INF("name = '%s' path = '%s'\n", _brick->brick_name, _brick->brick_path); MARS_INF("name = '%s' path = '%s'\n", _brick->brick_name, _brick->brick_path);

View File

@ -698,7 +698,6 @@ int mars_mem_gb = 16;
#define BIO_READAHEAD 0 #define BIO_READAHEAD 0
//#define BIO_READAHEAD 1 //#define BIO_READAHEAD 1
#define BIO_NOIDLE true
#define BIO_SYNC true #define BIO_SYNC true
#define BIO_UNPLUG true #define BIO_UNPLUG true
@ -816,7 +815,6 @@ int _set_bio_params(struct mars_brick *_brick, void *private)
} }
bio_brick = (void*)_brick; bio_brick = (void*)_brick;
bio_brick->ra_pages = BIO_READAHEAD; bio_brick->ra_pages = BIO_READAHEAD;
bio_brick->do_noidle = BIO_NOIDLE;
bio_brick->do_sync = BIO_SYNC; bio_brick->do_sync = BIO_SYNC;
bio_brick->do_unplug = BIO_UNPLUG; bio_brick->do_unplug = BIO_UNPLUG;
bio_brick->killme = true; bio_brick->killme = true;