[Devel] [PATCH RHEL10 COMMIT] vzstat: cleanup proc entry creation code

Konstantin Khorenko khorenko at virtuozzo.com
Fri Sep 5 19:28:09 MSK 2025


The commit is pushed to "branch-rh10-6.12.0-55.13.1.2.x.vz10-ovz" and will appear at git at bitbucket.org:openvz/vzkernel.git
after rh10-6.12.0-55.13.1.2.3.vz10
------>
commit 1fb052486a1a3581990a59d67758983ff70b17da
Author: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
Date:   Thu Sep 4 11:11:23 2025 +0800

    vzstat: cleanup proc entry creation code
    
    Replace single proc file open-coded implementation through proc_create
    with shorter and simplier proc_create_single. Can do this because
    empty_seq_* ops are equivalents of single_* ops.
    
    While on it also remove single-return "fail_lat" label in accordance
    with the coding-style.
    
    https://virtuozzo.atlassian.net/browse/VSTOR-106081
    Fixes: 7751c70f38d2a ("vzstat: Add vzstat module and kstat interfaces")
    Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
    
    Feature: ve: extra statistics (mm, latency)
---
 kernel/ve/vzstat.c | 99 +++---------------------------------------------------
 1 file changed, 4 insertions(+), 95 deletions(-)

diff --git a/kernel/ve/vzstat.c b/kernel/ve/vzstat.c
index ed8ae00677591..8420adba3af5f 100644
--- a/kernel/ve/vzstat.c
+++ b/kernel/ve/vzstat.c
@@ -599,53 +599,6 @@ static int vzstat_mon_loop(void* data)
 	return 0;
 }
 
-/*
- * ------------------------------------------------------------------------
- * default sequential files methods
- * ------------------------------------------------------------------------
- */
-static void *empty_seq_start(struct seq_file *m, loff_t *pos)
-{
-	if (*pos == 0)
-		return (void*)1;
-	else
-		return NULL;
-}
-
-static void *empty_seq_next(struct seq_file *m, void *v, loff_t *pos)
-{
-	(*pos)++;
-	return NULL;
-}
-
-static void empty_seq_stop(struct seq_file *m, void *v)
-{
-}
-
-/*
- * ------------------------------------------------------------------------
- * /proc/vz/latency sequential file methods
- * ------------------------------------------------------------------------
- */
-static struct seq_operations latency_seq_op = {
-	start:	empty_seq_start,
-	next:	empty_seq_next,
-	stop:	empty_seq_stop,
-	show:	latency_seq_show
-};
-
-static int latency_open(struct inode *inode, struct file *file)
-{
-	return seq_open(file, &latency_seq_op);
-}
-
-static struct proc_ops proc_latency_operations = {
-	.proc_open = latency_open,
-	.proc_read = seq_read,
-	.proc_lseek = seq_lseek,
-	.proc_release = seq_release,
-};
-
 /*
  * ------------------------------------------------------------------------
  * /proc/vz/stats sequential file methods
@@ -668,49 +621,6 @@ static int stats_seq_show(struct seq_file *m, void *v)
 	return 0;
 }
 
-static struct seq_operations stats_seq_op = {
-	start:	empty_seq_start,
-	next:	empty_seq_next,
-	stop:	empty_seq_stop,
-	show:	stats_seq_show
-};
-
-static int stats_open(struct inode *inode, struct file *file)
-{
-	return seq_open(file, &stats_seq_op);
-}
-
-static struct proc_ops proc_stats_operations = {
-	.proc_open = stats_open,
-	.proc_read = seq_read,
-	.proc_lseek = seq_lseek,
-	.proc_release = seq_release,
-};
-
-/*
- * ------------------------------------------------------------------------
- * /proc/vz/mmperf sequential file methods
- * ------------------------------------------------------------------------
- */
-static struct seq_operations mmperf_seq_op = {
-	start:	empty_seq_start,
-	next:	empty_seq_next,
-	stop:	empty_seq_stop,
-	show:	mmperf_seq_show
-};
-
-static int mmperf_open(struct inode *inode, struct file *file)
-{
-	return seq_open(file, &mmperf_seq_op);
-}
-
-static struct proc_ops proc_mmperf_operations = {
-	.proc_open = mmperf_open,
-	.proc_read = seq_read,
-	.proc_lseek = seq_lseek,
-	.proc_release = seq_release,
-};
-
 /*
  * ------------------------------------------------------------------------
  * module init/exit code
@@ -721,19 +631,19 @@ static int __init vzstat_mon_init(void)
 {
 	struct proc_dir_entry *entry;
 
-	entry = proc_create("latency", S_IRUGO, proc_vz_dir, &proc_latency_operations);
+	entry = proc_create_single("latency", S_IRUGO, proc_vz_dir, latency_seq_show);
 	if (entry == NULL) {
 		printk(KERN_WARNING "VZSTAT: can't make proc entry\n");
-		goto fail_lat;
+		return -EBUSY;
 	}
 
-	entry = proc_create("stats", S_IRUGO, proc_vz_dir, &proc_stats_operations);
+	entry = proc_create_single("stats", S_IRUGO, proc_vz_dir, stats_seq_show);
 	if (!entry) {
 		printk(KERN_WARNING "VZSTAT: can't make proc entry\n");
 		goto fail_stat;
 	}
 
-	entry = proc_create("mmperf", S_IRUGO, proc_vz_dir, &proc_mmperf_operations);
+	entry = proc_create_single("mmperf", S_IRUGO, proc_vz_dir, mmperf_seq_show);
 	if (!entry) {
 		printk(KERN_WARNING "VZSTAT: can't make proc entry\n");
 		goto fail_perf;
@@ -753,7 +663,6 @@ static int __init vzstat_mon_init(void)
 	remove_proc_entry("stats", proc_vz_dir);
 fail_stat:
 	remove_proc_entry("latency", proc_vz_dir);
-fail_lat:
 	return -EBUSY;
 }
 


More information about the Devel mailing list