Index: uspace/lib/c/generic/vfs/vfs.c
===================================================================
--- uspace/lib/c/generic/vfs/vfs.c	(revision 8ffedd8013b66e0367a7ea63cfa680b43bf63a40)
+++ uspace/lib/c/generic/vfs/vfs.c	(revision f6b6b4082d1cfd61c1bca4d6ce9cd55a0efc3faf)
@@ -1115,6 +1115,11 @@
 	link_initialize(&ent->link);
 	str_cpy(ent->mp, sizeof(ent->mp), path);
-	str_cpy(ent->fs_name, sizeof(ent->fs_name), "fixme");
 	ent->service_id = stat->service_id;
+
+	struct statfs stfs;
+	if (statfs(path, &stfs) == EOK)
+		str_cpy(ent->fs_name, sizeof(ent->fs_name), stfs.fs_name);
+	else
+		str_cpy(ent->fs_name, sizeof(ent->fs_name), "?");
 	
 	list_append(&ent->link, mtab_list);
Index: uspace/lib/c/include/sys/statfs.h
===================================================================
--- uspace/lib/c/include/sys/statfs.h	(revision 8ffedd8013b66e0367a7ea63cfa680b43bf63a40)
+++ uspace/lib/c/include/sys/statfs.h	(revision f6b6b4082d1cfd61c1bca4d6ce9cd55a0efc3faf)
@@ -37,10 +37,11 @@
 
 #include <sys/types.h>
+#include <ipc/vfs.h>
 
 struct statfs { 
-	uint32_t    f_type;     /* type of file system  */
-	uint32_t    f_bsize;    /* fundamental file system block size */
-	uint64_t    f_blocks;   /* total data blocks in file system */
-	uint64_t    f_bfree;    /* free blocks in fs */
+	char fs_name[FS_NAME_MAXLEN + 1];
+	uint32_t f_bsize;    /* fundamental file system block size */
+	uint64_t f_blocks;   /* total data blocks in file system */
+	uint64_t f_bfree;    /* free blocks in fs */
 };
 
Index: uspace/lib/fs/libfs.c
===================================================================
--- uspace/lib/fs/libfs.c	(revision 8ffedd8013b66e0367a7ea63cfa680b43bf63a40)
+++ uspace/lib/fs/libfs.c	(revision f6b6b4082d1cfd61c1bca4d6ce9cd55a0efc3faf)
@@ -43,8 +43,10 @@
 #include <dirent.h>
 #include <mem.h>
+#include <str.h>
 #include <sys/stat.h>
 #include <sys/statfs.h>
 #include <stdlib.h>
 #include <fibril_synch.h>
+#include <ipc/vfs.h>
 
 #define on_error(rc, action) \
@@ -72,4 +74,6 @@
 static vfs_out_ops_t *vfs_out_ops = NULL;
 static libfs_ops_t *libfs_ops = NULL;
+
+static char fs_name[FS_NAME_MAXLEN + 1];
 
 static void libfs_link(libfs_ops_t *, fs_handle_t, ipc_callid_t,
@@ -394,4 +398,6 @@
 	vfs_out_ops = vops;
 	libfs_ops = lops;
+
+	str_cpy(fs_name, sizeof(fs_name), info->name);
 
 	/*
@@ -817,4 +823,6 @@
 	memset(&st, 0, sizeof(struct statfs));
 
+	str_cpy(st.fs_name, sizeof(st.fs_name), fs_name);
+
 	if (ops->size_block != NULL) {
 		rc = ops->size_block(service_id, &st.f_bsize);
