rem: if (ioctx->cwd) inc_vnode_ref_count(ioctx->cwd);
add: if (context->cwd) inc_vnode_ref_count(context->cwd);
context: vfs_new_io_context(void *_parent_ioctx){	size_t table_size;	struct io_context *ioctx;	struct io_context *parent_ioctx;	ioctx = kmalloc(sizeof(struct io_context));	if (ioctx == NULL)		return NULL;	memset(ioctx, 0, sizeof(struct io_context));	parent_ioctx = (struct io_context *)_parent_ioctx;	if (parent_ioctx)		table_size = parent_ioctx->table_size;	else		table_size = DEFAULT_FD_TABLE_SIZE;	ioctx->fds = kmalloc(sizeof(struct file_descriptor *) * table_size);	if (ioctx->fds == NULL) {		kfree(ioctx);		return NULL;	}	memset(ioctx->fds, 0, sizeof(struct file_descriptor *) * table_size);	if (mutex_init(&ioctx->io_mutex, "ioctx_mutex") < 0) {		kfree(ioctx->fds);		kfree(ioctx);		return NULL;	}	/*	 * copy parent files	 */	if (parent_ioctx) {		size_t i;		mutex_lock(&parent_ioctx->io_mutex);		ioctx->cwd = parent_ioctx->cwd;		if (ioctx->cwd)			inc_vnode_ref_count(ioctx->cwd);		for (i = 0; i < table_size; i++) {			if (parent_ioctx->fds[i]) {				ioctx->fds[i] = parent_ioctx->fds[i];				atomic_add(&ioctx->fds[i]->ref_count, 1);			}		}		mutex_unlock(&parent_ioctx->io_mutex);	} else {		ioctx->cwd = root_vnode;		if (ioctx->cwd)			inc_vnode_ref_count(ioctx->cwd);	}	ioctx->table_size = table_size;	return ioctx;}