Trim off some LOOKUP calls we do not need in the nfs loadfile to initialize
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Fri, 25 Jul 2008 07:07:54 +0000 (17:07 +1000)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Fri, 25 Jul 2008 07:07:54 +0000 (17:07 +1000)
the name->fhandle mapping any more.

Make sure to create the /clients directory if it does not exist

nfs.txt
nfsio.c

diff --git a/nfs.txt b/nfs.txt
index 7783b27..6fe3dd2 100644 (file)
--- a/nfs.txt
+++ b/nfs.txt
@@ -1,15 +1,13 @@
 # DELTREE if we want to delete the client directory everytime we restart 
-# the script. Remove these three lines if the script is only "read-only"
+# the script. Remove these two lines if the script is only "read-only"
 # reading from pre-existing files in the /clients/clientX/ tree
-0.000 LOOKUP3 "/clients" 0x00000000
 0.000 Deltree "/clients/client1" 0x00000000
 0.000 MKDIR3 "/clients/client1" 0x00000000
 #
-# These two lokups must be performed to pre-load the name to filehandle cache.
+# This this lookup must be performed to pre-load the name to filehandle cache.
 # Othervise we will get errors like this :
 #     failed to fetch handle in nfsio_read
 #
-0.000 LOOKUP3 "/clients" 0x00000000
 0.000 LOOKUP3 "/clients/client1" 0x00000000
 #
 # Here is where the script starts
diff --git a/nfsio.c b/nfsio.c
index e51ca18..c95f8c3 100644 (file)
--- a/nfsio.c
+++ b/nfsio.c
@@ -54,6 +54,7 @@ static void nfs3_cleanup(struct child_struct *child)
 static void nfs3_setup(struct child_struct *child)
 {
        const char *status = "0x00000000";
+       nfsstat3 res;
 
        child->rate.last_time = timeval_current();
        child->rate.last_bytes = 0;
@@ -67,6 +68,17 @@ static void nfs3_setup(struct child_struct *child)
                printf("nfsio_connect() failed\n");
                exit(10);
        }
+
+       /* create '/clients' */
+       res = nfsio_lookup(child->private, "/clients", NULL);
+       if (res == NFS3ERR_NOENT) {
+               res = nfsio_mkdir(child->private, "/clients");
+               if( (res != NFS3_OK) &&
+                   (res != NFS3ERR_EXIST) ) {
+                       printf("Failed to create '/clients' directory. res:%u\n", res);
+                       exit(10);
+               }
+       }
 }