Index: uspace/srv/vfs/vfs.h
===================================================================
--- uspace/srv/vfs/vfs.h	(revision ce04ea446ae259288dc1f51ca1fdcc70dd74d6bb)
+++ uspace/srv/vfs/vfs.h	(revision 368ee04b0543abf978947ce5a1ea47698bb9692f)
@@ -113,5 +113,5 @@
 	vfs_node_type_t type;	/**< Partial info about the node type. */
 
-	int64_t size;		/**< Cached size if the node is a file. */
+	aoff64_t size;		/**< Cached size if the node is a file. */
 
 	/**
@@ -185,5 +185,4 @@
 extern unsigned vfs_nodes_refcount_sum_get(fs_handle_t, service_id_t);
 
-extern int64_t vfs_node_get_size(vfs_node_t *node);
 extern bool vfs_node_has_children(vfs_node_t *node);
 
Index: uspace/srv/vfs/vfs_lookup.c
===================================================================
--- uspace/srv/vfs/vfs_lookup.c	(revision ce04ea446ae259288dc1f51ca1fdcc70dd74d6bb)
+++ uspace/srv/vfs/vfs_lookup.c	(revision 368ee04b0543abf978947ce5a1ea47698bb9692f)
@@ -226,5 +226,5 @@
 	
 	unsigned last = *pfirst + *plen;
-	*pfirst = IPC_GET_ARG3(answer);
+	*pfirst = IPC_GET_ARG3(answer) & 0xffff;
 	*plen = last - *pfirst;
 	
@@ -232,6 +232,6 @@
 	result->triplet.service_id = (service_id_t) IPC_GET_ARG1(answer);
 	result->triplet.index = (fs_index_t) IPC_GET_ARG2(answer);
-	result->size = (int64_t)(int32_t) IPC_GET_ARG4(answer);
-	result->type = IPC_GET_ARG5(answer) ?
+	result->size = MERGE_LOUP32(IPC_GET_ARG4(answer), IPC_GET_ARG5(answer));
+	result->type = (IPC_GET_ARG3(answer) >> 16) ?
 	    VFS_NODE_DIRECTORY : VFS_NODE_FILE;
 	return EOK;
Index: uspace/srv/vfs/vfs_node.c
===================================================================
--- uspace/srv/vfs/vfs_node.c	(revision ce04ea446ae259288dc1f51ca1fdcc70dd74d6bb)
+++ uspace/srv/vfs/vfs_node.c	(revision 368ee04b0543abf978947ce5a1ea47698bb9692f)
@@ -315,20 +315,4 @@
 }
 
-int64_t vfs_node_get_size(vfs_node_t *node)
-{
-	if (node->size == -1) {
-		sysarg_t sz1 = 0;
-		sysarg_t sz2 = 0;
-		
-		async_exch_t *exch = vfs_exchange_grab(node->fs_handle);
-		(void) async_req_2_2(exch, VFS_OUT_GET_SIZE, node->service_id,
-		    node->index, &sz1, &sz2);
-		vfs_exchange_release(exch);
-		
-		node->size = MERGE_LOUP32(sz1, sz2);
-	}
-	return node->size;
-}
-
 bool vfs_node_has_children(vfs_node_t *node)
 {
Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision ce04ea446ae259288dc1f51ca1fdcc70dd74d6bb)
+++ uspace/srv/vfs/vfs_ops.c	(revision 368ee04b0543abf978947ce5a1ea47698bb9692f)
@@ -439,9 +439,6 @@
 	async_exch_t *fs_exch = vfs_exchange_grab(file->node->fs_handle);
 	
-	if (!read && file->append) {
-		if (file->node->size == -1)
-			file->node->size = vfs_node_get_size(file->node);
+	if (!read && file->append)
 		pos = file->node->size;
-	}
 	
 	/*
