rem: if (thedevfs) {
add: if (gDeviceFileSystem) {
context: devfs_mount(fs_cookie *_fs, fs_id id, const char *devfs, void *args, vnode_id *root_vnid){	struct devfs *fs;	struct devfs_vnode *v;	int err;	TRACE(("devfs_mount: entry\n"));	if (thedevfs) {		dprintf("double mount of devfs attempted\n");		err = ERR_GENERAL;		goto err;	}	fs = kmalloc(sizeof(struct devfs));	if (fs == NULL) {		err = ENOMEM;		goto err;	}	fs->id = id;	fs->next_vnode_id = 0;	err = mutex_init(&fs->lock, "devfs_mutex");	if (err < 0) {		goto err1;	}	fs->vnode_list_hash = hash_init(BOOTFS_HASH_SIZE, (addr)&v->all_next - (addr)v,		&devfs_vnode_compare_func, &devfs_vnode_hash_func);	if (fs->vnode_list_hash == NULL) {		err = ENOMEM;		goto err2;	}	// create a vnode	v = devfs_create_vnode(fs, "");	if (v == NULL) {		err = ENOMEM;		goto err3;	}	// set it up	v->parent = v;	// create a dir stream for it to hold	v->stream.type = STREAM_TYPE_DIR;	v->stream.u.dir.dir_head = NULL;	v->stream.u.dir.jar_head = NULL;	fs->root_vnode = v;	hash_insert(fs->vnode_list_hash, v);	*root_vnid = v->id;	*_fs = fs;	thedevfs = fs;	return 0;	devfs_delete_vnode(fs, v, true);err3:	hash_uninit(fs->vnode_list_hash);err2:	mutex_destroy(&fs->lock);err1:	kfree(fs);err:	return err;}