rem: return ERR_VM_INVALID_ASPACE;
add: return B_BAD_TEAM_ID;
context: _vm_map_file(aspace_id aid, const char *name, void **_address, uint32 addressSpec,	size_t size, uint32 protection, uint32 mapping, const char *path, off_t offset, bool kernel){	vm_cache_ref *cacheRef;	vm_area *area;	void *vnode;	status_t status;	// ToDo: maybe attach to an FD, not a path (or both, like VFS calls)	// ToDo: check file access permissions (would be already done if the above were true)	// ToDo: for binary files, we want to make sure that they get the	//	copy of a file at a given time, ie. later changes should not	//	make it into the mapped copy -- this will need quite some changes	//	to be done in a nice way	vm_address_space *aspace = vm_get_aspace_by_id(aid);	if (aspace == NULL)		return ERR_VM_INVALID_ASPACE;	TRACE(("_vm_map_file(\"%s\", offset = %Ld, size = %lu, mapping %ld)\n", path, offset, size, mapping));	offset = ROUNDOWN(offset, B_PAGE_SIZE);	size = PAGE_ALIGN(size);	// get the vnode for the object, this also grabs a ref to it	status = vfs_get_vnode_from_path(path, kernel, &vnode);	if (status < B_OK)		goto err1;	status = vfs_get_vnode_cache(vnode, &cacheRef);	if (status < B_OK)		goto err2;	// acquire a ref to the cache before we do work on it. Dont ripple the ref acquision to the vnode	// below because we'll have to release it later anyway, since we grabbed a ref to the vnode at	// vfs_get_vnode_from_path(). This puts the ref counts in sync.	vm_cache_acquire_ref(cacheRef, false);	status = map_backing_store(aspace, cacheRef->cache->store, _address, offset, size,					addressSpec, 0, protection, mapping, &area, name);	vm_cache_release_ref(cacheRef);	vm_put_aspace(aspace);	if (status < B_OK)		return status;	return area->id;err2:	vfs_vnode_release_ref(vnode);err1:	vm_put_aspace(aspace);	return status;}