[haiku-commits] r36080 - haiku/trunk/src/add-ons/kernel/file_systems/googlefs

Author: mmu_man
Date: 2010-04-08 03:35:58 +0200 (Thu, 08 Apr 2010)
New Revision: 36080
Changeset: http://dev.haiku-os.org/changeset/36080/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/file_systems/googlefs/googlefs.c
Log:
Fix broken TRACE() arg. Add more tracing to spot a crash on unmount after 
deleting a folder. Return B_OK from read() when node has no data, this allows 
copying bookmarks which are empty files.


Modified: haiku/trunk/src/add-ons/kernel/file_systems/googlefs/googlefs.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/file_systems/googlefs/googlefs.c     
2010-04-08 00:36:52 UTC (rev 36079)
+++ haiku/trunk/src/add-ons/kernel/file_systems/googlefs/googlefs.c     
2010-04-08 01:35:58 UTC (rev 36080)
@@ -222,7 +222,7 @@
 static int googlefs_free_vnode(fs_volume *_volume, fs_node *node)
 {
        fs_nspace *ns = (fs_nspace *)_volume->private_volume;
-       TRACE((PFS "%s(%ld, %Ld, %s)\n", __FUNCTION__, ns->nsid, node->vnid));
+       TRACE((PFS "%s(%ld, %Ld)\n", __FUNCTION__, ns->nsid, node->vnid));
        free_lock(&node->l);
        atomic_add(&ns->nodecount, -1);
        vnidpool_put(ns->vnids, node->vnid);
@@ -246,12 +246,15 @@
        if (node->vnid == ns->rootid) {
                TRACE((PFS "asked to remove the root node!!\n"));
        }
+TRACE((PFS "SLL_REMOVE(ns->nodes %p, nlnext, %p)\n", ns->nodes, node));
        //LOCK(&node->l);
        err = SLL_REMOVE(ns->nodes, nlnext, node);
        /* query dirs must be removed from the query list too */
+TRACE((PFS "SLL_REMOVE(ns->queries %p, qnext, %p)\n", ns->nodes, node));
        err = SLL_REMOVE(ns->queries, qnext, node);
        if (node->parent) {
                LOCK(&node->parent->l);
+TRACE((PFS "SLL_REMOVE(node->parent->children %p, next, %p)\n", 
node->parent->children, node));
                SLL_REMOVE(node->parent->children, next, node);
                UNLOCK(&node->parent->l);
        }
@@ -617,11 +620,9 @@
        fs_node *node = (fs_node *)_node->private_node;
        status_t err = B_OK;
        TRACE((PFS"read(%ld, %Ld, %Ld, %ld)\n", ns->nsid, node->vnid, pos, 
*len));
-       if (node->data_size == 0 || !node->data)
-               err = ENOSYS;
        if (pos < 0 || pos > node->data_size)
                err = EFPOS;
-       if (err) {
+       if (err || node->data_size == 0 || !node->data) {
                *len = 0;
                return err;
        }


Other related posts:

  • » [haiku-commits] r36080 - haiku/trunk/src/add-ons/kernel/file_systems/googlefs - revol