--- util-linux/findfs.c
+++ util-linux/findfs.c
@@ -27,17 +27,10 @@
 	if (!dev)
 		bb_show_usage();
 
-	if (strncmp(dev, "/dev/", 5) == 0) {
-		/* Just pass any /dev/xxx name right through.
-		 * This might aid in some scripts being able
-		 * to call this unconditionally */
-		dev = NULL;
-	} else {
 		/* Otherwise, handle LABEL=xxx and UUID=xxx,
 		 * fail on anything else */
 		if (!resolve_mount_spec(argv))
 			bb_show_usage();
-	}
 
 	if (*argv != dev) {
 		puts(*argv);
--- include/volume_id.h
+++ include/volume_id.h
@@ -20,6 +20,8 @@
 
 char *get_devname_from_label(const char *spec);
 char *get_devname_from_uuid(const char *spec);
+char *get_label_from_devname(const char *spec);
+char *get_type_from_devname(const char *spec);
 void display_uuid_cache(int scan_devices);
 
 /* Returns:
--- util-linux/volume_id/get_devname.c
+++ util-linux/volume_id/get_devname.c
@@ -296,6 +296,41 @@
 	return NULL;
 }
 
+char *get_label_from_devname(const char *spec)
+{
+	struct uuidCache_s *uc;
+
+	add_to_uuid_cache(spec);
+	uc = uuidCache;
+	if (uc != NULL)
+	{
+		if (strcasecmp(spec, uc->device) == 0)
+		{
+			return xstrdup(uc->label);
+		}
+		uc = uc->next;
+	}
+	return NULL;
+}
+
+#if ENABLE_FEATURE_BLKID_TYPE
+char *get_type_from_devname(const char *spec)
+{
+	struct uuidCache_s *uc;
+
+	add_to_uuid_cache(spec);
+	uc = uuidCache;
+	if (uc != NULL)
+	{
+		if (strcasecmp(spec, uc->device) == 0)
+		{
+			return xstrdup(uc->type);
+		}
+	}
+	return NULL;
+}
+#endif
+
 int resolve_mount_spec(char **fsname)
 {
 	char *tmp = *fsname;
@@ -304,7 +339,12 @@
 		tmp = get_devname_from_uuid(*fsname + 5);
 	else if (strncmp(*fsname, "LABEL=", 6) == 0)
 		tmp = get_devname_from_label(*fsname + 6);
-
+	else if (strncmp(*fsname, "DEVL=", 5) == 0)
+		tmp = get_label_from_devname(*fsname + 5);
+#if ENABLE_FEATURE_BLKID_TYPE
+	else if (strncmp(*fsname, "DEVT=", 5) == 0)
+		tmp = get_type_from_devname(*fsname + 5);
+#endif
 	if (tmp == *fsname)
 		return 0; /* no UUID= or LABEL= prefix found */
 
