From: Gu Zheng <guz.fnst-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
To: Rui Xiang <rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Cc: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
libo.chen-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org
Subject: Re: [PATCH 1/9] syslog_ns: add syslog_namespace and put/get_syslog_ns
Date: Mon, 29 Jul 2013 17:40:27 +0800 [thread overview]
Message-ID: <51F6388B.8000308@cn.fujitsu.com> (raw)
In-Reply-To: <1375065080-26740-2-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Hi Rui,
Refer to inline:).
On 07/29/2013 10:31 AM, Rui Xiang wrote:
> Add a struct syslog_namespace which contains the necessary
> members for hanlding syslog and realize get_syslog_ns and
> put_syslog_ns API.
>
> Signed-off-by: Rui Xiang <rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
> ---
> include/linux/syslog.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++
> kernel/printk.c | 7 ------
> 2 files changed, 68 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/syslog.h b/include/linux/syslog.h
> index 98a3153..425fafe 100644
> --- a/include/linux/syslog.h
> +++ b/include/linux/syslog.h
> @@ -21,6 +21,9 @@
> #ifndef _LINUX_SYSLOG_H
> #define _LINUX_SYSLOG_H
>
> +#include <linux/slab.h>
> +#include <linux/kref.h>
> +
> /* Close the log. Currently a NOP. */
> #define SYSLOG_ACTION_CLOSE 0
> /* Open the log. Currently a NOP. */
> @@ -47,6 +50,71 @@
> #define SYSLOG_FROM_READER 0
> #define SYSLOG_FROM_PROC 1
>
> +enum log_flags {
> + LOG_NOCONS = 1, /* already flushed, do not print to console */
> + LOG_NEWLINE = 2, /* text ended with a newline */
> + LOG_PREFIX = 4, /* text started with a prefix */
> + LOG_CONT = 8, /* text is a fragment of a continuation line */
> +};
> +
> +struct syslog_namespace {
> + struct kref kref; /* syslog_ns reference count & control */
> +
> + raw_spinlock_t logbuf_lock; /* access conflict locker */
> + /* cpu currently holding logbuf_lock of ns */
> + unsigned int logbuf_cpu;
> +
> + /* index and sequence number of the first record stored in the buffer */
> + u64 log_first_seq;
> + u32 log_first_idx;
> +
> + /* index and sequence number of the next record stored in the buffer */
> + u64 log_next_seq;
> + u32 log_next_idx;
> +
> + /* the next printk record to read after the last 'clear' command */
> + u64 clear_seq;
> + u32 clear_idx;
> +
> + char *log_buf;
> + u32 log_buf_len;
> +
> + /* the next printk record to write to the console */
> + u64 console_seq;
> + u32 console_idx;
> +
> + /* the next printk record to read by syslog(READ) or /proc/kmsg */
> + u64 syslog_seq;
> + u32 syslog_idx;
> + enum log_flags syslog_prev;
> + size_t syslog_partial;
> +
> + int dmesg_restrict;
> +};
> +
> +static inline struct syslog_namespace *get_syslog_ns(
> + struct syslog_namespace *ns)
> +{
> + if (ns)
> + kref_get(&ns->kref);
> + return ns;
> +}
> +
> +static inline void free_syslog_ns(struct kref *kref)
> +{
> + struct syslog_namespace *ns;
> + ns = container_of(kref, struct syslog_namespace, kref);
> +
> + kfree(ns->log_buf);
> + kfree(ns);
> +}
This interface seems a bit ugly, why not use the format like put_syslog_ns()?
static inline void free_syslog_ns(struct syslog_namespace *ns)
> +
> +static inline void put_syslog_ns(struct syslog_namespace *ns)
> +{
> + if (ns)
> + kref_put(&ns->kref, free_syslog_ns);
> +}
> +
> int do_syslog(int type, char __user *buf, int count, bool from_file);
>
> #endif /* _LINUX_SYSLOG_H */
> diff --git a/kernel/printk.c b/kernel/printk.c
> index d37d45c..7e544bf 100644
> --- a/kernel/printk.c
> +++ b/kernel/printk.c
> @@ -193,13 +193,6 @@ static int console_may_schedule;
> * separated by ',', and find the message after the ';' character.
> */
>
> -enum log_flags {
> - LOG_NOCONS = 1, /* already flushed, do not print to console */
> - LOG_NEWLINE = 2, /* text ended with a newline */
> - LOG_PREFIX = 4, /* text started with a prefix */
> - LOG_CONT = 8, /* text is a fragment of a continuation line */
> -};
> -
> struct log {
> u64 ts_nsec; /* timestamp in nanoseconds */
> u16 len; /* length of entire record */
WARNING: multiple messages have this Message-ID (diff)
From: Gu Zheng <guz.fnst@cn.fujitsu.com>
To: Rui Xiang <rui.xiang@huawei.com>
Cc: containers@lists.linux-foundation.org,
linux-kernel@vger.kernel.org, serge.hallyn@ubuntu.com,
ebiederm@xmission.com, akpm@linux-foundation.org,
gaofeng@cn.fujitsu.com, libo.chen@huawei.com
Subject: Re: [PATCH 1/9] syslog_ns: add syslog_namespace and put/get_syslog_ns
Date: Mon, 29 Jul 2013 17:40:27 +0800 [thread overview]
Message-ID: <51F6388B.8000308@cn.fujitsu.com> (raw)
In-Reply-To: <1375065080-26740-2-git-send-email-rui.xiang@huawei.com>
Hi Rui,
Refer to inline:).
On 07/29/2013 10:31 AM, Rui Xiang wrote:
> Add a struct syslog_namespace which contains the necessary
> members for hanlding syslog and realize get_syslog_ns and
> put_syslog_ns API.
>
> Signed-off-by: Rui Xiang <rui.xiang@huawei.com>
> ---
> include/linux/syslog.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++
> kernel/printk.c | 7 ------
> 2 files changed, 68 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/syslog.h b/include/linux/syslog.h
> index 98a3153..425fafe 100644
> --- a/include/linux/syslog.h
> +++ b/include/linux/syslog.h
> @@ -21,6 +21,9 @@
> #ifndef _LINUX_SYSLOG_H
> #define _LINUX_SYSLOG_H
>
> +#include <linux/slab.h>
> +#include <linux/kref.h>
> +
> /* Close the log. Currently a NOP. */
> #define SYSLOG_ACTION_CLOSE 0
> /* Open the log. Currently a NOP. */
> @@ -47,6 +50,71 @@
> #define SYSLOG_FROM_READER 0
> #define SYSLOG_FROM_PROC 1
>
> +enum log_flags {
> + LOG_NOCONS = 1, /* already flushed, do not print to console */
> + LOG_NEWLINE = 2, /* text ended with a newline */
> + LOG_PREFIX = 4, /* text started with a prefix */
> + LOG_CONT = 8, /* text is a fragment of a continuation line */
> +};
> +
> +struct syslog_namespace {
> + struct kref kref; /* syslog_ns reference count & control */
> +
> + raw_spinlock_t logbuf_lock; /* access conflict locker */
> + /* cpu currently holding logbuf_lock of ns */
> + unsigned int logbuf_cpu;
> +
> + /* index and sequence number of the first record stored in the buffer */
> + u64 log_first_seq;
> + u32 log_first_idx;
> +
> + /* index and sequence number of the next record stored in the buffer */
> + u64 log_next_seq;
> + u32 log_next_idx;
> +
> + /* the next printk record to read after the last 'clear' command */
> + u64 clear_seq;
> + u32 clear_idx;
> +
> + char *log_buf;
> + u32 log_buf_len;
> +
> + /* the next printk record to write to the console */
> + u64 console_seq;
> + u32 console_idx;
> +
> + /* the next printk record to read by syslog(READ) or /proc/kmsg */
> + u64 syslog_seq;
> + u32 syslog_idx;
> + enum log_flags syslog_prev;
> + size_t syslog_partial;
> +
> + int dmesg_restrict;
> +};
> +
> +static inline struct syslog_namespace *get_syslog_ns(
> + struct syslog_namespace *ns)
> +{
> + if (ns)
> + kref_get(&ns->kref);
> + return ns;
> +}
> +
> +static inline void free_syslog_ns(struct kref *kref)
> +{
> + struct syslog_namespace *ns;
> + ns = container_of(kref, struct syslog_namespace, kref);
> +
> + kfree(ns->log_buf);
> + kfree(ns);
> +}
This interface seems a bit ugly, why not use the format like put_syslog_ns()?
static inline void free_syslog_ns(struct syslog_namespace *ns)
> +
> +static inline void put_syslog_ns(struct syslog_namespace *ns)
> +{
> + if (ns)
> + kref_put(&ns->kref, free_syslog_ns);
> +}
> +
> int do_syslog(int type, char __user *buf, int count, bool from_file);
>
> #endif /* _LINUX_SYSLOG_H */
> diff --git a/kernel/printk.c b/kernel/printk.c
> index d37d45c..7e544bf 100644
> --- a/kernel/printk.c
> +++ b/kernel/printk.c
> @@ -193,13 +193,6 @@ static int console_may_schedule;
> * separated by ',', and find the message after the ';' character.
> */
>
> -enum log_flags {
> - LOG_NOCONS = 1, /* already flushed, do not print to console */
> - LOG_NEWLINE = 2, /* text ended with a newline */
> - LOG_PREFIX = 4, /* text started with a prefix */
> - LOG_CONT = 8, /* text is a fragment of a continuation line */
> -};
> -
> struct log {
> u64 ts_nsec; /* timestamp in nanoseconds */
> u16 len; /* length of entire record */
next prev parent reply other threads:[~2013-07-29 9:40 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-29 2:31 [PATCH 0/9] Add namespace support for syslog v2 Rui Xiang
2013-07-29 2:31 ` [PATCH 1/9] syslog_ns: add syslog_namespace and put/get_syslog_ns Rui Xiang
[not found] ` <1375065080-26740-2-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-29 9:40 ` Gu Zheng [this message]
2013-07-29 9:40 ` Gu Zheng
[not found] ` <51F6388B.8000308-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-07-29 11:47 ` Rui Xiang
2013-07-29 11:47 ` Rui Xiang
[not found] ` <51F65636.6080505-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-30 0:46 ` Gu Zheng
2013-07-30 0:46 ` Gu Zheng
2013-07-29 2:31 ` [PATCH 3/9] syslog_ns: add init syslog_ns for global syslog Rui Xiang
2013-07-29 2:31 ` [PATCH 4/9] syslog_ns: make syslog handling per namespace Rui Xiang
[not found] ` <1375065080-26740-5-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-29 9:50 ` Gu Zheng
2013-07-29 9:50 ` Gu Zheng
2013-08-01 1:36 ` Gao feng
2013-08-01 1:36 ` Gao feng
[not found] ` <51F9BBAB.1080306-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-08-01 3:10 ` Rui Xiang
2013-08-01 3:10 ` Rui Xiang
[not found] ` <51F9D1A2.406-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-01 5:38 ` Gao feng
2013-08-01 5:38 ` Gao feng
[not found] ` <51F9F452.9060308-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-08-01 6:29 ` Rui Xiang
2013-08-01 6:29 ` Rui Xiang
2013-07-29 2:31 ` [PATCH 5/9] syslog_ns: make permisiion check per user namespace Rui Xiang
2013-07-29 2:31 ` [PATCH 6/9] syslog_ns: use init syslog_ns for console action Rui Xiang
2013-07-29 2:31 ` [PATCH 8/9] syslog_ns: implement ns_printk for specific syslog_ns Rui Xiang
[not found] ` <1375065080-26740-9-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-29 10:37 ` Gu Zheng
2013-07-29 10:37 ` Gu Zheng
[not found] ` <51F645E4.9070507-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-07-29 12:17 ` Rui Xiang
2013-07-29 12:17 ` Rui Xiang
2013-07-29 2:31 ` [PATCH 9/9] netfilter: use ns_printk in iptable context Rui Xiang
[not found] ` <1375065080-26740-10-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-29 9:48 ` Gao feng
2013-07-29 9:48 ` Gao feng
[not found] ` <51F63A88.4090405-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-07-29 12:37 ` Rui Xiang
2013-07-29 12:37 ` Rui Xiang
[not found] ` <1375065080-26740-1-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-29 2:31 ` [PATCH 1/9] syslog_ns: add syslog_namespace and put/get_syslog_ns Rui Xiang
2013-07-29 2:31 ` [PATCH 2/9] syslog_ns: add syslog_ns into user_namespace Rui Xiang
2013-07-29 2:31 ` Rui Xiang
[not found] ` <1375065080-26740-3-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-29 9:46 ` Gu Zheng
2013-07-29 9:46 ` Gu Zheng
[not found] ` <51F639FB.304-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-07-29 9:54 ` Gao feng
2013-07-29 9:54 ` Gao feng
[not found] ` <51F63BD2.6090902-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-07-29 9:56 ` Gu Zheng
2013-07-29 9:56 ` Gu Zheng
2013-07-29 2:31 ` [PATCH 3/9] syslog_ns: add init syslog_ns for global syslog Rui Xiang
2013-07-29 2:31 ` [PATCH 4/9] syslog_ns: make syslog handling per namespace Rui Xiang
2013-07-29 2:31 ` [PATCH 5/9] syslog_ns: make permisiion check per user namespace Rui Xiang
2013-07-29 2:31 ` [PATCH 6/9] syslog_ns: use init syslog_ns for console action Rui Xiang
2013-07-29 2:31 ` [PATCH 7/9] syslog_ns: implement function for creating syslog ns Rui Xiang
2013-07-29 2:31 ` Rui Xiang
[not found] ` <1375065080-26740-8-git-send-email-rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-29 10:25 ` Gu Zheng
2013-07-29 10:25 ` Gu Zheng
[not found] ` <51F64313.4010700-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-07-30 3:39 ` Rui Xiang
2013-07-30 3:39 ` Rui Xiang
[not found] ` <51F73555.1020204-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-07-30 3:42 ` Gu Zheng
2013-07-30 3:42 ` Gu Zheng
2013-07-29 10:39 ` Gao feng
2013-07-29 10:39 ` Gao feng
2013-07-29 2:31 ` [PATCH 8/9] syslog_ns: implement ns_printk for specific syslog_ns Rui Xiang
2013-07-29 2:31 ` [PATCH 9/9] netfilter: use ns_printk in iptable context Rui Xiang
2013-07-29 9:33 ` [PATCH 0/9] Add namespace support for syslog v2 Gu Zheng
2013-07-29 9:33 ` Gu Zheng
2013-07-29 18:58 ` Eric W. Biederman
2013-07-29 18:58 ` Eric W. Biederman
[not found] ` <87wqo9urao.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-07-30 2:11 ` Rui Xiang
2013-07-30 2:11 ` Rui Xiang
2013-07-30 6:05 ` Bruno Prémont
2013-07-30 6:05 ` Bruno Prémont
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51F6388B.8000308@cn.fujitsu.com \
--to=guz.fnst-bthxqxjhjhxqfuhtdcdx3a@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=libo.chen-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rui.xiang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.