lkml.org 
[lkml]   [2008]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch] rewrite rd
    On Mon, Jan 14 2008, Matthew Wilcox wrote:
    > On Tue, Dec 04, 2007 at 05:26:28AM +0100, Nick Piggin wrote:
    > > +static void copy_to_brd(struct brd_device *brd, const void *src,
    > > + sector_t sector, size_t n)
    > > +{
    > > + struct page *page;
    > > + void *dst;
    > > + unsigned int offset = (sector & (PAGE_SECTORS-1)) << SECTOR_SHIFT;
    > > + size_t copy;
    > > +
    > > + copy = min((unsigned long)n, PAGE_SIZE - offset);
    > > + page = brd_lookup_page(brd, sector);
    > > + BUG_ON(!page);
    > > +
    > > + dst = kmap_atomic(page, KM_USER1);
    > > + memcpy(dst + offset, src, copy);
    > > + kunmap_atomic(dst, KM_USER1);
    >
    > You're using kmap_atomic, but I see no reason you can't be preempted.
    > Don't you need to at least disable preemption while you have stuff
    > atomically kmapped?

    kmap_atomic() disables preemption through pagefault_disable().

    --
    Jens Axboe



    \
     
     \ /
      Last update: 2008-01-14 18:23    [W:4.148 / U:0.324 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site