Merge branch 'mars0.1.y' into mars0.1b.y

This commit is contained in:
Thomas Schoebel-Theuer 2017-06-06 18:12:31 +02:00
commit 746f84cd32
2 changed files with 12 additions and 1 deletions

View File

@ -188,6 +188,13 @@ mars0.1balpha0
-----------------------------------
Changelog for series 0.1:
mars0.1stable40
--------
* Potentially critical fix: on very fast machines, and with
extremely low probability, a race in AIO could lead to a kernel
page fault.
For maximum safety, update to this version is recommended.
mars0.1stable39
--------
* Minor fix: hangs of logfile updates. Found by stress-testing

View File

@ -407,6 +407,7 @@ static int aio_submit(struct aio_output *output, struct aio_mref_aspect *mref_a,
// .aio_reqprio = something(mref->ref_prio) field exists, but not yet implemented in kernelspace :(
};
struct iocb *iocbp = &iocb;
struct timing_stats *this_timing = &timings[mref->ref_rw & 1];
unsigned long long latency;
mars_trace(mref, "aio_submit");
@ -419,7 +420,10 @@ static int aio_submit(struct aio_output *output, struct aio_mref_aspect *mref_a,
oldfs = get_fs();
set_fs(get_ds());
latency = TIME_STATS(&timings[mref->ref_rw & 1], res = sys_io_submit(output->ctxp, 1, &iocbp));
latency = TIME_STATS(
this_timing,
res = sys_io_submit(output->ctxp, 1, &iocbp)
);
set_fs(oldfs);
threshold_check(&aio_submit_threshold, latency);