Re: [PATCH] zerocopy NFS updated

From: Hirokazu Takahashi (taka@valinux.co.jp)
Date: Thu Apr 11 2002 - 06:38:23 EST


Hi, David

davem> Now I wonder if we could make these pages COW mode.
davem> When some process try to update the pages, they should be duplicated.
davem> I's easy to implement it in write(), truncate() and so on.
davem> But mmap() is little bit difficult if there no reverse mapping page to PTE.
davem>
davem> How do you think about this idea?
davem>
davem> I think this idea has such high overhead that it is even not for
davem> consideration, consider SMP.

Hmmm... If I'd implement them.....
How about following codes ?

nfsd read()
{
           :
    page_cache_get(page);
    if (page is mapped to anywhere)
        page = duplicate_and_rehash(page);
    else {
        page_lock(page);
        page->flags |= COW;
        page_unlock(page);
    }
    sendpage(page);
    page_cache_release(page);
}

generic_file_write()
{
    page = _grab_cache_page()
    lock_page(page);
    if (page->flags & COW)
        page = duplicate_and_rehash(page);
    prepare_write();
    commit_write();
    UnlockPage(page);
    page_cache_release(page)
}

truncate_list_page() <-- truncate() calls
{
    page_cache_get();
    lock_page(page);
    if (page->flags & COW)
        page = duplicate_and_rehash(page);
    truncate_partial_page();
    UnlockPage(page);
    page_cache_release(page);
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Apr 15 2002 - 22:00:18 EST