[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20141215061601.GT22149@ZenIV.linux.org.uk>
Date: Mon, 15 Dec 2014 06:16:02 +0000
From: Al Viro <viro@...IV.linux.org.uk>
To: Omar Sandoval <osandov@...ndov.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
Trond Myklebust <trond.myklebust@...marydata.com>,
Christoph Hellwig <hch@...radead.org>,
David Sterba <dsterba@...e.cz>, linux-fsdevel@...r.kernel.org,
linux-mm@...ck.org, linux-nfs@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 3/8] swap: don't add ITER_BVEC flag to direct_IO rw
On Sun, Dec 14, 2014 at 09:26:57PM -0800, Omar Sandoval wrote:
> The rw argument to direct_IO has some ill-defined semantics. Some
> filesystems (e.g., ext4, FAT) decide whether they're doing a write with
> rw == WRITE, but others (e.g., XFS) check rw & WRITE. Let's set a good
> example in the swap file code and say ITER_BVEC belongs in
> iov_iter->flags but not in rw. This caters to the least common
> denominator and avoids a sweeping change of every direct_IO
> implementation for now.
Frankly, this is bogus. If anything, let's just kill the first argument
completely - ->direct_IO() can always pick it from iter->type.
As for catering to the least common denominator... To hell with the lowest
common denominator. How many instances of ->direct_IO() do we have, anyway?
24 in the mainline (and we don't give a flying fuck for out-of-tree code, as
a matter of policy). Moreover, several are of "do nothing" variety.
FWIW, 'rw' is a mess. We used to have this:
READ: O_DIRECT read
WRITE: O_DIRECT write
KERNEL_WRITE: swapout
These days KERNEL_WRITE got replaced with ITER_BVEC | WRITE. The thing is,
we have a bunch of places where we explicitly checked for being _equal_ to
WRITE. I.e. the checks that gave a negative on swapouts. I suspect that most
of them are wrong and should trigger on all writes, including swapouts, but
I really didn't want to dig into that pile of fun back then. That's the
main reason why 'rw' argument has survived at all...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists