Lines Matching defs:fs

147 rootfs_create_vnode(struct rootfs* fs, struct rootfs_vnode* parent,
166 vnode->id = fs->next_vnode_id++;
183 rootfs_delete_vnode(struct rootfs* fs, struct rootfs_vnode* v, bool force_delete)
191 hash_remove(fs->vnode_list_hash, v);
237 rootfs_insert_in_dir(struct rootfs* fs, struct rootfs_vnode* dir,
261 notify_stat_changed(fs->id, dir->id, B_STAT_MODIFICATION_TIME);
267 rootfs_remove_from_dir(struct rootfs* fs, struct rootfs_vnode* dir,
286 notify_stat_changed(fs->id, dir->id, B_STAT_MODIFICATION_TIME);
303 remove_node(struct rootfs* fs, struct rootfs_vnode* directory,
308 bool gotNode = (get_vnode(fs->volume, vnode->id, NULL) == B_OK);
312 status = remove_vnode(fs->volume, vnode->id);
315 rootfs_remove_from_dir(fs, directory, vnode);
316 notify_entry_removed(fs->id, directory->id, vnode->name, vnode->id);
320 put_vnode(fs->volume, vnode->id);
327 rootfs_remove(struct rootfs* fs, struct rootfs_vnode* dir, const char* name,
333 WriteLocker locker(fs->lock);
348 entry_cache_remove(fs->volume->id, dir->id, name);
350 return remove_node(fs, dir, vnode);
361 struct rootfs* fs;
367 fs = (rootfs*)malloc(sizeof(struct rootfs));
368 if (fs == NULL)
371 volume->private_volume = fs;
373 fs->volume = volume;
374 fs->id = volume->id;
375 fs->next_vnode_id = 1;
377 rw_lock_init(&fs->lock, "rootfs");
379 fs->vnode_list_hash = hash_init(ROOTFS_HASH_SIZE,
382 if (fs->vnode_list_hash == NULL) {
388 vnode = rootfs_create_vnode(fs, NULL, ".", S_IFDIR | 0777);
395 fs->root_vnode = vnode;
396 hash_insert(fs->vnode_list_hash, vnode);
404 hash_uninit(fs->vnode_list_hash);
406 rw_lock_destroy(&fs->lock);
407 free(fs);
416 struct rootfs* fs = (struct rootfs*)_volume->private_volume;
418 TRACE(("rootfs_unmount: entry fs = %p\n", fs));
421 put_vnode(fs->volume, fs->root_vnode->id);
425 hash_open(fs->vnode_list_hash, &i);
428 hash_next(fs->vnode_list_hash, &i)) {
429 rootfs_delete_vnode(fs, vnode, true);
432 hash_close(fs->vnode_list_hash, &i, false);
434 hash_uninit(fs->vnode_list_hash);
435 rw_lock_destroy(&fs->lock);
436 free(fs);
454 struct rootfs* fs = (struct rootfs*)_volume->private_volume;
462 ReadLocker locker(fs->lock);
469 status_t status = get_vnode(fs->volume, vnode->id, NULL);
473 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
498 struct rootfs* fs = (struct rootfs*)_volume->private_volume;
504 rw_lock_read_lock(&fs->lock);
506 vnode = (rootfs_vnode*)hash_lookup(fs->vnode_list_hash, &id);
509 rw_lock_read_unlock(&fs->lock);
540 struct rootfs* fs = (struct rootfs*)_volume->private_volume;
547 rw_lock_write_lock(&fs->lock);
555 rootfs_delete_vnode(fs, vnode, false);
558 rw_lock_write_unlock(&fs->lock);
628 struct rootfs* fs = (rootfs*)_volume->private_volume;
635 WriteLocker locker(fs->lock);
642 vnode = rootfs_create_vnode(fs, dir, name, S_IFDIR | (mode & S_IUMSK));
646 rootfs_insert_in_dir(fs, dir, vnode);
647 hash_insert(fs->vnode_list_hash, vnode);
649 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
650 notify_entry_created(fs->id, dir->id, name, vnode->id);
659 struct rootfs* fs = (rootfs*)_volume->private_volume;
665 return rootfs_remove(fs, dir, name, true);
672 struct rootfs* fs = (struct rootfs*)_volume->private_volume;
687 ReadLocker locker(fs->lock);
707 struct rootfs* fs = (rootfs*)_volume->private_volume;
709 ReadLocker locker(fs->lock);
730 struct rootfs* fs = (rootfs*)_volume->private_volume;
738 ReadLocker locker(fs->lock);
771 dirent->d_dev = fs->id;
795 struct rootfs* fs = (rootfs*)_volume->private_volume;
797 ReadLocker locker(fs->lock);
862 struct rootfs* fs = (rootfs*)_volume->private_volume;
868 WriteLocker locker(fs->lock);
875 vnode = rootfs_create_vnode(fs, dir, name, S_IFLNK | (mode & S_IUMSK));
879 rootfs_insert_in_dir(fs, dir, vnode);
880 hash_insert(fs->vnode_list_hash, vnode);
884 rootfs_delete_vnode(fs, vnode, false);
889 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
891 notify_entry_created(fs->id, dir->id, name, vnode->id);
900 struct rootfs* fs = (rootfs*)_volume->private_volume;
905 return rootfs_remove(fs, dir, name, false);
913 struct rootfs* fs = (rootfs*)_volume->private_volume;
932 WriteLocker locker(fs->lock);
955 entry_cache_remove(fs->volume->id, toDirectory->id, toName);
956 remove_node(fs, toDirectory, targetVnode);
973 entry_cache_remove(fs->volume->id, fromDirectory->id, fromName);
974 rootfs_remove_from_dir(fs, fromDirectory, vnode);
979 rootfs_insert_in_dir(fs, toDirectory, vnode);
981 entry_cache_add(fs->volume->id, toDirectory->id, toName, vnode->id);
983 notify_entry_moved(fs->id, fromDirectory->id, fromName, toDirectory->id,
993 struct rootfs* fs = (rootfs*)_volume->private_volume;
1001 stat->st_dev = fs->id;
1029 struct rootfs* fs = (rootfs*)_volume->private_volume;
1039 WriteLocker locker(fs->lock);
1058 notify_stat_changed(fs->id, vnode->id, statMask);
1068 struct rootfs* fs = (rootfs*)_volume->private_volume;
1072 WriteLocker locker(fs->lock);
1080 vnode = rootfs_create_vnode(fs, dir, name, mode);
1085 rootfs_insert_in_dir(fs, dir, vnode);
1089 hash_insert(fs->vnode_list_hash, vnode);
1098 status_t status = publish_vnode(fs->volume, vnode->id,
1102 rootfs_remove_from_dir(fs, dir, vnode);
1103 rootfs_delete_vnode(fs, vnode, false);
1108 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
1109 notify_entry_created(fs->id, dir->id, name, vnode->id);