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);
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:
return -EINVAL;
- _D("Add operation (%s, %s)",
+ _I("Add operation (%s, %s)",
get_operation_char(operation, name, sizeof(name)),
bdev->data->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;
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);
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)))