Index: uspace/srv/fs/tmpfs/Makefile
===================================================================
--- uspace/srv/fs/tmpfs/Makefile	(revision fc840d9e1c7b2c78263d76042faa123712a5bb75)
+++ uspace/srv/fs/tmpfs/Makefile	(revision 7858bc5ff895eb1e87b5c19c5e2ca2a23717133a)
@@ -39,7 +39,7 @@
 
 LIBS = \
-	$(LIBC_PREFIX)/libc.a \
 	$(LIBFS_PREFIX)/libfs.a \
-	$(LIBBLOCK_PREFIX)/libblock.a
+	$(LIBBLOCK_PREFIX)/libblock.a \
+	$(LIBC_PREFIX)/libc.a
 
 ## Sources
Index: uspace/srv/fs/tmpfs/tmpfs_dump.c
===================================================================
--- uspace/srv/fs/tmpfs/tmpfs_dump.c	(revision fc840d9e1c7b2c78263d76042faa123712a5bb75)
+++ uspace/srv/fs/tmpfs/tmpfs_dump.c	(revision 7858bc5ff895eb1e87b5c19c5e2ca2a23717133a)
@@ -39,6 +39,4 @@
 #include "tmpfs.h"
 #include "../../vfs/vfs.h"
-#include <ipc/ipc.h>
-#include <async.h>
 #include <errno.h>
 #include <stdlib.h>
@@ -47,7 +45,4 @@
 #include <as.h>
 #include <libblock.h>
-#include <ipc/services.h>
-#include <ipc/devmap.h>
-#include <sys/mman.h>
 #include <byteorder.h>
 
@@ -60,6 +55,6 @@
 
 static bool
-tmpfs_restore_recursion(int phone, void *block, off_t *bufpos, size_t *buflen,
-    off_t *pos, tmpfs_dentry_t *parent)
+tmpfs_restore_recursion(int dev, off_t *bufpos, size_t *buflen, off_t *pos,
+    tmpfs_dentry_t *parent)
 {
 	struct rdentry entry;
@@ -71,6 +66,6 @@
 		uint32_t size;
 		
-		if (!blockread(phone, block, bufpos, buflen, pos, &entry,
-		    sizeof(entry), TMPFS_BLOCK_SIZE))
+		if (!block_read(dev, bufpos, buflen, pos, &entry, sizeof(entry),
+		    TMPFS_BLOCK_SIZE))
 			return false;
 		
@@ -91,5 +86,5 @@
 			}
 			
-			if (!blockread(phone, block, bufpos, buflen, pos, fname,
+			if (!block_read(dev, bufpos, buflen, pos, fname,
 			    entry.len, TMPFS_BLOCK_SIZE)) {
 				ops->destroy((void *) node);
@@ -106,5 +101,5 @@
 			free(fname);
 			
-			if (!blockread(phone, block, bufpos, buflen, pos, &size,
+			if (!block_read(dev, bufpos, buflen, pos, &size,
 			    sizeof(size), TMPFS_BLOCK_SIZE))
 				return false;
@@ -117,6 +112,6 @@
 			
 			node->size = size;
-			if (!blockread(phone, block, bufpos, buflen, pos,
-			    node->data, size, TMPFS_BLOCK_SIZE))
+			if (!block_read(dev, bufpos, buflen, pos, node->data,
+			    size, TMPFS_BLOCK_SIZE))
 				return false;
 			
@@ -133,6 +128,6 @@
 			}
 			
-			if (!blockread(phone, block, bufpos, buflen, pos, fname,
-			    entry.len, TMPFS_BLOCK_SIZE)) {
+			if (!block_read(dev, bufpos, buflen, pos,
+			    fname, entry.len, TMPFS_BLOCK_SIZE)) {
 				ops->destroy((void *) node);
 				free(fname);
@@ -148,6 +143,6 @@
 			free(fname);
 			
-			if (!tmpfs_restore_recursion(phone, block, bufpos,
-			    buflen, pos, node))
+			if (!tmpfs_restore_recursion(dev, bufpos, buflen, pos,
+			    node))
 				return false;
 			
@@ -164,22 +159,9 @@
 {
 	libfs_ops_t *ops = &tmpfs_libfs_ops;
+	int rc;
 
-	void *block = mmap(NULL, TMPFS_BLOCK_SIZE,
-	    PROTO_READ | PROTO_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
-	
-	if (block == NULL)
-		return false;
-	
-	int phone = ipc_connect_me_to(PHONE_NS, SERVICE_DEVMAP,
-	    DEVMAP_CONNECT_TO_DEVICE, dev);
-
-	if (phone < 0) {
-		munmap(block, TMPFS_BLOCK_SIZE);
-		return false;
-	}
-	
-	if (ipc_share_out_start(phone, block, AS_AREA_READ | AS_AREA_WRITE) !=
-	    EOK)
-		goto error;
+	rc = block_init(dev, TMPFS_BLOCK_SIZE, 0, 0);
+	if (rc != EOK)
+		return false; 
 	
 	off_t bufpos = 0;
@@ -188,5 +170,5 @@
 	
 	char tag[6];
-	if (!blockread(phone, block, &bufpos, &buflen, &pos, tag, 5,
+	if (!block_read(dev, &bufpos, &buflen, &pos, tag, 5,
 	    TMPFS_BLOCK_SIZE))
 		goto error;
@@ -196,15 +178,13 @@
 		goto error;
 	
-	if (!tmpfs_restore_recursion(phone, block, &bufpos, &buflen, &pos,
+	if (!tmpfs_restore_recursion(dev, &bufpos, &buflen, &pos,
 	    ops->root_get(dev)))
 		goto error;
 		
-	ipc_hangup(phone);
-	munmap(block, TMPFS_BLOCK_SIZE);
+	block_fini(dev);
 	return true;
 	
 error:
-	ipc_hangup(phone);
-	munmap(block, TMPFS_BLOCK_SIZE);
+	block_fini(dev);
 	return false;
 }
