+#ifdef UBIFS_EXTROOT
+static int find_ubi_vol(libubi_t libubi, char *name, int *dev_num, int *vol_id)
+{
+ int dev = 0;
+
+ while (ubi_dev_present(libubi, dev))
+ {
+ struct ubi_dev_info dev_info;
+ struct ubi_vol_info vol_info;
+
+ if (ubi_get_dev_info1(libubi, dev++, &dev_info))
+ continue;
+ if (ubi_get_vol_info1_nm(libubi, dev_info.dev_num, name, &vol_info))
+ continue;
+
+ *dev_num = dev_info.dev_num;
+ *vol_id = vol_info.vol_id;
+
+ return 0;
+ }
+
+ return -1;
+}
+
+static int find_block_ubi(libubi_t libubi, char *name, char *part, int plen)
+{
+ int dev_num;
+ int vol_id;
+ int err = -1;
+
+ err = find_ubi_vol(libubi, name, &dev_num, &vol_id);
+ if (!err)
+ snprintf(part, plen, "/dev/ubi%d_%d", dev_num, vol_id);
+
+ return err;
+}
+
+static int find_block_ubi_RO(libubi_t libubi, char *name, char *part, int plen)
+{
+ int dev_num;
+ int vol_id;
+ int err = -1;
+
+ err = find_ubi_vol(libubi, name, &dev_num, &vol_id);
+ if (!err)
+ snprintf(part, plen, "/dev/ubiblock%d_%d", dev_num, vol_id);
+
+ return err;
+}
+#endif
+