lkml.org 
[lkml]   [2007]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 2/4] sysfs: make the sysfs_addrm_cxt->removed list FIFO
    Date
    From
    Add sysfs_addrm_cxt->removed_tail to make the ->removed list FIFO.
    This will be used to implement care-free suicide.

    Signed-off-by: Tejun Heo <htejun@gmail.com>
    ---
    fs/sysfs/dir.c | 7 +++++--
    fs/sysfs/sysfs.h | 2 +-
    2 files changed, 6 insertions(+), 3 deletions(-)
    diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
    index ad3394a..c902bdc 100644
    --- a/fs/sysfs/dir.c
    +++ b/fs/sysfs/dir.c
    @@ -361,6 +361,7 @@ void sysfs_addrm_start(struct sysfs_addrm_cxt *acxt,

    memset(acxt, 0, sizeof(*acxt));
    acxt->parent_sd = parent_sd;
    + acxt->removed_tail = &acxt->removed;

    /* Lookup parent inode. inode initialization and I_NEW
    * clearing are protected by sysfs_mutex. By grabbing it and
    @@ -448,8 +449,10 @@ void sysfs_remove_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd)
    sysfs_unlink_sibling(sd);

    sd->s_flags |= SYSFS_FLAG_REMOVED;
    - sd->s_sibling = acxt->removed;
    - acxt->removed = sd;
    + *acxt->removed_tail = sd;
    + /* keep them in FIFO order, suicide check depends on it */
    + acxt->removed_tail = &sd->s_sibling;
    + *acxt->removed_tail = NULL;

    if (sysfs_type(sd) == SYSFS_DIR && acxt->parent_inode)
    drop_nlink(acxt->parent_inode);
    diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h
    index 269c845..be16947 100644
    --- a/fs/sysfs/sysfs.h
    +++ b/fs/sysfs/sysfs.h
    @@ -71,7 +71,7 @@ static inline unsigned int sysfs_type(struct sysfs_dirent *sd)
    struct sysfs_addrm_cxt {
    struct sysfs_dirent *parent_sd;
    struct inode *parent_inode;
    - struct sysfs_dirent *removed;
    + struct sysfs_dirent *removed, **removed_tail;
    int cnt;
    };

    --
    1.5.0.3

    -
    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/

    \
     
     \ /
      Last update: 2007-09-20 09:31    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean