[Pvfs2-users] make kmod problem pvfs2_ioctl32_init undefined

Murali Vilayannur vilayann at mcs.anl.gov
Thu Apr 20 23:02:56 EDT 2006


Hi Joerg,
Can you try the attached patch and see if it works out? Hopefully, it
should fix things..
Thanks,
Murali

On Thu, 20 Apr 2006, Joerg Bashir wrote:

> On Thursday 20 April 2006 18:14, Joerg Bashir wrote:
> > On Thursday 20 April 2006 18:03, Joerg Bashir wrote:
> > > The relevant portions...
> > >
> > > listen(4, 256)                          = 0
> > > stat64("/var/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=80, ...}) = 0
> > > open("__db.001", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0660) = -1 EROFS
> > > (Read-only file system)
> > > gettimeofday({1145581232, 794374}, NULL) = 0
> > > stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=56, ...}) = 0
> > > write(3, "[E 01:00:32.794374] src/io/trove"..., 103) = 103
> >
> > Actually, it does one of these earlier for some reason.
> >
> > chdir("/")                              = 0
> >
> > / is read-only on this system
>
> So I got around this by telling it to chdir to /var/tmp.
>
> Also, on the 64 bit / 32 bit issue:
>
> I had to recompile the kernel module "make kmod" of pvfs2 on the 32 bit
> userspace / 64 bit kernel client node in order to create 32 bit pvfs2-client
> binaries and such.  Once that was done, they worked with the 64 bit pvfs2
> kernel module I had already loaded previously.
>
> I'm concerned about the __db files.
>
> Their location isn't specified in the config file.  I put them in /var/tmp,
> but that's only a tmpfs. (All these nodes are NFS rooted Debian/Unstable PXE
> clients)
>
> Are these files stateful, shall I place them somewhere more premanent than
> tmpfs. :-)
>
>
> > _______________________________________________
> > Pvfs2-users mailing list
> > Pvfs2-users at beowulf-underground.org
> > http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
>
>
-------------- next part --------------
Index: maint/config/kernel.m4
===================================================================
RCS file: /anoncvs/pvfs2/maint/config/kernel.m4,v
retrieving revision 1.4
diff -u -r1.4 kernel.m4
--- maint/config/kernel.m4	7 Apr 2006 20:30:53 -0000	1.4
+++ maint/config/kernel.m4	21 Apr 2006 02:59:18 -0000
@@ -286,7 +286,7 @@
 
 	AC_MSG_CHECKING(for second arg type int in address_space_operations releasepage)
 	tmp_cflags=$CFLAGS
