[Ocfs2-tools-commits] jlbec commits r1089 - trunk/libo2cb

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Sep 23 20:17:55 CDT 2005


Author: jlbec
Date: 2005-09-23 20:17:55 -0500 (Fri, 23 Sep 2005)
New Revision: 1089

Modified:
   trunk/libo2cb/o2cb_abi.c
Log:

o Make interface_revision sysfs work.



Modified: trunk/libo2cb/o2cb_abi.c
===================================================================
--- trunk/libo2cb/o2cb_abi.c	2005-09-23 00:18:44 UTC (rev 1088)
+++ trunk/libo2cb/o2cb_abi.c	2005-09-24 01:17:55 UTC (rev 1089)
@@ -409,16 +409,14 @@
 	return err;
 }
 
-#define O2CB_NM_REVISION_PATH	"/proc/fs/ocfs2_nodemanager/interface_revision"
-errcode_t o2cb_init(void)
+
+static errcode_t try_file(const char *name, int *fd)
 {
-	int ret, fd;
-	unsigned int module_version;
-	errcode_t err;
-	char revision_string[16];
+	int open_fd;
+	errcode_t err = 0;
 
-	fd = open(O2CB_NM_REVISION_PATH, O_RDONLY);
-	if (fd == -1) {
+	open_fd = open(name, O_RDONLY);
+	if (open_fd < 0) {
 		switch (errno) {
 			default:
 				err = O2CB_ET_INTERNAL_FAILURE;
@@ -436,9 +434,29 @@
 				err = O2CB_ET_PERMISSION_DENIED;
 				break;
 		}
-		return err;
 	}
 
+	if (!err)
+		*fd = open_fd;
+
+	return err;
+}
+
+#define O2CB_INTERFACE_REVISION_PATH_OLD	"/proc/fs/ocfs2_nodemanager/interface_revision"
+#define O2CB_INTERFACE_REVISION_PATH		"/sys/o2cb/interface_revision"
+errcode_t o2cb_init(void)
+{
+	int ret, fd;
+	unsigned int module_version;
+	errcode_t err;
+	char revision_string[16];
+
+	err = try_file(O2CB_INTERFACE_REVISION_PATH, &fd);
+	if (err == O2CB_ET_SERVICE_UNAVAILABLE)
+		err = try_file(O2CB_INTERFACE_REVISION_PATH_OLD, &fd);
+	if (err)
+		return err;
+
 	ret = do_read(fd, revision_string, sizeof(revision_string) - 1);
 	close(fd);
 



More information about the Ocfs2-tools-commits mailing list