Changes in uspace/srv/fs/udf/udf_idx.c [a35b458:1b20da0] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/udf/udf_idx.c
ra35b458 r1b20da0 95 95 if (!hash_table_create(&udf_idx, 0, 0, &udf_idx_ops)) 96 96 return ENOMEM; 97 97 98 98 return EOK; 99 99 } … … 127 127 .index = index 128 128 }; 129 129 130 130 ht_link_t *already_open = hash_table_find(&udf_idx, &key); 131 131 if (already_open) { … … 133 133 udf_node_t, link); 134 134 node->ref_cnt++; 135 135 136 136 *udfn = node; 137 137 138 138 fibril_mutex_unlock(&udf_idx_lock); 139 139 return EOK; 140 140 } 141 141 142 142 fibril_mutex_unlock(&udf_idx_lock); 143 143 return ENOENT; … … 156 156 { 157 157 fibril_mutex_lock(&udf_idx_lock); 158 158 159 159 udf_node_t *udf_node = malloc(sizeof(udf_node_t)); 160 160 if (udf_node == NULL) { … … 162 162 return ENOMEM; 163 163 } 164 164 165 165 fs_node_t *fs_node = malloc(sizeof(fs_node_t)); 166 166 if (fs_node == NULL) { … … 169 169 return ENOMEM; 170 170 } 171 171 172 172 fs_node_initialize(fs_node); 173 173 174 174 udf_node->index = index; 175 175 udf_node->instance = instance; … … 179 179 udf_node->data = NULL; 180 180 udf_node->allocators = NULL; 181 181 182 182 fibril_mutex_initialize(&udf_node->lock); 183 183 fs_node->data = udf_node; 184 184 185 185 hash_table_insert(&udf_idx, &udf_node->link); 186 186 instance->open_nodes_count++; 187 187 188 188 *udfn = udf_node; 189 189 190 190 fibril_mutex_unlock(&udf_idx_lock); 191 191 return EOK; … … 202 202 { 203 203 assert(node->ref_cnt == 0); 204 204 205 205 fibril_mutex_lock(&udf_idx_lock); 206 206 207 207 hash_table_remove_item(&udf_idx, &node->link); 208 208 209 209 assert(node->instance->open_nodes_count > 0); 210 210 node->instance->open_nodes_count--; 211 211 212 212 free(node->fs_node); 213 213 free(node); 214 214 215 215 fibril_mutex_unlock(&udf_idx_lock); 216 216 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.