[lustre-devel] [PATCH 21/24] lustre: move remainder of linux-tracefile.c to tracefile.c
James Simmons
jsimmons at infradead.org
Wed Jun 20 18:37:35 PDT 2018
> It's good to keep related code together.
>
> Signed-off-by: NeilBrown <neilb at suse.com>
Nak. For some reason this corrupts my dmesg output. Its really strange and
I haven't figured it out yet.
> ---
> drivers/staging/lustre/lnet/libcfs/Makefile | 2
> .../staging/lustre/lnet/libcfs/linux-tracefile.c | 194 --------------------
> drivers/staging/lustre/lnet/libcfs/tracefile.c | 155 ++++++++++++++++
> 3 files changed, 156 insertions(+), 195 deletions(-)
> delete mode 100644 drivers/staging/lustre/lnet/libcfs/linux-tracefile.c
>
> diff --git a/drivers/staging/lustre/lnet/libcfs/Makefile b/drivers/staging/lustre/lnet/libcfs/Makefile
> index 1b6937c3deee..22c0e0c2e9cf 100644
> --- a/drivers/staging/lustre/lnet/libcfs/Makefile
> +++ b/drivers/staging/lustre/lnet/libcfs/Makefile
> @@ -3,7 +3,7 @@ ccflags-y += -I$(srctree)/drivers/staging/lustre/include
> ccflags-y += -I$(srctree)/drivers/staging/lustre/lustre/include
> ccflags-y += -DKBUILD_MODNAME='"lnet"'
>
> -libcfs-obj-y += linux-tracefile.o linux-debug.o
> +libcfs-obj-y += linux-debug.o
> libcfs-obj-y += linux-crypto.o
> libcfs-obj-y += linux-crypto-adler.o
>
> diff --git a/drivers/staging/lustre/lnet/libcfs/linux-tracefile.c b/drivers/staging/lustre/lnet/libcfs/linux-tracefile.c
> deleted file mode 100644
> index 3af77228cd7a..000000000000
> --- a/drivers/staging/lustre/lnet/libcfs/linux-tracefile.c
> +++ /dev/null
> @@ -1,194 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * GPL HEADER START
> - *
> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 only,
> - * as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful, but
> - * WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> - * General Public License version 2 for more details (a copy is included
> - * in the LICENSE file that accompanied this code).
> - *
> - * You should have received a copy of the GNU General Public License
> - * version 2 along with this program; If not, see
> - * http://www.gnu.org/licenses/gpl-2.0.html
> - *
> - * GPL HEADER END
> - */
> -/*
> - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
> - * Use is subject to license terms.
> - *
> - * Copyright (c) 2012, Intel Corporation.
> - */
> -/*
> - * This file is part of Lustre, http://www.lustre.org/
> - * Lustre is a trademark of Sun Microsystems, Inc.
> - */
> -
> -#define DEBUG_SUBSYSTEM S_LNET
> -#define LUSTRE_TRACEFILE_PRIVATE
> -
> -#include <linux/slab.h>
> -#include <linux/mm.h>
> -#include "tracefile.h"
> -
> -/* percents to share the total debug memory for each type */
> -static unsigned int pages_factor[CFS_TCD_TYPE_MAX] = {
> - 80, /* 80% pages for CFS_TCD_TYPE_PROC */
> - 10, /* 10% pages for CFS_TCD_TYPE_SOFTIRQ */
> - 10 /* 10% pages for CFS_TCD_TYPE_IRQ */
> -};
> -
> -char *cfs_trace_console_buffers[NR_CPUS][CFS_TCD_TYPE_MAX];
> -
> -int cfs_tracefile_init_arch(void)
> -{
> - int i;
> - int j;
> - struct cfs_trace_cpu_data *tcd;
> -
> - /* initialize trace_data */
> - memset(cfs_trace_data, 0, sizeof(cfs_trace_data));
> - for (i = 0; i < CFS_TCD_TYPE_MAX; i++) {
> - cfs_trace_data[i] =
> - kmalloc_array(num_possible_cpus(),
> - sizeof(union cfs_trace_data_union),
> - GFP_KERNEL);
> - if (!cfs_trace_data[i])
> - goto out;
> - }
> -
> - /* arch related info initialized */
> - cfs_tcd_for_each(tcd, i, j) {
> - spin_lock_init(&tcd->tcd_lock);
> - tcd->tcd_pages_factor = pages_factor[i];
> - tcd->tcd_type = i;
> - tcd->tcd_cpu = j;
> - }
> -
> - for (i = 0; i < num_possible_cpus(); i++)
> - for (j = 0; j < 3; j++) {
> - cfs_trace_console_buffers[i][j] =
> - kmalloc(CFS_TRACE_CONSOLE_BUFFER_SIZE,
> - GFP_KERNEL);
> -
> - if (!cfs_trace_console_buffers[i][j])
> - goto out;
> - }
> -
> - return 0;
> -
> -out:
> - cfs_tracefile_fini_arch();
> - pr_err("lnet: Not enough memory\n");
> - return -ENOMEM;
> -}
> -
> -void cfs_tracefile_fini_arch(void)
> -{
> - int i;
> - int j;
> -
> - for (i = 0; i < num_possible_cpus(); i++)
> - for (j = 0; j < 3; j++) {
> - kfree(cfs_trace_console_buffers[i][j]);
> - cfs_trace_console_buffers[i][j] = NULL;
> - }
> -
> - for (i = 0; cfs_trace_data[i]; i++) {
> - kfree(cfs_trace_data[i]);
> - cfs_trace_data[i] = NULL;
> - }
> -}
> -
> -enum cfs_trace_buf_type cfs_trace_buf_idx_get(void)
> -{
> - if (in_irq())
> - return CFS_TCD_TYPE_IRQ;
> - if (in_softirq())
> - return CFS_TCD_TYPE_SOFTIRQ;
> - return CFS_TCD_TYPE_PROC;
> -}
> -
> -void
> -cfs_set_ptldebug_header(struct ptldebug_header *header,
> - struct libcfs_debug_msg_data *msgdata,
> - unsigned long stack)
> -{
> - struct timespec64 ts;
> -
> - ktime_get_real_ts64(&ts);
> -
> - header->ph_subsys = msgdata->msg_subsys;
> - header->ph_mask = msgdata->msg_mask;
> - header->ph_cpu_id = smp_processor_id();
> - header->ph_type = cfs_trace_buf_idx_get();
> - /* y2038 safe since all user space treats this as unsigned, but
> - * will overflow in 2106
> - */
> - header->ph_sec = (u32)ts.tv_sec;
> - header->ph_usec = ts.tv_nsec / NSEC_PER_USEC;
> - header->ph_stack = stack;
> - header->ph_pid = current->pid;
> - header->ph_line_num = msgdata->msg_line;
> - header->ph_extern_pid = 0;
> -}
> -
> -static char *
> -dbghdr_to_err_string(struct ptldebug_header *hdr)
> -{
> - switch (hdr->ph_subsys) {
> - case S_LND:
> - case S_LNET:
> - return "LNetError";
> - default:
> - return "LustreError";
> - }
> -}
> -
> -static char *
> -dbghdr_to_info_string(struct ptldebug_header *hdr)
> -{
> - switch (hdr->ph_subsys) {
> - case S_LND:
> - case S_LNET:
> - return "LNet";
> - default:
> - return "Lustre";
> - }
> -}
> -
> -void cfs_print_to_console(struct ptldebug_header *hdr, int mask,
> - const char *buf, int len, const char *file,
> - const char *fn)
> -{
> - char *prefix = "Lustre", *ptype = NULL;
> -
> - if (mask & D_EMERG) {
> - prefix = dbghdr_to_err_string(hdr);
> - ptype = KERN_EMERG;
> - } else if (mask & D_ERROR) {
> - prefix = dbghdr_to_err_string(hdr);
> - ptype = KERN_ERR;
> - } else if (mask & D_WARNING) {
> - prefix = dbghdr_to_info_string(hdr);
> - ptype = KERN_WARNING;
> - } else if (mask & (D_CONSOLE | libcfs_printk)) {
> - prefix = dbghdr_to_info_string(hdr);
> - ptype = KERN_INFO;
> - }
> -
> - if (mask & D_CONSOLE) {
> - pr_info("%s%s: %.*s", ptype, prefix, len, buf);
> - } else {
> - pr_info("%s%s: %d:%d:(%s:%d:%s()) %.*s", ptype, prefix,
> - hdr->ph_pid, hdr->ph_extern_pid, file,
> - hdr->ph_line_num, fn, len, buf);
> - }
> -}
> diff --git a/drivers/staging/lustre/lnet/libcfs/tracefile.c b/drivers/staging/lustre/lnet/libcfs/tracefile.c
> index 6d567a9ad8ea..617edc291035 100644
> --- a/drivers/staging/lustre/lnet/libcfs/tracefile.c
> +++ b/drivers/staging/lustre/lnet/libcfs/tracefile.c
> @@ -168,6 +168,161 @@ static inline void cfs_trace_put_tcd(struct cfs_trace_cpu_data *tcd)
> put_cpu();
> }
>
> +/* percents to share the total debug memory for each type */
> +static unsigned int pages_factor[CFS_TCD_TYPE_MAX] = {
> + 80, /* 80% pages for CFS_TCD_TYPE_PROC */
> + 10, /* 10% pages for CFS_TCD_TYPE_SOFTIRQ */
> + 10 /* 10% pages for CFS_TCD_TYPE_IRQ */
> +};
> +
> +char *cfs_trace_console_buffers[NR_CPUS][CFS_TCD_TYPE_MAX];
> +
> +int cfs_tracefile_init_arch(void)
> +{
> + int i;
> + int j;
> + struct cfs_trace_cpu_data *tcd;
> +
> + /* initialize trace_data */
> + memset(cfs_trace_data, 0, sizeof(cfs_trace_data));
> + for (i = 0; i < CFS_TCD_TYPE_MAX; i++) {
> + cfs_trace_data[i] =
> + kmalloc_array(num_possible_cpus(),
> + sizeof(union cfs_trace_data_union),
> + GFP_KERNEL);
> + if (!cfs_trace_data[i])
> + goto out;
> + }
> +
> + /* arch related info initialized */
> + cfs_tcd_for_each(tcd, i, j) {
> + spin_lock_init(&tcd->tcd_lock);
> + tcd->tcd_pages_factor = pages_factor[i];
> + tcd->tcd_type = i;
> + tcd->tcd_cpu = j;
> + }
> +
> + for (i = 0; i < num_possible_cpus(); i++)
> + for (j = 0; j < 3; j++) {
> + cfs_trace_console_buffers[i][j] =
> + kmalloc(CFS_TRACE_CONSOLE_BUFFER_SIZE,
> + GFP_KERNEL);
> +
> + if (!cfs_trace_console_buffers[i][j])
> + goto out;
> + }
> +
> + return 0;
> +
> +out:
> + cfs_tracefile_fini_arch();
> + pr_err("lnet: Not enough memory\n");
> + return -ENOMEM;
> +}
> +
> +void cfs_tracefile_fini_arch(void)
> +{
> + int i;
> + int j;
> +
> + for (i = 0; i < num_possible_cpus(); i++)
> + for (j = 0; j < 3; j++) {
> + kfree(cfs_trace_console_buffers[i][j]);
> + cfs_trace_console_buffers[i][j] = NULL;
> + }
> +
> + for (i = 0; cfs_trace_data[i]; i++) {
> + kfree(cfs_trace_data[i]);
> + cfs_trace_data[i] = NULL;
> + }
> +}
> +
> +enum cfs_trace_buf_type cfs_trace_buf_idx_get(void)
> +{
> + if (in_irq())
> + return CFS_TCD_TYPE_IRQ;
> + if (in_softirq())
> + return CFS_TCD_TYPE_SOFTIRQ;
> + return CFS_TCD_TYPE_PROC;
> +}
> +
> +void
> +cfs_set_ptldebug_header(struct ptldebug_header *header,
> + struct libcfs_debug_msg_data *msgdata,
> + unsigned long stack)
> +{
> + struct timespec64 ts;
> +
> + ktime_get_real_ts64(&ts);
> +
> + header->ph_subsys = msgdata->msg_subsys;
> + header->ph_mask = msgdata->msg_mask;
> + header->ph_cpu_id = smp_processor_id();
> + header->ph_type = cfs_trace_buf_idx_get();
> + /* y2038 safe since all user space treats this as unsigned, but
> + * will overflow in 2106
> + */
> + header->ph_sec = (u32)ts.tv_sec;
> + header->ph_usec = ts.tv_nsec / NSEC_PER_USEC;
> + header->ph_stack = stack;
> + header->ph_pid = current->pid;
> + header->ph_line_num = msgdata->msg_line;
> + header->ph_extern_pid = 0;
> +}
> +
> +static char *
> +dbghdr_to_err_string(struct ptldebug_header *hdr)
> +{
> + switch (hdr->ph_subsys) {
> + case S_LND:
> + case S_LNET:
> + return "LNetError";
> + default:
> + return "LustreError";
> + }
> +}
> +
> +static char *
> +dbghdr_to_info_string(struct ptldebug_header *hdr)
> +{
> + switch (hdr->ph_subsys) {
> + case S_LND:
> + case S_LNET:
> + return "LNet";
> + default:
> + return "Lustre";
> + }
> +}
> +
> +void cfs_print_to_console(struct ptldebug_header *hdr, int mask,
> + const char *buf, int len, const char *file,
> + const char *fn)
> +{
> + char *prefix = "Lustre", *ptype = NULL;
> +
> + if (mask & D_EMERG) {
> + prefix = dbghdr_to_err_string(hdr);
> + ptype = KERN_EMERG;
> + } else if (mask & D_ERROR) {
> + prefix = dbghdr_to_err_string(hdr);
> + ptype = KERN_ERR;
> + } else if (mask & D_WARNING) {
> + prefix = dbghdr_to_info_string(hdr);
> + ptype = KERN_WARNING;
> + } else if (mask & (D_CONSOLE | libcfs_printk)) {
> + prefix = dbghdr_to_info_string(hdr);
> + ptype = KERN_INFO;
> + }
> +
> + if (mask & D_CONSOLE) {
> + pr_info("%s%s: %.*s", ptype, prefix, len, buf);
> + } else {
> + pr_info("%s%s: %d:%d:(%s:%d:%s()) %.*s", ptype, prefix,
> + hdr->ph_pid, hdr->ph_extern_pid, file,
> + hdr->ph_line_num, fn, len, buf);
> + }
> +}
> +
> static inline struct cfs_trace_page *
> cfs_tage_from_list(struct list_head *list)
> {
>
>
>
More information about the lustre-devel
mailing list