[DRBD-cvs] r1920 - branches/drbd-0.7/drbd

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Wed Aug 24 17:31:47 CEST 2005


Author: phil
Date: 2005-08-24 17:31:46 +0200 (Wed, 24 Aug 2005)
New Revision: 1920

Modified:
   branches/drbd-0.7/drbd/drbd_proc.c
Log:
Make the new proc stuff to work on kernels older than 2.4.23

!! Do not propagate me to drbd-0.8 !!



Modified: branches/drbd-0.7/drbd/drbd_proc.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_proc.c	2005-08-24 14:00:52 UTC (rev 1919)
+++ branches/drbd-0.7/drbd/drbd_proc.c	2005-08-24 15:31:46 UTC (rev 1920)
@@ -40,6 +40,7 @@
 #include "drbd_int.h"
 
 STATIC int drbd_proc_open(struct inode *inode, struct file *file);
+STATIC int drbd_seq_show(struct seq_file *seq, void *v);
 
 
 struct proc_dir_entry *drbd_proc;
@@ -48,9 +49,33 @@
 	.open		= drbd_proc_open,
 	.read		= seq_read,
 	.llseek		= seq_lseek,
-	.release	= single_release,
+	.release	= seq_release,
 };
 
+// We ommit single_open and single_release, since that is only available
+// after 2.4.23
+static void *single_start(struct seq_file *p, loff_t *pos)
+{
+	return NULL + (*pos == 0);
+}
+
+static void *single_next(struct seq_file *p, void *v, loff_t *pos)
+{
+	++*pos;
+	return NULL;
+}
+
+static void single_stop(struct seq_file *p, void *v)
+{
+}
+
+struct seq_operations drbd_proc_seq_ops = {
+	.start		= single_start,
+	.next		= single_next,
+	.stop		= single_stop,
+	.show		= drbd_seq_show,
+};
+
 /*lge
  * progress bars shamelessly adapted from driver/md/md.c
  * output looks like
@@ -255,7 +280,7 @@
 
 STATIC int drbd_proc_open(struct inode *inode, struct file *file)
 {
-	return single_open(file, drbd_seq_show, PDE(inode)->data);
+	return seq_open(file, &drbd_proc_seq_ops);
 }
 
 /* PROC FS stuff end */



More information about the drbd-cvs mailing list