On Mon, Aug 24, 2009 at 01:11:54PM +0200, Corentin Chary wrote: > --- a/shlibs/blkid/src/devname.c > +static void > +ubi_probe_all(blkid_cache cache, int only_if_new) > +{ > + const char **dirname; > + > + for (dirname = dirlist; *dirname; dirname++) { > + DBG(DEBUG_DEVNAME, printf("probing UBI volumes under %s\n", > + *dirname)); > + > + DIR *dir; > + struct dirent *iter; > + > + dir = opendir(*dirname); > + if (dir == NULL) > + continue ; > + > + while ((iter = readdir(dir)) != NULL) { > + char *name, *device; > + struct stat st; > + dev_t dev; > + > + name = iter->d_name; > + > + if (!strcmp(name, ".") || !strcmp(name, "..") || > + !strstr(name, "ubi")) > + continue; > + if (!strcmp(name, "ubi_ctrl")) > + continue; > + device = malloc(strlen(*dirname) + strlen(name) + 2); > + if (!device) > + break ; > + sprintf(device, "%s/%s", *dirname, name); > + if (stat(device, &st)) > + break ; > + > + if (!(st.st_rdev & 0xFF)) { // It's an UBI Device > + free(device); > + continue ; > + } Wouldn't be better to #define is_ubi_device(s) (S_ISCHR(s->st_mode) && (s->st_rdev & 0xFF)) (or major() instead magic 0xFF constant?) and use it everywhere in code? I guess UBI is always a char device. > +++ b/shlibs/blkid/src/probe.c > @@ -284,6 +284,8 @@ int blkid_probe_set_device(blkid_probe pr, int fd, > > if (S_ISBLK(sb.st_mode)) > blkdev_get_size(fd, (unsigned long long *) &pr->size); > + else if (S_ISCHR(sb.st_mode)) > + pr->size = 1; > else > pr->size = sb.st_size; > } this is the same situation, this code will for all char devices, but we want to support UBI only. Karel -- Karel Zak <kzak@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html