summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpr.jung <pr.jung@samsung.com>2017-02-17 20:57:12 +0900
committerJung <pr.jung@samsung.com>2017-02-17 03:58:16 -0800
commit004cee046c7cb8810e98da074c15dd187e234caa (patch)
treefe9ca31ce3032668020ce354fb9a99efcc576ecc
parentfd45a2200ef3979bcaaeb2c13e750eff2f0bc2c8 (diff)
downloaddeviced-004cee046c7cb8810e98da074c15dd187e234caa.tar.gz
deviced-004cee046c7cb8810e98da074c15dd187e234caa.tar.bz2
deviced-004cee046c7cb8810e98da074c15dd187e234caa.zip
Change-Id: I1cec40da92f0a6cebcf97833fb1ac7ee920f46d0 Signed-off-by: pr.jung <pr.jung@samsung.com>
-rw-r--r--src/block/block.c72
1 files changed, 53 insertions, 19 deletions
diff --git a/src/block/block.c b/src/block/block.c
index 7d16d7c8..ccdfdb2e 100644
--- a/src/block/block.c
+++ b/src/block/block.c
@@ -920,7 +920,7 @@ static Eina_Bool pipe_cb(void *data, Ecore_Fd_Handler *fdh)
goto out;
}
- _D("op : %s, bdev : %p, result : %d",
+ _I("op : %s, bdev : %p, result : %d",
get_operation_char(pdata.op, name, sizeof(name)),
pdata.bdev, pdata.result);
@@ -1159,24 +1159,26 @@ static int mount_start(struct block_device *bdev)
data->state = BLOCK_MOUNT;
- ret = app2ext_migrate_legacy_all();
- if (ret < 0)
- _E("app2ext failed");
+ if (data->block_type == BLOCK_MMC_DEV) {
+ ret = app2ext_migrate_legacy_all();
+ if (ret < 0)
+ _E("app2ext failed");
- msg = dbus_method_sync_with_reply(PKGDIR_BUS_NAME, PKGDIR_PATH,
- PKGDIR_INTERFACE, "CreateExternalDirsForAllPkgs",
- NULL, NULL);
- if (!msg) {
- _D("Fail to create external directory");
- goto out;
- }
+ msg = dbus_method_sync_with_reply(PKGDIR_BUS_NAME, PKGDIR_PATH,
+ PKGDIR_INTERFACE, "CreateExternalDirsForAllPkgs",
+ NULL, NULL);
+ if (!msg) {
+ _E("Fail to create external directory");
+ goto out;
+ }
- dbus_error_init(&err);
+ dbus_error_init(&err);
- ret = dbus_message_get_args(msg, &err, DBUS_TYPE_BOOLEAN, &ret_val, DBUS_TYPE_INVALID);
- if (!ret) {
- _E("no message : [%s:%s]", err.name, err.message);
- dbus_error_free(&err);
+ ret = dbus_message_get_args(msg, &err, DBUS_TYPE_BOOLEAN, &ret_val, DBUS_TYPE_INVALID);
+ if (!ret) {
+ _E("no message : [%s:%s]", err.name, err.message);
+ dbus_error_free(&err);
+ }
}
out:
@@ -1936,7 +1938,7 @@ static int add_operation(struct block_device *bdev,
return -EINVAL;
- _D("Add operation (%s, %s)",
+ _I("Add operation (%s, %s)",
get_operation_char(operation, name, sizeof(name)),
bdev->data->devnode);
@@ -2262,6 +2264,32 @@ static int check_external_storage(const char* devnode)
return 1;
}
+static int check_already_handled(const char* devnode)
+{
+ struct block_device *bdev;
+ struct block_data *data;
+ dd_list *elem;
+ int i;
+
+ for (i = 0; i < THREAD_MAX; i++) {
+ pthread_mutex_lock(&(th_manager[i].mutex));
+ DD_LIST_FOREACH(th_manager[i].block_dev_list, elem, bdev) {
+ data = bdev->data;
+ if (!data)
+ continue;
+ if (bdev->removed)
+ continue;
+ if (!strncmp(data->devnode, devnode, sizeof(devnode) + 1)) {
+ pthread_mutex_unlock(&(th_manager[i].mutex));
+ return -1;
+ }
+ }
+ pthread_mutex_unlock(&(th_manager[i].mutex));
+ }
+
+ return 0;
+}
+
static int block_init_from_udev_enumerate(void)
{
struct udev *udev;
@@ -2335,7 +2363,13 @@ static int block_init_from_udev_enumerate(void)
if (r <= 0)
continue;
- _D("%s device add", devnode);
+ r = check_already_handled(devnode);
+ if (r < 0) {
+ _I("%s is already handled", devnode);
+ continue;
+ }
+
+ _I("%s device add", devnode);
add_block_device(dev, devnode);
udev_device_unref(dev);
@@ -2471,7 +2505,7 @@ static void uevent_block_handler(struct udev_device *dev)
if (!action)
return;
- _D("%s device %s", devnode, action);
+ _I("%s device %s", devnode, action);
if (!strncmp(action, UDEV_ADD, sizeof(UDEV_ADD)))
add_block_device(dev, devnode);
else if (!strncmp(action, UDEV_REMOVE, sizeof(UDEV_REMOVE)))