X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffstools.git;a=blobdiff_plain;f=block.c;h=85c5b586f5aed62db2bed1c8c64da4c1ec85b7b1;hp=397db0f7e709810a50a7c443af061523f413d393;hb=6a8fae38791572d72d4241856b5704684a8ee7c6;hpb=bfd81bcedca6acae8951a4dbcd4f45933e5f0473;ds=sidebyside diff --git a/block.c b/block.c index 397db0f..85c5b58 100644 --- a/block.c +++ b/block.c @@ -170,6 +170,10 @@ static const struct mount_flag mount_flags[] = { { "relatime", MS_RELATIME }, { "norelatime", ~MS_RELATIME }, { "strictatime", MS_STRICTATIME }, + { "acl", MS_POSIXACL }, + { "noacl", ~MS_POSIXACL }, + { "nouser_xattr", MS_NOUSER }, + { "user_xattr", ~MS_NOUSER }, }; static char *blobmsg_get_strdup(struct blob_attr *attr) @@ -460,6 +464,16 @@ static int config_load(char *cfg) static struct blkid_struct_probe* _probe_path(char *path) { struct blkid_struct_probe *pr; + char tmppath[64]; + + /* skip ubi device if ubiblock device is present */ + if (path[5] == 'u' && path[6] == 'b' && path[7] == 'i' && + path[8] >= '0' && path[8] <= '9' ) { + snprintf(tmppath, sizeof(tmppath), "/dev/ubiblock%s", path + 8); + list_for_each_entry(pr, &devices, list) + if (!strcasecmp(pr->dev, tmppath)) + return NULL; + } pr = malloc(sizeof(*pr)); @@ -502,7 +516,7 @@ static void cache_load(int mtd) if (mtd) { _cache_load("/dev/mtdblock*"); _cache_load("/dev/ubiblock*"); - _cache_load("/dev/ubi?*_?*"); + _cache_load("/dev/ubi[0-9]*"); } _cache_load("/dev/mmcblk*"); _cache_load("/dev/sd*"); @@ -1263,7 +1277,7 @@ static int main_info(int argc, char **argv) ULOG_ERR("failed to stat %s\n", argv[i]); continue; } - if (!S_ISBLK(s.st_mode)) { + if (!S_ISBLK(s.st_mode) && !(S_ISCHR(s.st_mode) && major(s.st_rdev) == 250)) { ULOG_ERR("%s is not a block device\n", argv[i]); continue; }