change log for rtems (2011-11-03)

rtems-vc at rtems.org rtems-vc at rtems.org
Thu Nov 3 07:12:28 UTC 2011


 *ccj*:
2011-11-03      Chris Johns <chrisj at rtems.org>

        PR 1948/filesystem
        * libfs/src/rfs/rtems-rfs-file-system.c,
        libfs/src/rfs/rtems-rfs-file-system.h,
        libfs/src/rfs/rtems-rfs-format.c, libfs/src/rfs/rtems-rfs-rtems.c:
        Add support for mount passing an ASCIIZ string containing
        configuration options. Remove the hardcoded dir string and
        size. Fix comments.
        * libblock/src/bdbuf.c: Fix state labels in trace output.

M   1.54  cpukit/libblock/src/bdbuf.c
M    1.8  cpukit/libfs/src/rfs/rtems-rfs-file-system.h
M    1.8  cpukit/libfs/src/rfs/rtems-rfs-file-system.c
M    1.9  cpukit/libfs/src/rfs/rtems-rfs-format.c
M   1.19  cpukit/libfs/src/rfs/rtems-rfs-rtems.c

diff -u rtems/cpukit/libblock/src/bdbuf.c:1.53 rtems/cpukit/libblock/src/bdbuf.c:1.54
--- rtems/cpukit/libblock/src/bdbuf.c:1.53	Sun Jul  4 09:53:44 2010
+++ rtems/cpukit/libblock/src/bdbuf.c	Thu Nov  3 01:32:42 2011
@@ -290,7 +290,7 @@
 rtems_bdbuf_show_users (const char* where, rtems_bdbuf_buffer* bd)
 {
   const char* states[] =
-    { "EM", "FR", "CH", "AC", "AM", "MD", "SY", "TR" };
+    { "FR", "EM", "CH", "AC", "AM", "MD", "SY", "TR" };
 
   printf ("bdbuf:users: %15s: [%" PRIu32 " (%s)] %td:%td = %" PRIu32 " %s\n",
           where,

diff -u rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.h:1.7 rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.h:1.8
--- rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.h:1.7	Thu Jun 17 17:00:47 2010
+++ rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.h	Thu Nov  3 01:32:42 2011
@@ -384,11 +384,14 @@
  * @param name The device to open.
  * @param fs The file system data filled in by this call.
  * @param user A pointer to user data.
+ * @param flags The initial set of user flags for the file system.
+ * @param max_held_buffers The maximum number of buffers the RFS holds.
  * @return int The error number (errno). No error if 0.
  */
 int rtems_rfs_fs_open (const char*             name,
                        void*                   user,
                        uint32_t                flags,
+                       uint32_t                max_held_buffers,
                        rtems_rfs_file_system** fs);
 
 /**

diff -u rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.c:1.7 rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.c:1.8
--- rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.c:1.7	Mon Oct 17 08:59:26 2011
+++ rtems/cpukit/libfs/src/rfs/rtems-rfs-file-system.c	Thu Nov  3 01:32:42 2011
@@ -196,6 +196,7 @@
 rtems_rfs_fs_open (const char*             name,
                    void*                   user,
                    uint32_t                flags,
+                   uint32_t                max_held_buffers,
                    rtems_rfs_file_system** fs)
 {
 #if UNUSED
@@ -226,7 +227,7 @@
   rtems_chain_initialize_empty (&(*fs)->release_modified);
   rtems_chain_initialize_empty (&(*fs)->file_shares);
 
-  (*fs)->max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;
+  (*fs)->max_held_buffers = max_held_buffers;
   (*fs)->buffers_count = 0;
   (*fs)->release_count = 0;
   (*fs)->release_modified_count = 0;

diff -u rtems/cpukit/libfs/src/rfs/rtems-rfs-format.c:1.8 rtems/cpukit/libfs/src/rfs/rtems-rfs-format.c:1.9
--- rtems/cpukit/libfs/src/rfs/rtems-rfs-format.c:1.8	Sun Oct 10 23:34:48 2010
+++ rtems/cpukit/libfs/src/rfs/rtems-rfs-format.c	Thu Nov  3 01:32:42 2011
@@ -465,7 +465,9 @@
   /*
    * External API so returns -1.
    */
-  rc = rtems_rfs_fs_open (name, NULL, RTEMS_RFS_FS_FORCE_OPEN, &fs);
+  rc = rtems_rfs_fs_open (name, NULL,
+                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
+                          0, &fs);
   if (rc < 0)
   {
     printf ("rtems-rfs: format: file system open failed: %d: %s\n",

diff -u rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.18 rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.19
--- rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.18	Sun Jul  3 19:31:25 2011
+++ rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c	Thu Nov  3 01:32:42 2011
@@ -106,7 +106,7 @@
     }
     
     /*
-     * Is this the end of the pathname we where given ?
+     * Is this the end of the pathname we were given ?
      */
     if ((*path == '\0') || (pathlen == 0))
       break;
@@ -137,7 +137,7 @@
     }
 
     /*
-     * Eat any separators at start of the path.
+     * Eat any separators at the start of the path.
      */
     stripped = rtems_filesystem_prefix_separators (path, pathlen);
     path += stripped;
@@ -146,7 +146,7 @@
 
     /*
      * If the node is the current directory and there is more path to come move
-     * on it else we are at the inode we want.
+     * on to it otherwise we are at the inode we want.
      */
     if (rtems_rfs_current_dir (node))
     {
@@ -166,7 +166,8 @@
     if (rtems_rfs_parent_dir (node))
     {
       /*
-       * If we are at root inode of the file system we have a crossmount path.
+       * If we are at the root inode of the file system we have a crossmount
+       * path.
        */
       if (ino == RTEMS_RFS_ROOT_INO)
       {
@@ -183,7 +184,9 @@
       /*
        * We need to find the parent of this node.
        */
-      rc = rtems_rfs_dir_lookup_ino (fs, &inode, "..", 2, &ino, &doff);
+      rc = rtems_rfs_dir_lookup_ino (fs, &inode,
+                                     RTEMS_RFS_PARENT_DIR_STR,
+                                     RTEMS_RFS_PARENT_DIR_SIZE, &ino, &doff);
       if (rc > 0)
       {
         rtems_rfs_inode_close (fs, &inode);
@@ -308,7 +311,7 @@
     }
     
     /*
-     * Is this the end of the pathname we where given ?
+     * Is this the end of the pathname we were given ?
      */
     if (path == *name)
       break;
@@ -335,7 +338,7 @@
 
     /*
      * If the node is the current directory and there is more path to come move
-     * on it else we are at the inode we want.
+     * on to it otherwise we are at the inode we want.
      */
     if (rtems_rfs_current_dir (node))
     {
@@ -384,7 +387,9 @@
       /*
        * We need to find the parent of this node.
        */
-      rc = rtems_rfs_dir_lookup_ino (fs, &inode, "..", 2, &ino, &doff);
+      rc = rtems_rfs_dir_lookup_ino (fs, &inode,
+                                     RTEMS_RFS_PARENT_DIR_STR,
+                                     RTEMS_RFS_PARENT_DIR_SIZE, &ino, &doff);
       if (rc > 0)
       {
         rtems_rfs_inode_close (fs, &inode);
@@ -1224,8 +1229,40 @@
 {
   rtems_rfs_rtems_private* rtems;
   rtems_rfs_file_system*   fs;
+  uint32_t                 flags = 0;
+  uint32_t                 max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;
+  const char*              options = data;
   int                      rc;
 
+  /*
+   * Parse the options the user specifiies.
+   */
+  while (options)
+  {
+    printf ("options=%s\n", options);
+    if (strncmp (options, "hold-bitmaps",
+                 sizeof ("hold-bitmaps") - 1) == 0)
+      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;
+    else if (strncmp (options, "no-local-cache",
+                      sizeof ("no-local-cache") - 1) == 0)
+      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;
+    else if (strncmp (options, "max-held-bufs",
+                      sizeof ("max-held-bufs") - 1) == 0)
+    {
+      max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
+    }
+    else
+      return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
+
+    options = strchr (options, ',');
+    if (options)
+    {
+      ++options;
+      if (*options == '\0')
+        options = NULL;
+    }
+  }
+  
   rtems = malloc (sizeof (rtems_rfs_rtems_private));
   if (!rtems)
     return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);
@@ -1247,7 +1284,7 @@
     return rtems_rfs_rtems_error ("initialise: cannot lock access  mutex", rc);
   }
   
-  rc = rtems_rfs_fs_open (mt_entry->dev, rtems, 0, &fs);
+  rc = rtems_rfs_fs_open (mt_entry->dev, rtems, flags, max_held_buffers, &fs);
   if (rc)
   {
     free (rtems);



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20111103/0ea43bfb/attachment-0001.html>


More information about the vc mailing list