[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