lkml.org 
[lkml]   [2010]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv6 08/15] writeback: move last_active to bdi
    Date
    From: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>

    Currently bdi threads use local variable 'last_active' which stores last time
    when the bdi thread did some useful work. Move this local variable to 'struct
    bdi_writeback'. This is just a preparation for the further patches which will
    make the forker thread decide when bdi threads should be killed.

    Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    ---
    fs/fs-writeback.c | 6 +++---
    include/linux/backing-dev.h | 13 +++++++------
    2 files changed, 10 insertions(+), 9 deletions(-)

    diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
    index eaef5c9..53e1028 100644
    --- a/fs/fs-writeback.c
    +++ b/fs/fs-writeback.c
    @@ -800,12 +800,12 @@ int bdi_writeback_thread(void *data)
    {
    struct bdi_writeback *wb = data;
    struct backing_dev_info *bdi = wb->bdi;
    - unsigned long last_active = jiffies;
    unsigned long wait_jiffies = -1UL;
    long pages_written;

    current->flags |= PF_FLUSHER | PF_SWAPWRITE;
    set_freezable();
    + wb->last_active = jiffies;

    /*
    * Our parent may run at a different priority, just set us to normal
    @@ -827,7 +827,7 @@ int bdi_writeback_thread(void *data)
    trace_writeback_pages_written(pages_written);

    if (pages_written)
    - last_active = jiffies;
    + wb->last_active = jiffies;
    else if (wait_jiffies != -1UL) {
    unsigned long max_idle;

    @@ -837,7 +837,7 @@ int bdi_writeback_thread(void *data)
    * recreated automatically.
    */
    max_idle = max(5UL * 60 * HZ, wait_jiffies);
    - if (time_after(jiffies, max_idle + last_active))
    + if (time_after(jiffies, max_idle + wb->last_active))
    break;
    }

    diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
    index 95ecb2b..71b6223 100644
    --- a/include/linux/backing-dev.h
    +++ b/include/linux/backing-dev.h
    @@ -45,15 +45,16 @@ enum bdi_stat_item {
    #define BDI_STAT_BATCH (8*(1+ilog2(nr_cpu_ids)))

    struct bdi_writeback {
    - struct backing_dev_info *bdi; /* our parent bdi */
    + struct backing_dev_info *bdi; /* our parent bdi */
    unsigned int nr;

    - unsigned long last_old_flush; /* last old data flush */
    + unsigned long last_old_flush; /* last old data flush */
    + unsigned long last_active; /* last time bdi thread was active */

    - struct task_struct *task; /* writeback thread */
    - struct list_head b_dirty; /* dirty inodes */
    - struct list_head b_io; /* parked for writeback */
    - struct list_head b_more_io; /* parked for more writeback */
    + struct task_struct *task; /* writeback thread */
    + struct list_head b_dirty; /* dirty inodes */
    + struct list_head b_io; /* parked for writeback */
    + struct list_head b_more_io; /* parked for more writeback */
    };

    struct backing_dev_info {
    --
    1.7.1.1


    \
     
     \ /
      Last update: 2010-07-25 13:33    [W:0.022 / U:0.176 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site