lkml.org 
[lkml]   [2011]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] hugetlbfs: simplify destroying inode
    On Mon, 4 Apr 2011 11:36:56 +0800
    Hillf Danton <dhillf@gmail.com> wrote:

    > Just before reclaimed by the hugetlbfs inode cache, little difference
    > could be made by initializing the list head of the dentry member of
    > vfs inode, thus the operation of initialization could be removed to
    > simplify the destroy of hugetlbfs inode.
    >
    > Signed-off-by: Hillf Danton <gmail.com>
    > ---
    >
    > --- a/fs/hugetlbfs/inode.c 2011-03-30 03:09:48.000000000 +0800
    > +++ b/fs/hugetlbfs/inode.c 2011-04-04 11:27:30.000000000 +0800
    > @@ -665,7 +665,6 @@ static struct inode *hugetlbfs_alloc_ino
    > static void hugetlbfs_i_callback(struct rcu_head *head)
    > {
    > struct inode *inode = container_of(head, struct inode, i_rcu);
    > - INIT_LIST_HEAD(&inode->i_dentry);
    > kmem_cache_free(hugetlbfs_inode_cachep, HUGETLBFS_I(inode));
    > }

    How well was this tested?

    hugetlbfs_inode_cachep has a slab constructor,
    init_once()->inode_init_once(). The slab protocol requires that
    objects be returned to the cache in the same state as that which the
    constructor creates. (It's a bit weird and it would probably be faster
    and certainly saner if the ctor were run by kmem_cache_alloc()).

    inode_init_once() does INIT_LIST_HEAD(&inode->i_dentry), so objects
    should be returned to the cache in that state. If no other code was
    already reliably reinitialising ->i_dentry, the patch will add a bug.



    \
     
     \ /
      Last update: 2011-04-20 18:37    [W:0.023 / U:32.316 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site