diff --git a/src/daemon/cri/cri_container.cc b/src/daemon/cri/cri_container.cc index df420c6e4c9d351b64087d402c0dbc2c88106f9e..9505e34f7c9561336107557ffb961448cd5d293d 100644 --- a/src/daemon/cri/cri_container.cc +++ b/src/daemon/cri/cri_container.cc @@ -891,6 +891,29 @@ void CRIRuntimeServiceImpl::PackContainerStatsAttributes( } } +static void SetFsUsage(const imagetool_fs_info *fs_usage, std::unique_ptr &container) +{ + if (fs_usage == nullptr || fs_usage->image_filesystems[0] == nullptr) { + container->mutable_writable_layer()->mutable_used_bytes()->set_value(0); + container->mutable_writable_layer()->mutable_inodes_used()->set_value(0); + return; + } + + if (fs_usage->image_filesystems[0]->used_bytes == nullptr) { + container->mutable_writable_layer()->mutable_used_bytes()->set_value(0); + } else { + container->mutable_writable_layer()->mutable_used_bytes()->set_value( + fs_usage->image_filesystems[0]->used_bytes->value); + } + + if (fs_usage->image_filesystems[0]->inodes_used == nullptr) { + container->mutable_writable_layer()->mutable_inodes_used()->set_value(0); + } else { + container->mutable_writable_layer()->mutable_inodes_used()->set_value( + fs_usage->image_filesystems[0]->inodes_used->value); + } +} + void CRIRuntimeServiceImpl::PackContainerStatsFilesystemUsage( const char *id, const char *image_type, std::unique_ptr &container, @@ -905,21 +928,7 @@ void CRIRuntimeServiceImpl::PackContainerStatsFilesystemUsage( ERROR("Failed to get container filesystem usage"); } - if (fs_usage == nullptr) { - container->mutable_writable_layer()->mutable_used_bytes()->set_value(0); - container->mutable_writable_layer()->mutable_inodes_used()->set_value(0); - } else { - if (fs_usage->image_filesystems[0]->used_bytes->value) { - container->mutable_writable_layer()->mutable_used_bytes()->set_value( - fs_usage->image_filesystems[0]->used_bytes->value); - } - - if (fs_usage->image_filesystems[0]->inodes_used->value) { - container->mutable_writable_layer()->mutable_inodes_used()->set_value( - fs_usage->image_filesystems[0]->inodes_used->value); - } - } - + SetFsUsage(fs_usage, container); free_imagetool_fs_info(fs_usage); } diff --git a/src/daemon/image/oci/storage/layer_store/graphdriver/devmapper/deviceset.c b/src/daemon/image/oci/storage/layer_store/graphdriver/devmapper/deviceset.c index 06b16e42b8414218e71877cf8ed0589ebc99baf3..8654e450ae4fa128d6a430e5f90e66b5d531189c 100644 --- a/src/daemon/image/oci/storage/layer_store/graphdriver/devmapper/deviceset.c +++ b/src/daemon/image/oci/storage/layer_store/graphdriver/devmapper/deviceset.c @@ -789,6 +789,7 @@ static void construct_device_id_map(struct device_set *devset) mark_device_id_used(devset, device_info->info->device_id); devmapper_device_info_ref_dec(device_info); } + util_free_array(dev_arr); } static void count_deleted_devices(struct device_set *devset) @@ -812,6 +813,7 @@ static void count_deleted_devices(struct device_set *devset) } devmapper_device_info_ref_dec(device_info); } + util_free_array(dev_arr); } static int remove_transaction_metadata(struct device_set *devset) @@ -2383,6 +2385,8 @@ static int do_check_all_devices(struct device_set *devset) if (!util_has_prefix(devices_list[i], devset->device_prefix)) { continue; } + UTIL_FREE_AND_SET_NULL(target_type); + UTIL_FREE_AND_SET_NULL(params); if (dev_get_status(&start, &length, &target_type, ¶ms, devices_list[i]) != 0) { WARN("devmapper: get device status %s failed", devices_list[i]); continue;