From c21635fb151705c919ed416205524a3bc77cfe8c Mon Sep 17 00:00:00 2001 From: "pr.jung" Date: Tue, 10 Oct 2017 15:23:49 +0900 Subject: [PATCH] block: Do not add INSERT operation for unformatted device (except mmc) Change-Id: I73ed8bf74b367397f25ec043d690d7caa63e7b30 Signed-off-by: pr.jung --- src/block/block.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/block/block.c b/src/block/block.c index bc8e798..edda2e8 100644 --- a/src/block/block.c +++ b/src/block/block.c @@ -2152,20 +2152,20 @@ static int add_block_device(struct udev_device *dev, const char *devnode, bool i pthread_mutex_unlock(&(th_manager[thread_id].mutex)); - ret = add_operation(bdev, BLOCK_DEV_INSERT, NULL, (void *)data); - if (ret < 0) { - _E("Failed to add operation (insert %s)", devnode); - free_block_device(bdev); - return ret; - } - /* Check this sdcard is already formatted for extended internal sdcard */ if (block_conf[bdev->data->block_type].extendedinternal && bdev->data->block_type == BLOCK_MMC_DEV && - bdev->data->primary) { + bdev->data->primary) { // sdcard primary partition and extended internal option is on _I("Check whether sdcard will be used as extended internal storage"); - if (!init) { // after booting is done + if (!init) { // after booting is done launch popup for setting + ret = add_operation(bdev, BLOCK_DEV_INSERT, NULL, (void *)data); + if (ret < 0) { + _E("Failed to add operation (insert %s)", devnode); + free_block_device(bdev); + return ret; + } + snprintf(id_string, PATH_LEN, "%d", bdev->data->id); ret = launch_system_app(POPUP_DEFAULT, 4, POPUP_KEY_CONTENT, "sdcardsetup", POPUP_SDCARD_ID, id_string); if (ret < 0) @@ -2183,6 +2183,7 @@ static int add_block_device(struct udev_device *dev, const char *devnode, bool i ret = change_mount_point(bdev, EXTENDED_SD_PATH); if (ret < 0) { ret = -EPERM; + free_block_device(bdev); return ret; } @@ -2196,6 +2197,13 @@ static int add_block_device(struct udev_device *dev, const char *devnode, bool i } } + ret = add_operation(bdev, BLOCK_DEV_INSERT, NULL, (void *)data); + if (ret < 0) { + _E("Failed to add operation (insert %s)", devnode); + free_block_device(bdev); + return ret; + } + /* Create file for block device /run/external-storage/id */ if (bdev->data->block_type == BLOCK_MMC_EXTENDED_INTERNAL_DEV) create_file(bdev->data->id, bdev->data->mount_point, true); -- 2.7.4