lkml.org 
[lkml]   [2009]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFC][PATCH] kmap_atomic_push
    From
    Date
    On Thu, 2009-10-08 at 18:27 -0400, jim owens wrote:
    > So if I understand this correctly, the sequence:
    >
    > in = kmap_atomic(inpage, KM_USER1);
    >
    > out = kmap_atomic(outpage, KM_USER0);
    >
    > kunmap_atomic(in, KM_USER1);
    >
    > in = kmap_atomic(next_inpage, KM_USER1);
    >
    > is now illegal with this patch, which breaks code
    > I am testing now for btrfs.
    >
    > My code does this because the in/out are zlib inflate
    > and the in/out run at different rates.

    You can do things like:

    do {
    in = kmap_atomic(inpage);
    out = kmap_atomic(outpage);

    <deflate until end of either in/out>

    kunmap_atomic(outpage);
    kunmap_atomic(inpage);

    cond_resched();

    <iterate bits>

    } while (<not done>)

    The double unmap gives a preemption point, which sounds like a good
    thing to have, because your scheme could run for a long while without
    enabling preemption, which is badness.



    \
     
     \ /
      Last update: 2009-10-09 01:03    [W:4.686 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site