[lttng-dev] [PATCH lttng-modules] RFC: fix global_dirty_limit for kernel v4.2 and up

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Tue Jan 23 22:02:01 UTC 2018


It looks good. Why the "RFC" ? Do you want me to first pull it into
master for some CI testing, and only afterwards backport it ?

----- On Jan 23, 2018, at 4:00 PM, Michael Jeanson mjeanson at efficios.com wrote:

> global_dirty_limit was moved into wb_domain
> 
> See upstream commit :
> 
>  commit dcc25ae76eb7b8ff883eaaab57e30e8f2f085be3
>  Author: Tejun Heo <tj at kernel.org>
>  Date:   Fri May 22 18:23:22 2015 -0400
> 
>    writeback: move global_dirty_limit into wb_domain
> 
>    This patch is a part of the series to define wb_domain which
>    represents a domain that wb's (bdi_writeback's) belong to and are
>    measured against each other in.  This will enable IO backpressure
>    propagation for cgroup writeback.
> 
>    global_dirty_limit exists to regulate the global dirty threshold which
>    is a property of the wb_domain.  This patch moves hard_dirty_limit,
>    dirty_lock, and update_time into wb_domain.
> 
>    This is pure reorganization and doesn't introduce any behavioral
>    changes.
> 
> Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
> ---
> wrapper/writeback.h | 27 +++++++++++++++++++++++++--
> 1 file changed, 25 insertions(+), 2 deletions(-)
> 
> diff --git a/wrapper/writeback.h b/wrapper/writeback.h
> index cdcbd58..22b2c16 100644
> --- a/wrapper/writeback.h
> +++ b/wrapper/writeback.h
> @@ -25,11 +25,33 @@
>  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>  */
> 
> -#ifdef CONFIG_KALLSYMS_ALL
> +#include <lttng-kernel-version.h>
> 
> +#ifdef CONFIG_KALLSYMS_ALL
> #include <linux/kallsyms.h>
> #include <wrapper/kallsyms.h>
> 
> +
> +
> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
> +
> +static struct wb_domain *global_wb_domain_sym;
> +
> +static inline
> +unsigned long wrapper_global_dirty_limit(void)
> +{
> +	if (!global_wb_domain_sym)
> +		global_wb_domain_sym =
> +			(void *) kallsyms_lookup_dataptr("global_wb_domain");
> +	if (global_wb_domain_sym) {
> +		return global_wb_domain_sym->dirty_limit;
> +	} else {
> +		printk_once(KERN_WARNING "LTTng: global_wb_domain symbol lookup failed.\n");
> +		return 0;
> +	}
> +}
> +#else
> +
> static unsigned long *global_dirty_limit_sym;
> 
> static inline
> @@ -45,8 +67,9 @@ unsigned long wrapper_global_dirty_limit(void)
> 		return 0;
> 	}
> }
> +#endif
> 
> -#else
> +#else /* CONFIG_KALLSYMS_ALL */
> 
> #include <linux/writeback.h>
> 
> --
> 2.7.4

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list