Update udev properties for /dev/mapper/extendedsd by using retrieve_udev_device() 18/157318/1 submit/tizen/20171024.082141
authorHyotaek Shim <hyotaek.shim@samsung.com>
Tue, 24 Oct 2017 07:26:39 +0000 (16:26 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Tue, 24 Oct 2017 07:26:39 +0000 (16:26 +0900)
Change-Id: I040d66ac070a8a62710d1113ec4e7f8a62242f38
Signed-off-by: Hyotaek Shim <hyotaek.shim@samsung.com>
src/block/block.c

index 24a1540..914af6b 100644 (file)
@@ -1115,24 +1115,27 @@ static int retrieve_udev_device(struct block_data *data, bool mount_point_update
        if (!data)
                return -EINVAL;
 
-       udev = udev_new();
-       if (!udev) {
-               _E("fail to create udev library context");
-               return -EPERM;
-       }
+       for (wait = 0; wait < 10; wait++) {
+               udev = udev_new();
+               if (!udev) {
+                       _E("fail to create udev library context");
+                       return -EPERM;
+               }
 
-       dev = udev_device_new_from_syspath(udev, data->syspath);
-       if (!dev) {
-               _E("fail to create new udev device");
-               udev_unref(udev);
-               return -EPERM;
-       }
+               dev = udev_device_new_from_syspath(udev, data->syspath);
+               if (!dev) {
+                       _E("fail to create new udev device");
+                       udev_unref(udev);
+                       return -EPERM;
+               }
 
-       for (wait = 0; wait < 3; wait++) {
                if (!udev_device_get_property_value(dev, "ID_FS_TYPE"))
                        sleep(1);
                else
                        break;
+
+               udev_device_unref(dev);
+               udev_unref(udev);
        }
 
        r = update_block_data(data,
@@ -2151,8 +2154,10 @@ static int add_block_device(struct udev_device *dev, const char *devnode, bool m
        }
 
        if (mapper && !udev_device_get_property_value(dev, "ID_FS_TYPE")) {
+               char syspath[128] = {0};
+               sprintf(syspath, "/sys/block%s", rindex(udev_device_get_syspath(dev), '/'));
                data = make_block_data(devnode,
-                               udev_device_get_syspath(dev),
+                               syspath,
                                FILESYSTEM,
                                EXT4_NAME,
                                "1.0",
@@ -2204,7 +2209,7 @@ static int add_block_device(struct udev_device *dev, const char *devnode, bool m
        if (need_format) {
                struct format_data *fdata;
 
-               fdata = get_format_data(NULL, 1, false);
+               fdata = get_format_data(NULL, 1, true);
                if (!fdata) {
                        _E("Failed to get format data");
                        return -ENOMEM;