lkml.org 
[lkml]   [2014]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH vfs 1/2] lib: implement ptrset
    Hello, Andrew.

    On Thu, Nov 13, 2014 at 02:23:33PM -0800, Andrew Morton wrote:
    > This seems rather slow and bloaty. Why not
    >
    > struct tjpointer {
    > struct list_head list;
    > void *pointer;
    > };
    >
    > And then callers do things like
    >
    > struct tjpointer *tjp;
    >
    > lock();
    >
    > for_each_tjpointer(tjp, &my_tjpointer_list) {
    > foo(tjp->ptr);
    > }
    >
    > tjpointer_del(tjp);
    >
    > unlock();
    >
    > That's less storage, vastly less support code, insertion and removal
    > are O(1) and it doesn't need the ghastly preload thing.

    The goal is moving the memory necessary for indexing to the indexer
    instead of the indexees. In the above case, the indexee would have to
    either embed tjpointer inside it or at least have a pointer pointing
    at it. With ptrset, all necessary memory areas are allocated on the
    ptrset side. This is used to remove inode->i_devices list_head which
    is currently occupying two pointers on all inodes while being used
    only for block and char dev inodes in the cold paths.

    Thanks.

    --
    tejun


    \
     
     \ /
      Last update: 2014-11-14 00:01    [W:4.355 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site