[Devel] [PATCH vz10 1/3] ve/printk: Introduce ve_printk_deferred()
Aleksei Oladko
aleksey.oladko at virtuozzo.com
Mon Nov 24 23:42:34 MSK 2025
https://virtuozzo.atlassian.net/browse/VSTOR-119876
Signed-off-by: Aleksei Oladko <aleksey.oladko at virtuozzo.com>
---
include/linux/printk.h | 8 ++++++++
kernel/printk/printk.c | 28 ++++++++++++++++++++++++++++
2 files changed, 36 insertions(+)
diff --git a/include/linux/printk.h b/include/linux/printk.h
index d74ad6f38987..8bbf98d43b93 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -169,6 +169,9 @@ int _printk(const char *fmt, ...);
asmlinkage __printf(2, 3) __cold
int ve_printk(int dst, const char *fmt, ...);
+asmlinkage __printf(2, 3) __cold
+int ve_printk_deferred(int dst, const char *fmt, ...);
+
struct ve_struct;
int ve_log_init(struct ve_struct *ve);
void ve_log_destroy(struct ve_struct *ve);
@@ -237,6 +240,11 @@ int ve_printk(int dst, const char *s, ...)
{
return 0;
}
+static inline __printf(2, 3) __cold
+int ve_printk_deferred(int dst, const char *s, ...)
+{
+ return 0;
+}
static inline
int ve_log_init(struct ve_struct *ve)
{
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index f8e32b5fad0d..719ebe73ae9c 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2558,6 +2558,34 @@ asmlinkage int ve_printk(int dst, const char *fmt, ...)
}
EXPORT_SYMBOL(ve_printk);
+static asmlinkage int ve_vprintk_deferred(int dst, const char *fmt, va_list args)
+{
+ va_list args2;
+ int r = 0;
+
+ va_copy(args2, args);
+ if ((dst & VE0_LOG) || ve_is_super(get_exec_env()))
+ r = vprintk_emit(0, LOGLEVEL_SCHED, NULL, fmt, args);
+ if (!ve_is_super(get_exec_env()) && (dst & VE_LOG))
+ r = ve_vprintk_emit(0, LOGLEVEL_SCHED, NULL, fmt, args2);
+ va_end(args2);
+
+ return r;
+}
+
+asmlinkage int ve_printk_deferred(int dst, const char *fmt, ...)
+{
+ va_list args;
+ int r;
+
+ va_start(args, fmt);
+ r = ve_vprintk_deferred(dst, fmt, args);
+ va_end(args);
+
+ return r;
+}
+EXPORT_SYMBOL(ve_printk_deferred);
+
static asmlinkage int ve_log_vprintk(struct ve_struct *ve, const char *fmt, va_list args)
{
int r = 0;
--
2.43.0
More information about the Devel
mailing list