block: Mapper device should not update udev data on format operation 28/156128/1
authorpr.jung <pr.jung@samsung.com>
Tue, 17 Oct 2017 07:41:06 +0000 (16:41 +0900)
committerpr.jung <pr.jung@samsung.com>
Tue, 17 Oct 2017 07:41:06 +0000 (16:41 +0900)
Change-Id: I2a7473272e8c6b26d66dd5de4f06879e5b0aa038
Signed-off-by: pr.jung <pr.jung@samsung.com>
src/block/block.c

index 24f1a79..36f3929 100644 (file)
@@ -150,6 +150,7 @@ struct format_data {
        struct block_device *bdev;
        char *fs_type;
        enum unmount_operation option;
+       bool udev_update;
 };
 
 struct pipe_data {
@@ -1463,7 +1464,7 @@ out:
 
 static int format_block_device(struct block_device *bdev,
                const char *fs_type,
-               enum unmount_operation option)
+               enum unmount_operation option, bool udev_update)
 {
        struct block_data *data;
        int r;
@@ -1484,7 +1485,7 @@ static int format_block_device(struct block_device *bdev,
                }
        }
 
-       r = block_format(data, fs_type, bdev->mount_point_updated, false);
+       r = block_format(data, fs_type, bdev->mount_point_updated, udev_update);
        if (r < 0)
                _E("fail to format %s device : %d", data->devnode, r);
 
@@ -1499,7 +1500,7 @@ out:
 }
 
 static struct format_data *get_format_data(
-               const char *fs_type, enum unmount_operation option)
+               const char *fs_type, enum unmount_operation option, bool udev_update)
 {
        struct format_data *fdata;
 
@@ -1514,6 +1515,7 @@ static struct format_data *get_format_data(
        else
                fdata->fs_type = NULL;
        fdata->option = option;
+       fdata->udev_update = udev_update;
 
        return fdata;
 }
@@ -1581,7 +1583,7 @@ static int block_format_device(struct block_device *bdev, void *data)
                goto out;
        }
 
-       ret = format_block_device(bdev, fdata->fs_type, fdata->option);
+       ret = format_block_device(bdev, fdata->fs_type, fdata->option, fdata->udev_update);
        if (ret < 0)
                _E("fail to mount block device for %s", bdev->data->devnode);
 
@@ -2169,9 +2171,18 @@ static int add_block_device(struct udev_device *dev, const char *devnode, bool m
        pthread_mutex_unlock(&(th_manager[thread_id].mutex));
 
        if (need_format) {
-               ret = block_format(bdev->data, EXT4_NAME, false, false);
+               struct format_data *fdata;
+
+               fdata = get_format_data(NULL, 1, false);
+               if (!fdata) {
+                       _E("Failed to get format data");
+                       return -ENOMEM;
+               }
+
+               ret = add_operation(bdev, BLOCK_DEV_FORMAT, NULL, (void *)fdata);
                if (ret < 0) {
                        _E("Failed to add operation (format %s)", bdev->data->devnode);
+                       release_format_data(fdata);
                }
        }
 
@@ -2840,7 +2851,7 @@ static DBusMessage *request_format_block(dbus_method_reply_handle_h reply_handle
                goto out;
        }
 
-       fdata = get_format_data(NULL, option);
+       fdata = get_format_data(NULL, option, true);
        if (!fdata) {
                _E("Failed to get format data");
                goto out;
@@ -2916,7 +2927,7 @@ static DBusMessage *request_format_block_type(dbus_method_reply_handle_h reply_h
                goto out;
        }
 
-       fdata = get_format_data(type, option);
+       fdata = get_format_data(type, option, true);
        if (!fdata) {
                _E("Failed to get format data");
                goto out;