On Wed, Oct 29, 2014 at 03:24:11PM -0700, Dan Williams wrote:
On Wed, Oct 29, 2014 at 3:09 PM, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
On Wed, Oct 29, 2014 at 03:10:51PM -0600, Jens Axboe wrote:
As for the fs accessing this, the io nice fields are readily exposed
through the ->bi_rw setting. So while the above example uses ionice to
set a task io priority (that a bio will then inherit), nothing prevents
you from passing it in directly from the kernel.
Right, but now the filesystem needs to provide that on a per-inode
basis, not from the task structure as the task that is submitting
the bio is not necesarily the task doing the read/write syscall.
e.g. the write case above doesn't actually inherit the task priority
at the bio level at all because the IO is being dispatched by a
background flusher thread, not the ioniced task calling write(2).
When the ioniced task calling write(2) inserts the page into the page
cache then the current priority is recorded in the struct page. The
It does? Can you point me to where the page cache code does this,
because I've clearly missed something important go by in the past
few months...