rem: FUNCTION();
add: FUNCTION_START(("name = \"%s\", path = \"%s\"\n", name, path));
context: bfs_create_symlink(void *_ns, void *_directory, const char *name, const char *path, int mode){	FUNCTION();	if (_ns == NULL || _directory == NULL || path == NULL		|| name == NULL || *name == '\0')		RETURN_ERROR(B_BAD_VALUE);	Volume *volume = (Volume *)_ns;	Inode *directory = (Inode *)_directory;	if (!directory->IsDirectory())		RETURN_ERROR(B_BAD_TYPE);	status_t status = directory->CheckPermissions(W_OK);	if (status < B_OK)		RETURN_ERROR(status);#ifdef UNSAFE_GET_VNODE	RecursiveLocker locker(volume->Lock());#endif	Transaction transaction(volume, directory->BlockNumber());	Inode *link;	off_t id;	status = Inode::Create(transaction, directory, name, S_SYMLINK | 0777, 0, 0, &id, &link);	if (status < B_OK)		RETURN_ERROR(status);	size_t length = strlen(path);	if (length < SHORT_SYMLINK_NAME_LENGTH) {		strcpy(link->Node().short_symlink, path);	} else {		link->Node().flags |= HOST_ENDIAN_TO_BFS_INT32(INODE_LONG_SYMLINK | INODE_LOGGED);		// The following call will have to write the inode back, so		// we don't have to do that here...		status = link->WriteAt(transaction, 0, (const uint8 *)path, &length);	}	// ToDo: would be nice if Inode::Create() would let the INODE_NOT_READY	//	flag set until here, so that it can be accessed directly	if (status == B_OK)		status = link->WriteBack(transaction);	// Inode::Create() left the inode locked in memory	put_vnode(volume->ID(), id);	if (status == B_OK) {		transaction.Done();		notify_listener(B_ENTRY_CREATED, volume->ID(), directory->ID(), 0, id, name);	}	return status;}