Subversion Repositories HelenOS

Rev

Rev 2787 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2787 Rev 3675
Line 173... Line 173...
173
        node->fs_handle = result->triplet.fs_handle;
173
        node->fs_handle = result->triplet.fs_handle;
174
        node->dev_handle = result->triplet.dev_handle;
174
        node->dev_handle = result->triplet.dev_handle;
175
        node->index = result->triplet.index;
175
        node->index = result->triplet.index;
176
        node->size = result->size;
176
        node->size = result->size;
177
        node->lnkcnt = result->lnkcnt;
177
        node->lnkcnt = result->lnkcnt;
-
 
178
        node->type = result->type;
178
        link_initialize(&node->nh_link);
179
        link_initialize(&node->nh_link);
179
        rwlock_initialize(&node->contents_rwlock);
180
        rwlock_initialize(&node->contents_rwlock);
180
        hash_table_insert(&nodes, key, &node->nh_link);
181
        hash_table_insert(&nodes, key, &node->nh_link);
181
    } else {
182
    } else {
182
        node = hash_table_get_instance(tmp, vfs_node_t, nh_link);  
183
        node = hash_table_get_instance(tmp, vfs_node_t, nh_link);  
-
 
184
        if (node->type == VFS_NODE_UNKNOWN &&
-
 
185
            result->type != VFS_NODE_UNKNOWN) {
-
 
186
            /* Upgrade the node type. */
-
 
187
            node->type = result->type;
-
 
188
        }
183
    }
189
    }
184
 
190
 
185
    assert(node->size == result->size);
191
    assert(node->size == result->size);
186
    assert(node->lnkcnt == result->lnkcnt);
192
    assert(node->lnkcnt == result->lnkcnt);
-
 
193
    assert(node->type == result->type || result->type == VFS_NODE_UNKNOWN);
187
 
194
 
188
    _vfs_node_addref(node);
195
    _vfs_node_addref(node);
189
    futex_up(&nodes_futex);
196
    futex_up(&nodes_futex);
190
 
197
 
191
    return node;
198
    return node;