lkml.org 
[lkml]   [2014]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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...


    \
     
     \ /
      Last update: 2014-12-15 07:41    [W:2.581 / U:0.172 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site