-	CFLAGS="$CFLAGS"
+	CFLAGS="$CFLAGS -Werror"
 	AC_TRY_COMPILE([
 	    #define __KERNEL__
 	    #include <linux/fs.h>
@@ -304,7 +304,7 @@
 
 	AC_MSG_CHECKING(for int return in inode_operations follow_link)
 	tmp_cflags=$CFLAGS
-	CFLAGS="$CFLAGS"
+	CFLAGS="$CFLAGS -Werror"
 	AC_TRY_COMPILE([
 	    #define __KERNEL__
 	    #include <linux/fs.h>
Index: src/io/trove/trove-dbpf/dbpf-mgmt.c
===================================================================
RCS file: /anoncvs/pvfs2/src/io/trove/trove-dbpf/dbpf-mgmt.c,v
retrieving revision 1.68
diff -u -r1.68 dbpf-mgmt.c
--- src/io/trove/trove-dbpf/dbpf-mgmt.c	4 Apr 2006 04:47:12 -0000	1.68
+++ src/io/trove/trove-dbpf/dbpf-mgmt.c	21 Apr 2006 02:59:18 -0000
@@ -48,19 +48,24 @@
 
 struct dbpf_storage *my_storage_p = NULL;
 
-DB_ENV *dbpf_getdb_env(void)
+DB_ENV *dbpf_getdb_env(const char *sto_path)
 {
     static DB_ENV *dbenv = NULL;
     if (dbenv == NULL)
     {
         int ret;
+
         ret = db_env_create(&dbenv, 0);
         if (ret != 0)
         {
             gossip_lerr("dbpf_getdb_env: %s\n", db_strerror(ret));
             return NULL;
         }
-        dbenv->flags |= DB_ENV_DBLOCAL;
+        ret = dbenv->open(dbenv, sto_path, DB_INIT_MPOOL | DB_CREATE | DB_THREAD, 0);
+        if (ret != 0) {
+            gossip_lerr("dbpf_getdb_env: %s\n", db_strerror(ret));
+            return NULL;
+        }
     }
     return dbenv;
 }
@@ -88,8 +93,8 @@
 
 static struct dbpf_storage *dbpf_storage_lookup(
     char *stoname, int *err_p);
-static int dbpf_db_create(char *dbname);
-static DB *dbpf_db_open(char *dbname, int *err_p,
+static int dbpf_db_create(const char *sto_path, char *dbname);
+static DB *dbpf_db_open(const char *sto_path, char *dbname, int *err_p,
                         int (*compare_fn) (DB *db,
                                            const DBT *dbt1,
                                            const DBT *dbt2));
@@ -406,14 +411,14 @@
     }
 
     DBPF_GET_STO_ATTRIB_DBNAME(sto_attrib_dbname, PATH_MAX, stoname);
-    ret = dbpf_db_create(sto_attrib_dbname);
+    ret = dbpf_db_create(storage_dirname, sto_attrib_dbname);
     if (ret != 0)
     {
         return ret;
     }
     
     DBPF_GET_COLLECTIONS_DBNAME(collections_dbname, PATH_MAX, stoname);
-    ret = dbpf_db_create(collections_dbname);
+    ret = dbpf_db_create(storage_dirname, collections_dbname);
     if (ret != 0)
     {
 	gossip_lerr("dbpf_storage_create: removing storage attribute database after failed create attempt");
@@ -563,17 +568,17 @@
 
     DBPF_GET_COLL_ATTRIB_DBNAME(path_name, PATH_MAX,
                                 sto_p->name, new_coll_id);
-    db_p = dbpf_db_open(path_name, &error, NULL);
+    db_p = dbpf_db_open(sto_p->name, path_name, &error, NULL);
     if (db_p == NULL)
     {
-        ret = dbpf_db_create(path_name);
+        ret = dbpf_db_create(sto_p->name, path_name);
         if (ret != 0)
         {
             gossip_err("dbpf_db_create failed on attrib db %s\n", path_name);
             return ret;
         }
 
-        db_p = dbpf_db_open(path_name, &error, NULL);
+        db_p = dbpf_db_open(sto_p->name, path_name, &error, NULL);
         if (db_p == NULL)
         {
             gossip_err("dbpf_db_open failed on attrib db %s\n", path_name);
@@ -623,10 +628,10 @@
     db_p->close(db_p, 0);
 
     DBPF_GET_DS_ATTRIB_DBNAME(path_name, PATH_MAX, sto_p->name, new_coll_id);
-    db_p = dbpf_db_open(path_name, &error, NULL);
+    db_p = dbpf_db_open(sto_p->name, path_name, &error, NULL);
     if (db_p == NULL)
     {
-        ret = dbpf_db_create(path_name);
+        ret = dbpf_db_create(sto_p->name, path_name);
         if (ret != 0)
         {
             gossip_err("dbpf_db_create failed on %s\n", path_name);
@@ -639,10 +644,10 @@
     }
 
     DBPF_GET_KEYVAL_DBNAME(path_name, PATH_MAX, sto_p->name, new_coll_id);
-    db_p = dbpf_db_open(path_name, &error, NULL);
+    db_p = dbpf_db_open(sto_p->name, path_name, &error, NULL);
     if (db_p == NULL)
     {
-        ret = dbpf_db_create(path_name);
+        ret = dbpf_db_create(sto_p->name, path_name);
         if (ret != 0)
         {
             gossip_err("dbpf_db_create failed on %s\n", path_name);
@@ -1062,7 +1067,7 @@
 
     DBPF_GET_DS_ATTRIB_DBNAME(path_name, PATH_MAX,
                               sto_p->name, coll_p->coll_id);
-    coll_p->ds_db = dbpf_db_open(path_name, &ret, NULL);
+    coll_p->ds_db = dbpf_db_open(sto_p->name, path_name, &ret, NULL);
     if (coll_p->ds_db == NULL)
     {
         return ret;
@@ -1070,7 +1075,7 @@
 
     DBPF_GET_KEYVAL_DBNAME(path_name, PATH_MAX,
                            sto_p->name, coll_p->coll_id);
-    coll_p->keyval_db = dbpf_db_open(path_name, &ret, 
+    coll_p->keyval_db = dbpf_db_open(sto_p->name, path_name, &ret, 
                                      PINT_trove_dbpf_keyval_compare);
     if(coll_p->keyval_db == NULL)
     {
@@ -1079,7 +1084,7 @@
 
     DBPF_GET_COLL_ATTRIB_DBNAME(path_name, PATH_MAX,
                                 sto_p->name, coll_p->coll_id);
-    coll_p->coll_attr_db = dbpf_db_open(path_name, &ret, NULL);
+    coll_p->coll_attr_db = dbpf_db_open(sto_p->name, path_name, &ret, NULL);
     if (coll_p->coll_attr_db == NULL)
     {
         return ret;
@@ -1174,7 +1179,7 @@
 
     DBPF_GET_STO_ATTRIB_DBNAME(path_name, PATH_MAX, stoname);
 
-    sto_p->sto_attr_db = dbpf_db_open(path_name, error_p, NULL);
+    sto_p->sto_attr_db = dbpf_db_open(sto_p->name, path_name, error_p, NULL);
     if (sto_p->sto_attr_db == NULL)
     {
         return NULL;
@@ -1182,7 +1187,7 @@
 
     DBPF_GET_COLLECTIONS_DBNAME(path_name, PATH_MAX, stoname);
 
-    sto_p->coll_db = dbpf_db_open(path_name, error_p, NULL);
+    sto_p->coll_db = dbpf_db_open(sto_p->name, path_name, error_p, NULL);
     if (sto_p->coll_db == NULL)
     {
         return NULL;
@@ -1261,13 +1266,13 @@
 /* Internal function for creating first instances of the databases for
  * a db plus files storage region.
  */
-static int dbpf_db_create(char *dbname)
+static int dbpf_db_create(const char *sto_path, char *dbname)
 {
     int ret = -TROVE_EINVAL;
     DB *db_p = NULL;
     DB_ENV *envp = NULL;
 
-    if ((envp = dbpf_getdb_env()) == NULL)
+    if ((envp = dbpf_getdb_env(sto_path)) == NULL)
     {
         return TROVE_ENOMEM;
     }
@@ -1315,7 +1320,7 @@
  * Returns NULL on error, passing a trove error type back in the
  * integer pointed to by error_p.
  */
-static DB *dbpf_db_open(char *dbname, int *error_p,
+static DB *dbpf_db_open(const char *sto_path, char *dbname, int *error_p,
                         int (*compare_fn) (DB *db, 
                                            const DBT *dbt1, 
                                            const DBT *dbt2))
@@ -1324,7 +1329,7 @@
     DB *db_p = NULL;
     DB_ENV *envp = NULL;
 
-    if ((envp = dbpf_getdb_env()) == NULL)
+    if ((envp = dbpf_getdb_env(sto_path)) == NULL)
     {
         *error_p = TROVE_ENOMEM;
         return NULL;
Index: src/io/trove/trove-dbpf/dbpf-open-cache.c
===================================================================
RCS file: /anoncvs/pvfs2/src/io/trove/trove-dbpf/dbpf-open-cache.c,v
retrieving revision 1.18
diff -u -r1.18 dbpf-open-cache.c
--- src/io/trove/trove-dbpf/dbpf-open-cache.c	4 Apr 2006 04:47:12 -0000	1.18
+++ src/io/trove/trove-dbpf/dbpf-open-cache.c	21 Apr 2006 02:59:18 -0000
@@ -314,7 +314,7 @@
     int tmp_error = 0;
     DB_ENV *envp = NULL;
 
-    if ((envp = dbpf_getdb_env()) == NULL)
+    if ((envp = dbpf_getdb_env(NULL)) == NULL)
     {
         return TROVE_ENOMEM;
     }
Index: src/io/trove/trove-dbpf/dbpf.h
===================================================================
RCS file: /anoncvs/pvfs2/src/io/trove/trove-dbpf/dbpf.h,v
retrieving revision 1.64
diff -u -r1.64 dbpf.h
--- src/io/trove/trove-dbpf/dbpf.h	4 Apr 2006 15:23:43 -0000	1.64
+++ src/io/trove/trove-dbpf/dbpf.h	21 Apr 2006 02:59:18 -0000
@@ -520,7 +520,7 @@
                     ++s_dbpf_metadata_writes, PINT_PERF_SET);\
 } while(0)
 
-extern DB_ENV *dbpf_getdb_env(void);
+extern DB_ENV *dbpf_getdb_env(const char *sto_path);
 
 #if defined(__cplusplus)
 }


More information about the Pvfs2-users mailing list