xfs
[Top] [All Lists]

Re: RFE kernel option to do the desirable thing, w/regards to 'O_DIRECT'

To: LKML <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: RFE kernel option to do the desirable thing, w/regards to 'O_DIRECT' and mis-aligned data
From: Linda Walsh <lkml@xxxxxxxxx>
Date: Tue, 01 Mar 2011 18:27:18 -0800
Cc: Dave Chinner <david@xxxxxxxxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx>, PXXdraig Brady <P@xxxxxxxxxxxxxx>
In-reply-to: <20110224092625.GA3087@dastard>
References: <4D648D7D.7040500@xxxxxxxxx> <4D64E2BB.7010000@xxxxxxxxxxxxxx> <4D654C2E.2000703@xxxxxxxxx> <20110224092625.GA3087@dastard>
User-agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.24) Thunderbird/2.0.0.24 Mnenhy/0.7.6.666

   Thanks for the shorthand Dave, but I wasn't really trying to use
xfs_mkfs to make a file that was failing -- but was more trying to use
it as an example of supporting the idea that both should succeed, and
if a write is a partial write to an O_DIRECT file, that it be allowed
to succeed and the kernel, knowing the device's minimum write size
from the driver, could buffer the last sector.
To deal with back-compat issues, it could be based off of a proc
var like /proc/kernel/fs/direct_IO_handling using bitfields (or
multiple vars if you don't like bitfields, I s
with the bits defined as:

Bit 0 Controlling allowed partial writes that start at an aligned position
Bit 1 Controlling allowed non-aligned writes
Bit 2 Controlling allowed partial reads that start at aligned position
Bit 3 Controlling allowed non-aligned reads
Bit 4 Controlling whether to use general FS cache for affected sectors

It's a bit of 'overkill' for what I wanted (just case controlled by
Bit 0), but for sake of completeness, I thought all of these combinations
should be specified.

Default of 0 = current behavior of mis-aligned data accesses failing,
while specifying various combinations would allow for variations with
the kernel handling mis-aligned accesses automatically, much like the
x86 processor handles mis-aligned integer additions or stacks automatically
(perhaps at a performance penalty, but with a tendency toward 'working'
rather than failing, if possible).

It seems better to put that logic in the kernel rather than saddle multiple
applications using DIRECT I/O with handling the non-aligned cases. This seems especially useful given the long term trend toward
increasing use of static-memory devices which will likely support
arbitrary direct I/O sizes.
Linda Walsh


<Prev in Thread] Current Thread [Next in Thread>
  • Re: RFE kernel option to do the desirable thing, w/regards to 'O_DIRECT' and mis-aligned data, Linda Walsh <=