David Lang <david.lang@digitalinsight.com> wrote:>> note that issuing a fsync should change all pending writes to 'syncronous'> as should writes to any partition mounted with the sync option, or writes> to a directory with the S flag set.

We know, at I/O submission time, whether a write is to be waited upon. That's in writeback_control.sync_mode.

That, combined with an assumption that "all reads are synchronous" wouldallow the outgoing BIOs to be appropriately tagged.

It's still approximate. An exact solution would involve only marking I/O assynchronous when some process actually waits on its completion. I do notbelieve that all the extra lookup and locking infrastructure and storagewhich this would require is justified. Certainly not in a first iteration.

The Rice Uni researchers did implement controls which attempted to learn IOsubmission patterns on a per-process basis, and I believe these were alsoused to avoid undesirable starvations. We have only briefly played withprocess-aware logic.

The first thing to do is to get the anticipatory scheduler working properly.Nick has been tied down for a week chasing generic bugs in the request layer.He seems to have nailed the important ones now.