[haiku-commits] r36080 - haiku/trunk/src/add-ons/kernel/file_systems/googlefs
- From: revol@xxxxxxx
- To: haiku-commits@xxxxxxxxxxxxx
- Date: Thu, 8 Apr 2010 03:35:58 +0200 (CEST)
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