Update dlog of release cb 94/236194/4
authorYoungHun Kim <yh8004.kim@samsung.com>
Mon, 15 Jun 2020 11:19:22 +0000 (20:19 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Tue, 16 Jun 2020 11:39:33 +0000 (20:39 +0900)
Change-Id: I34b6877d1c6635902bb57504b3a62e953210485b

src/daemon/mm_resource_manager_daemon_priv.c
src/lib/mm_resource_manager_priv.c

index bafacb3..87c1152 100644 (file)
@@ -211,8 +211,8 @@ mm_resource_manager_error_e _mmrm_dmn_commit(mm_resource_manager_id id,
                        MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER, "Commit request is empty");
 
        MM_RM_INFO("RM #%"PRIu64" mgr [%p] release type (%s) acquires type (%s)", _mm_rm_hash64(mgr->id), mgr,
-               releases[0].type == MM_RESOURCE_MANAGER_NO_RES ? "" : _mm_resource_manager_get_res_str(releases[0].type),
-               acquires[0].type == MM_RESOURCE_MANAGER_NO_RES ? "" : _mm_resource_manager_get_res_str(acquires[0].type));
+               releases[0].type == MM_RESOURCE_MANAGER_NO_RES ? "nil" : _mm_resource_manager_get_res_str(releases[0].type),
+               acquires[0].type == MM_RESOURCE_MANAGER_NO_RES ? "nil" : _mm_resource_manager_get_res_str(acquires[0].type));
 
        ret = __check_release_requests(mgr, releases);
        MM_RM_RETVM_IF(ret != MM_RESOURCE_MANAGER_ERROR_NONE, ret, "check_release_requests is failed [0x%x]", ret);
index e3017f1..414ee93 100644 (file)
@@ -256,7 +256,7 @@ int _mm_resource_manager_resize_marked(mm_resource_manager_h rm,
        mm_resource_manager_res_p resource = (mm_resource_manager_res_p) resource_h;
        mm_resource_manager_res_p tmp_resource;
        mm_resource_manager_res_volume add_volume;
-       int i;
+       int idx;
        int ret = MM_RESOURCE_MANAGER_ERROR_NONE;
 
        __mm_resource_handles_lock();
@@ -264,8 +264,8 @@ int _mm_resource_manager_resize_marked(mm_resource_manager_h rm,
        __mm_resources_lock(handle);
        __mm_resource_handles_unlock();
 
-       i = __get_resource_index(handle, resource);
-       MM_RM_UNLOCK_RETVM_IF(i == MM_RESOURCE_MANAGER_RES_NOT_FOUND, handle->resources_lock,
+       idx = __get_resource_index(handle, resource);
+       MM_RM_UNLOCK_RETVM_IF(idx == MM_RESOURCE_MANAGER_RES_NOT_FOUND, handle->resources_lock,
                MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER, "Invalid resource handle");
        if (new_volume == resource->volume) {
                __mm_resources_unlock(handle);
@@ -297,7 +297,7 @@ int _mm_resource_manager_resize_marked(mm_resource_manager_h rm,
                resource->state = MM_RESOURCE_MANAGER_RES_STATE_FOR_ACQUIRE;
                resource->volume = new_volume;
 
-               handle->resources->pdata[i] = tmp_resource;
+               handle->resources->pdata[idx] = tmp_resource;
                break;
        }
 
@@ -359,16 +359,19 @@ int _mm_resource_manager_mark_for_release(mm_resource_manager_h rm, mm_resource_
 int _mm_resource_manager_mark_all_for_release(mm_resource_manager_h rm)
 {
        mm_resource_manager_s *handle = MM_RESOURCE_MANAGER(rm);
-       int i;
+       int idx;
+       int len;
 
        __mm_resource_handles_lock();
        MM_RESOURCE_MANAGER_CHECK(handle);
        __mm_resources_lock(handle);
        __mm_resource_handles_unlock();
 
-       for (i = 0; i < handle->resources->len; i++) {
-               if (!__mark_resource_for_release(handle->resources, i, (mm_resource_manager_res_p) handle->resources->pdata[i]))
-                       i--;
+       len = handle->resources->len;
+
+       for (idx = 0; idx < len; idx++) {
+               if (!__mark_resource_for_release(handle->resources, idx, (mm_resource_manager_res_p) handle->resources->pdata[idx]))
+                       MM_RM_INFO("[idx %d] resource length %d", idx, len);
        }
 
        MM_RM_INFO("All resources are marked for release in RM #%"PRIu64, _mm_rm_hash64(handle->id));
@@ -382,15 +385,15 @@ int _mm_resource_manager_get_resource_info(mm_resource_manager_h rm,
 {
        mm_resource_manager_s *handle = MM_RESOURCE_MANAGER(rm);
        mm_resource_manager_res_p resource = (mm_resource_manager_res_p) resource_h;
-       int i;
+       int idx;
 
        __mm_resource_handles_lock();
        MM_RESOURCE_MANAGER_CHECK(handle);
        __mm_resources_lock(handle);
        __mm_resource_handles_unlock();
 
-       i = __get_resource_index(handle, resource);
-       MM_RM_UNLOCK_RETVM_IF(i == MM_RESOURCE_MANAGER_RES_NOT_FOUND, handle->resources_lock,
+       idx = __get_resource_index(handle, resource);
+       MM_RM_UNLOCK_RETVM_IF(idx == MM_RESOURCE_MANAGER_RES_NOT_FOUND, handle->resources_lock,
                MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER, "Invalid RM #%"PRIu64"", _mm_rm_hash64(handle->id));
 
        info->type = resource->type;
@@ -490,6 +493,7 @@ static void __mm_resource_manager_release_callback(mm_resource_manager_s *handle
        mm_resource_manager_id handle_id;
        gboolean release_all = FALSE;
        int idx;
+       int len;
 
        MM_RM_INFO("Release callback is emitted for %s of volume %d in RM #%"PRIu64, _mm_resource_manager_get_res_str(type), volume, id);
 
@@ -497,9 +501,10 @@ static void __mm_resource_manager_release_callback(mm_resource_manager_s *handle
        MM_RM_HASH64(handle_id);
        if (handle_id == id) {
                __mm_resources_lock(handle);
+               len = handle->resources->len;
                __mm_resource_handles_unlock();
 
-               for (idx = 0; idx < handle->resources->len; idx++) {
+               for (idx = 0; idx < len; idx++) {
                        resource = (mm_resource_manager_res_s*)handle->resources->pdata[idx];
                        if (resource->type == type && resource->volume == volume) {
                                /* FIXME : Set true in advance release callback invoking to prevent deadlock with resource marking */
@@ -512,9 +517,13 @@ static void __mm_resource_manager_release_callback(mm_resource_manager_s *handle
                                __send_release_cb_sync(handle->id);
 
                                g_ptr_array_remove_index_fast(handle->resources, idx);
+
+                               MM_RM_INFO("resource length %d => %d", len, handle->resources->len);
+
                                break;
                        }
                }
+
                __mm_resources_unlock(handle);
 
                if (release_all) {
@@ -522,7 +531,7 @@ static void __mm_resource_manager_release_callback(mm_resource_manager_s *handle
                                _mm_resource_manager_commit(handle) == MM_RESOURCE_MANAGER_ERROR_NONE)
                                MM_RM_DEBUG("All resources are released after release cb");
                        else
-                               MM_RM_ERROR("Resources cannot be released after release cb");
+                               MM_RM_WARNING("Resources cannot be released after release cb");
                }
        } else {
                __mm_resource_handles_unlock();