Index: uspace/lib/device/include/hr.h
===================================================================
--- uspace/lib/device/include/hr.h	(revision 50bed55dd5e0faca9133e9d152967c4d75296bf6)
+++ uspace/lib/device/include/hr.h	(revision 1903d7769934b8a6da9b8cf9e436f445a74c8b6e)
@@ -54,4 +54,15 @@
 } hr_level_t;
 
+typedef enum hr_vol_status {
+	HR_VOL_ONLINE,	/* OK, OPTIMAL */
+	HR_VOL_FAULTY
+} hr_vol_status_t;
+
+typedef enum hr_ext_status {
+	HR_EXT_ONLINE,	/* OK */
+	HR_EXT_MISSING,
+	HR_EXT_FAILED
+} hr_ext_status_t;
+
 typedef struct hr {
 	async_sess_t *sess;
@@ -67,5 +78,5 @@
 typedef struct hr_extent {
 	service_id_t svc_id;
-	int status;
+	hr_ext_status_t status;
 } hr_extent_t;
 
@@ -78,4 +89,5 @@
 	uint32_t strip_size;
 	size_t bsize;
+	hr_vol_status_t status;
 } hr_vol_info_t;
 
@@ -87,4 +99,7 @@
 extern errno_t hr_print_status(void);
 
+extern const char *hr_get_vol_status_msg(hr_vol_status_t);
+extern const char *hr_get_ext_status_msg(hr_ext_status_t);
+
 #endif
 
Index: uspace/lib/device/src/hr.c
===================================================================
--- uspace/lib/device/src/hr.c	(revision 50bed55dd5e0faca9133e9d152967c4d75296bf6)
+++ uspace/lib/device/src/hr.c	(revision 1903d7769934b8a6da9b8cf9e436f445a74c8b6e)
@@ -130,4 +130,6 @@
 	printf("devname: %s\n", devname);
 
+	printf("status: %s\n", hr_get_vol_status_msg(vol_info->status));
+
 	printf("level: %d\n", vol_info->level);
 	if (vol_info->level == HR_LVL_0 || vol_info->level == HR_LVL_4) {
@@ -150,13 +152,17 @@
 	for (i = 0; i < vol_info->extent_no; i++) {
 		ext = &vol_info->extents[i];
-		rc = loc_service_get_name(ext->svc_id, &devname);
-		if (rc != EOK)
-			return rc;
+		if (ext->status == HR_EXT_MISSING) {
+			devname = (char *) "MISSING-devname";
+		} else {
+			rc = loc_service_get_name(ext->svc_id, &devname);
+			if (rc != EOK)
+				return rc;
+		}
 		if (i == 0 && vol_info->level == HR_LVL_4)
-			printf("          P   %d        %zu       %s\n", ext->status, i, devname);
+			printf("          P   %s    %zu       %s\n", hr_get_ext_status_msg(ext->status), i, devname);
 		else if (vol_info->level == HR_LVL_4)
-			printf("              %d        %zu       %s\n", ext->status, i, devname);
+			printf("              %s    %zu       %s\n", hr_get_ext_status_msg(ext->status), i, devname);
 		else
-			printf("          %d        %zu       %s\n", ext->status, i, devname);
+			printf("          %s    %zu       %s\n", hr_get_ext_status_msg(ext->status), i, devname);
 	}
 	return EOK;
@@ -262,4 +268,30 @@
 }
 
+const char *hr_get_vol_status_msg(hr_vol_status_t status)
+{
+	switch (status) {
+	case HR_VOL_ONLINE:
+		return "ONLINE";
+	case HR_VOL_FAULTY:
+		return "FAULTY";
+	default:
+		return "UNKNOWN";
+	}
+}
+
+const char *hr_get_ext_status_msg(hr_ext_status_t status)
+{
+	switch (status) {
+	case HR_EXT_ONLINE:
+		return "ONLINE";
+	case HR_EXT_MISSING:
+		return "MISSING";
+	case HR_EXT_FAILED:
+		return "FAILED";
+	default:
+		return "UNKNOWN";
+	}
+}
+
 /** @}
  */
