On Mon 16-03-15 15:14:20, Ted Tso wrote:
> Add a tuning knob so we can adjust the dirtytime expiration timeout,
> which is very useful for testing lazytime.
> 
> Signed-off-by: Theodore Ts'o <[email protected]>
> Cc: [email protected]
  CC to stable isn't needed. Otherwise:

  Reviewed-by: Jan Kara <[email protected]>

                                                                Honza

> ---
>  fs/fs-writeback.c         | 11 +++++++++++
>  include/linux/writeback.h |  3 +++
>  kernel/sysctl.c           |  8 ++++++++
>  3 files changed, 22 insertions(+)
> 
> diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> index ae13fba..d6fa722 100644
> --- a/fs/fs-writeback.c
> +++ b/fs/fs-writeback.c
> @@ -1188,6 +1188,17 @@ static int __init start_dirtytime_writeback(void)
>  }
>  __initcall(start_dirtytime_writeback);
>  
> +int dirtytime_interval_handler(struct ctl_table *table, int write,
> +                            void __user *buffer, size_t *lenp, loff_t *ppos)
> +{
> +     int ret;
> +
> +     ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
> +     if (ret == 0 && write)
> +             mod_delayed_work(system_wq, &dirtytime_work, 0);
> +     return ret;
> +}
> +
>  static noinline void block_dump___mark_inode_dirty(struct inode *inode)
>  {
>       if (inode->i_ino || strcmp(inode->i_sb->s_id, "bdev")) {
> diff --git a/include/linux/writeback.h b/include/linux/writeback.h
> index 0004833..b2dd371e 100644
> --- a/include/linux/writeback.h
> +++ b/include/linux/writeback.h
> @@ -130,6 +130,7 @@ extern int vm_dirty_ratio;
>  extern unsigned long vm_dirty_bytes;
>  extern unsigned int dirty_writeback_interval;
>  extern unsigned int dirty_expire_interval;
> +extern unsigned int dirtytime_expire_interval;
>  extern int vm_highmem_is_dirtyable;
>  extern int block_dump;
>  extern int laptop_mode;
> @@ -146,6 +147,8 @@ extern int dirty_ratio_handler(struct ctl_table *table, 
> int write,
>  extern int dirty_bytes_handler(struct ctl_table *table, int write,
>               void __user *buffer, size_t *lenp,
>               loff_t *ppos);
> +int dirtytime_interval_handler(struct ctl_table *table, int write,
> +                            void __user *buffer, size_t *lenp, loff_t *ppos);
>  
>  struct ctl_table;
>  int dirty_writeback_centisecs_handler(struct ctl_table *, int,
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index 88ea2d6..ce410bb 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -1228,6 +1228,14 @@ static struct ctl_table vm_table[] = {
>               .extra1         = &zero,
>       },
>       {
> +             .procname       = "dirtytime_expire_seconds",
> +             .data           = &dirtytime_expire_interval,
> +             .maxlen         = sizeof(dirty_expire_interval),
> +             .mode           = 0644,
> +             .proc_handler   = dirtytime_interval_handler,
> +             .extra1         = &zero,
> +     },
> +     {
>               .procname       = "nr_pdflush_threads",
>               .mode           = 0444 /* read-only */,
>               .proc_handler   = pdflush_proc_obsolete,
> -- 
> 2.3.0
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to