!16 Sync each branch submit

From: @wenchao-hao
Reviewed-by: @wubo009
Signed-off-by: @wubo009
This commit is contained in:
openeuler-ci-bot 2021-09-28 08:21:39 +00:00 committed by Gitee
commit 5c0841e3bd
17 changed files with 714 additions and 34 deletions

View File

@ -0,0 +1,25 @@
From 93b0a8881790097e2b4c3116fe9af38f237fb8cc Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Tue, 2 Jun 2020 16:15:18 +0200
Subject: [PATCH 167/193] lvm: Add missing attribute to bd_lvm_pvdata_copy in
LVM DBUs plugin
---
src/plugins/lvm-dbus.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/lvm-dbus.c b/src/plugins/lvm-dbus.c
index 222597b..454fc78 100644
--- a/src/plugins/lvm-dbus.c
+++ b/src/plugins/lvm-dbus.c
@@ -100,6 +100,7 @@ BDLVMPVdata* bd_lvm_pvdata_copy (BDLVMPVdata *data) {
new_data->pv_name = g_strdup (data->pv_name);
new_data->pv_uuid = g_strdup (data->pv_uuid);
new_data->pv_free = data->pv_free;
+ new_data->pv_size = data->pv_size;
new_data->pe_start = data->pe_start;
new_data->vg_name = g_strdup (data->vg_name);
new_data->vg_uuid = g_strdup (data->vg_uuid);
--
1.8.3.1

View File

@ -0,0 +1,37 @@
From be58ebe20fd9fdfc2db7bdd99a55eff835cef23a Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Wed, 10 Jun 2020 14:31:15 +0200
Subject: [PATCH 184/193] module.c: Fix error message when loading module
without options
Lets avoid error messages like "Failed to load the module 'kvdo'
with options '(null)'".
---
src/utils/module.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/utils/module.c b/src/utils/module.c
index 988f603..eb3f765 100644
--- a/src/utils/module.c
+++ b/src/utils/module.c
@@ -167,9 +167,14 @@ gboolean bd_utils_load_kernel_module (const gchar *module_name, const gchar *opt
ret = kmod_module_probe_insert_module (mod, KMOD_PROBE_FAIL_ON_LOADED,
options, NULL, NULL, NULL);
if (ret < 0) {
- g_set_error (error, BD_UTILS_MODULE_ERROR, BD_UTILS_MODULE_ERROR_FAIL,
- "Failed to load the module '%s' with options '%s': %s",
- module_name, options, strerror_l (-ret, c_locale));
+ if (options)
+ g_set_error (error, BD_UTILS_MODULE_ERROR, BD_UTILS_MODULE_ERROR_FAIL,
+ "Failed to load the module '%s' with options '%s': %s",
+ module_name, options, strerror_l (-ret, c_locale));
+ else
+ g_set_error (error, BD_UTILS_MODULE_ERROR, BD_UTILS_MODULE_ERROR_FAIL,
+ "Failed to load the module '%s': %s",
+ module_name, strerror_l (-ret, c_locale));
kmod_module_unref (mod);
kmod_unref (ctx);
freelocale (c_locale);
--
1.8.3.1

View File

@ -0,0 +1,119 @@
From f1b6e752d8836d23ebcdf6833b96e09678bda2c9 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Wed, 10 Jun 2020 17:03:28 +0200
Subject: [PATCH 185/193] exec: Fix setting locale for util calls
This actually fixes two issue. The _utils_exec_and_report_progress
function didn't set the LC_ALL=C environment variable to make sure
we get output in English. And also we shouldn't use setenv in the
GSpawnChildSetupFunc, it's actually example of what not to do in
g_spawn_async documentation. This fix uses g_environ_setenv and
passes the new environment to the g_spawn call.
---
src/utils/exec.c | 26 +++++++++++++++++---------
tests/utils_test.py | 7 +++++++
2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/src/utils/exec.c b/src/utils/exec.c
index 9293930..37bd960 100644
--- a/src/utils/exec.c
+++ b/src/utils/exec.c
@@ -140,11 +140,6 @@ static void log_done (guint64 task_id, gint exit_code) {
return;
}
-static void set_c_locale(gpointer user_data __attribute__((unused))) {
- if (setenv ("LC_ALL", "C", 1) != 0)
- g_warning ("Failed to set LC_ALL=C for a child process!");
-}
-
/**
* bd_utils_exec_and_report_error:
* @argv: (array zero-terminated=1): the argv array for the call
@@ -194,6 +189,8 @@ gboolean bd_utils_exec_and_report_status_error (const gchar **argv, const BDExtr
const BDExtraArg **extra_p = NULL;
gint exit_status = 0;
guint i = 0;
+ gchar **old_env = NULL;
+ gchar **new_env = NULL;
if (extra) {
args_len = g_strv_length ((gchar **) argv);
@@ -219,16 +216,20 @@ gboolean bd_utils_exec_and_report_status_error (const gchar **argv, const BDExtr
args[i] = NULL;
}
+ old_env = g_get_environ ();
+ new_env = g_environ_setenv (old_env, "LC_ALL", "C", TRUE);
+
task_id = log_running (args ? args : argv);
- success = g_spawn_sync (NULL, args ? (gchar **) args : (gchar **) argv, NULL, G_SPAWN_SEARCH_PATH,
- (GSpawnChildSetupFunc) set_c_locale, NULL,
- &stdout_data, &stderr_data, &exit_status, error);
+ success = g_spawn_sync (NULL, args ? (gchar **) args : (gchar **) argv, new_env, G_SPAWN_SEARCH_PATH,
+ NULL, NULL, &stdout_data, &stderr_data, &exit_status, error);
if (!success) {
/* error is already populated from the call */
+ g_strfreev (new_env);
g_free (stdout_data);
g_free (stderr_data);
return FALSE;
}
+ g_strfreev (new_env);
/* g_spawn_sync set the status in the same way waitpid() does, we need
to get the process exit code manually (this is similar to calling
@@ -297,6 +298,8 @@ static gboolean _utils_exec_and_report_progress (const gchar **argv, const BDExt
gboolean err_done = FALSE;
GString *stdout_data = g_string_new (NULL);
GString *stderr_data = g_string_new (NULL);
+ gchar **old_env = NULL;
+ gchar **new_env = NULL;
/* TODO: share this code between functions */
if (extra) {
@@ -325,7 +328,10 @@ static gboolean _utils_exec_and_report_progress (const gchar **argv, const BDExt
task_id = log_running (args ? args : argv);
- ret = g_spawn_async_with_pipes (NULL, args ? (gchar**) args : (gchar**) argv, NULL,
+ old_env = g_get_environ ();
+ new_env = g_environ_setenv (old_env, "LC_ALL", "C", TRUE);
+
+ ret = g_spawn_async_with_pipes (NULL, args ? (gchar**) args : (gchar**) argv, new_env,
G_SPAWN_DEFAULT|G_SPAWN_SEARCH_PATH|G_SPAWN_DO_NOT_REAP_CHILD,
NULL, NULL, &pid, NULL, &out_fd, &err_fd, error);
@@ -333,9 +339,11 @@ static gboolean _utils_exec_and_report_progress (const gchar **argv, const BDExt
/* error is already populated */
g_string_free (stdout_data, TRUE);
g_string_free (stderr_data, TRUE);
+ g_strfreev (new_env);
g_free (args);
return FALSE;
}
+ g_strfreev (new_env);
args_str = g_strjoinv (" ", args ? (gchar **) args : (gchar **) argv);
msg = g_strdup_printf ("Started '%s'", args_str);
diff --git a/tests/utils_test.py b/tests/utils_test.py
index 4bec3db..2bec5ed 100644
--- a/tests/utils_test.py
+++ b/tests/utils_test.py
@@ -170,6 +170,13 @@ class UtilsExecLoggingTest(UtilsTestCase):
# exit code != 0
self.assertTrue(BlockDev.utils_check_util_version("libblockdev-fake-util-fail", "1.1", "version", "Version:\\s(.*)"))
+ @tag_test(TestTags.NOSTORAGE, TestTags.CORE)
+ def test_exec_locale(self):
+ """Verify that setting locale for exec functions works as expected"""
+
+ succ, out = BlockDev.utils_exec_and_capture_output(["locale"])
+ self.assertTrue(succ)
+ self.assertIn("LC_ALL=C", out)
class UtilsDevUtilsTestCase(UtilsTestCase):
@tag_test(TestTags.NOSTORAGE, TestTags.CORE)
--
1.8.3.1

View File

@ -0,0 +1,28 @@
From dff4f13d20e7371cd55df7aab7a1800c41e3d39b Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Mon, 29 Jun 2020 14:40:57 +0200
Subject: [PATCH 188/193] lvm: Fix checking for LVM VDO dependencies
We also need to check for the LVM tools availability when checking
for BD_LVM_TECH_VDO availability.
---
src/plugins/lvm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/plugins/lvm.c b/src/plugins/lvm.c
index 32ad55c..2bd7782 100644
--- a/src/plugins/lvm.c
+++ b/src/plugins/lvm.c
@@ -329,7 +329,8 @@ gboolean bd_lvm_is_tech_avail (BDLVMTech tech, guint64 mode, GError **error) {
return TRUE;
case BD_LVM_TECH_VDO:
return check_features (&avail_features, FEATURES_VDO_MASK, features, FEATURES_LAST, &deps_check_lock, error) &&
- check_module_deps (&avail_module_deps, MODULE_DEPS_VDO_MASK, module_deps, MODULE_DEPS_LAST, &deps_check_lock, error);
+ check_module_deps (&avail_module_deps, MODULE_DEPS_VDO_MASK, module_deps, MODULE_DEPS_LAST, &deps_check_lock, error) &&
+ check_deps (&avail_deps, DEPS_LVM_MASK, deps, DEPS_LAST, &deps_check_lock, error);
default:
/* everything is supported by this implementation of the plugin */
return check_deps (&avail_deps, DEPS_LVM_MASK, deps, DEPS_LAST, &deps_check_lock, error);
--
1.8.3.1

View File

@ -0,0 +1,25 @@
From c9e76261bc52cf2360ee7f43dcdfedfa7149b30e Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Tue, 30 Jun 2020 16:05:47 +0200
Subject: [PATCH 189/193] lvm-dbus: Fix memory leak in bd_lvm_cache_attach
---
src/plugins/lvm-dbus.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/plugins/lvm-dbus.c b/src/plugins/lvm-dbus.c
index fa19d1a..327969d 100644
--- a/src/plugins/lvm-dbus.c
+++ b/src/plugins/lvm-dbus.c
@@ -3274,6 +3274,8 @@ gboolean bd_lvm_cache_attach (const gchar *vg_name, const gchar *data_lv, const
lv_id = g_strdup_printf ("%s/%s", vg_name, cache_pool_lv);
call_lvm_obj_method_sync (lv_id, CACHE_POOL_INTF, "CacheLv", params, NULL, extra, TRUE, error);
+ g_free (lv_id);
+ g_free (lv_obj_path);
return ((*error) == NULL);
}
--
1.8.3.1

View File

@ -0,0 +1,24 @@
From d9e8b2d43c84a664aa6a9b498047a865a1a38225 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Tue, 30 Jun 2020 16:06:01 +0200
Subject: [PATCH 190/193] lvm: Fix memory leak bd_lvm_cache_create_cached_lv
---
src/plugins/lvm.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/lvm.c b/src/plugins/lvm.c
index 0aae9ac..bec7656 100644
--- a/src/plugins/lvm.c
+++ b/src/plugins/lvm.c
@@ -2475,6 +2475,7 @@ gboolean bd_lvm_cache_create_cached_lv (const gchar *vg_name, const gchar *lv_na
success = bd_lvm_lvcreate (vg_name, lv_name, data_size, NULL, slow_pvs, NULL, error);
if (!success) {
+ g_free (name);
g_prefix_error (error, "Failed to create the data LV: ");
bd_utils_report_finished (progress_id, (*error)->message);
return FALSE;
--
1.8.3.1

View File

@ -0,0 +1,52 @@
From 90b119f3026af68e2478450c7a71ed0fe68a9cbc Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Tue, 11 Aug 2020 18:00:57 +0200
Subject: [PATCH 07/15] fs: Fix return values in bd_fs_ntfs_get_info
---
src/plugins/fs/ntfs.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/plugins/fs/ntfs.c b/src/plugins/fs/ntfs.c
index fdd959a..b406f41 100644
--- a/src/plugins/fs/ntfs.c
+++ b/src/plugins/fs/ntfs.c
@@ -253,7 +253,7 @@ BDFSNtfsInfo* bd_fs_ntfs_get_info (const gchar *device, GError **error) {
g_autofree gchar* mountpoint = NULL;
if (!check_deps (&avail_deps, DEPS_NTFSCLUSTER_MASK, deps, DEPS_LAST, &deps_check_lock, error))
- return FALSE;
+ return NULL;
mountpoint = bd_fs_get_mountpoint (device, error);
if (mountpoint != NULL) {
@@ -270,7 +270,7 @@ BDFSNtfsInfo* bd_fs_ntfs_get_info (const gchar *device, GError **error) {
success = bd_utils_exec_and_capture_output (args, NULL, &output, error);
if (!success)
/* error is already populated */
- return FALSE;
+ return NULL;
ret = g_new0 (BDFSNtfsInfo, 1);
lines = g_strsplit (output, "\n", 0);
@@ -283,7 +283,7 @@ BDFSNtfsInfo* bd_fs_ntfs_get_info (const gchar *device, GError **error) {
g_set_error (error, BD_FS_ERROR, BD_FS_ERROR_PARSE, "Failed to parse NTFS file system information");
g_strfreev (lines);
bd_fs_ntfs_info_free (ret);
- return FALSE;
+ return NULL;
}
/* extract data from something like this: "bytes per volume : 998240256" */
@@ -297,7 +297,7 @@ BDFSNtfsInfo* bd_fs_ntfs_get_info (const gchar *device, GError **error) {
g_set_error (error, BD_FS_ERROR, BD_FS_ERROR_PARSE, "Failed to parse NTFS file system information");
g_strfreev (lines);
bd_fs_ntfs_info_free (ret);
- return FALSE;
+ return NULL;
}
/* extract data from something like this: "bytes of free space : 992759808" */
--
1.8.3.1

View File

@ -0,0 +1,52 @@
From 63f5df1992b15c1d6a442f2d392fa3b92ecf7b92 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Tue, 11 Aug 2020 18:04:58 +0200
Subject: [PATCH 08/15] fs: Fix return values in bd_fs_xfs_get_info
---
src/plugins/fs/xfs.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/plugins/fs/xfs.c b/src/plugins/fs/xfs.c
index b8b4bbe..d28ce72 100644
--- a/src/plugins/fs/xfs.c
+++ b/src/plugins/fs/xfs.c
@@ -274,7 +274,7 @@ BDFSXfsInfo* bd_fs_xfs_get_info (const gchar *device, GError **error) {
if (!success) {
/* error is already populated */
bd_fs_xfs_info_free (ret);
- return FALSE;
+ return NULL;
}
lines = g_strsplit (output, "\n", 0);
@@ -288,7 +288,7 @@ BDFSXfsInfo* bd_fs_xfs_get_info (const gchar *device, GError **error) {
g_set_error (error, BD_FS_ERROR, BD_FS_ERROR_PARSE, "Failed to parse xfs file system information");
g_strfreev (lines);
bd_fs_xfs_info_free (ret);
- return FALSE;
+ return NULL;
}
/* extract data from something like this: "data = bsize=4096 blocks=262400, imaxpct=25" */
@@ -305,7 +305,7 @@ BDFSXfsInfo* bd_fs_xfs_get_info (const gchar *device, GError **error) {
g_set_error (error, BD_FS_ERROR, BD_FS_ERROR_PARSE, "Failed to parse xfs file system information");
g_strfreev (lines);
bd_fs_xfs_info_free (ret);
- return FALSE;
+ return NULL;
}
while (isdigit (*val_start) || isspace(*val_start))
val_start++;
@@ -318,7 +318,7 @@ BDFSXfsInfo* bd_fs_xfs_get_info (const gchar *device, GError **error) {
g_set_error (error, BD_FS_ERROR, BD_FS_ERROR_PARSE, "Failed to parse xfs file system information");
g_strfreev (lines);
bd_fs_xfs_info_free (ret);
- return FALSE;
+ return NULL;
}
g_strfreev (lines);
--
1.8.3.1

View File

@ -0,0 +1,30 @@
From 332c90019613797a2a634020f288a81a09b8b985 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Tue, 18 Aug 2020 09:44:29 +0200
Subject: [PATCH 09/15] dm: Fix comparing DM RAID member devices UUID
There is no "UUID" property in UDev we must use the "ID_FS_UUID"
one.
This comparison works only because most DM RAID members don't have
UUID so the check is skipped, but it fails for DDF RAID members
which have a special GUID/UUID in UDev database.
---
src/plugins/dm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/dm.c b/src/plugins/dm.c
index fb4e50b..93a47f4 100644
--- a/src/plugins/dm.c
+++ b/src/plugins/dm.c
@@ -481,7 +481,7 @@ static gboolean raid_dev_matches_spec (struct raid_dev *raid_dev, const gchar *n
context = udev_new ();
device = udev_device_new_from_subsystem_sysname (context, "block", dev_name);
- dev_uuid = udev_device_get_property_value (device, "UUID");
+ dev_uuid = udev_device_get_property_value (device, "ID_FS_UUID");
major_str = udev_device_get_property_value (device, "MAJOR");
minor_str = udev_device_get_property_value (device, "MINOR");
--
1.8.3.1

View File

@ -0,0 +1,30 @@
From 6c0ae13b509975e67c65d690d388afccc78a0b63 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Fri, 25 Sep 2020 14:23:24 +0200
Subject: [PATCH 10/15] dm: Fix memory leak in the DM plugin and DM logging
redirect function
conflict:
1. there is no dm_logging.c in v2.24
Signed-off-by: Vojtech Trefny <vtrefny@redhat.com>
Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
---
src/plugins/dm.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/dm.c b/src/plugins/dm.c
index 93a47f4..e8f0f4e 100644
--- a/src/plugins/dm.c
+++ b/src/plugins/dm.c
@@ -246,6 +246,7 @@ gchar* bd_dm_name_from_node (const gchar *dm_node, GError **error) {
if (!success) {
/* errror is already populated */
+ g_free (ret);
return NULL;
}
--
1.8.3.1

View File

@ -0,0 +1,29 @@
From 11e899c9f7256cd549e6a0a5ef607925b15cdb7a Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Fri, 25 Sep 2020 14:24:14 +0200
Subject: [PATCH 11/15] fs: Fix memory leak
Conflict:
1. due to context differences, we have adapted the patch.
Signed-off-by: Vojtech Trefny <vtrefny@redhat.com>
Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
---
src/plugins/fs/mount.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/fs/mount.c b/src/plugins/fs/mount.c
index 43d64e8..98110aa 100644
--- a/src/plugins/fs/mount.c
+++ b/src/plugins/fs/mount.c
@@ -541,6 +541,7 @@ static gboolean run_as_user (MountFunc func, MountArgs *args, uid_t run_as_uid,
"Unknoen error while reading error.");
g_io_channel_unref (channel);
close (pipefd[0]);
+ g_free(error_msg);
return FALSE;
}
--
1.8.3.1

View File

@ -0,0 +1,24 @@
From bc7fddbe15f21eba45d55b3d9a9feaabf954a309 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Fri, 25 Sep 2020 14:26:24 +0200
Subject: [PATCH 12/15] kbd: Fix memory leak
---
src/plugins/kbd.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/kbd.c b/src/plugins/kbd.c
index a2908ec..41593be 100644
--- a/src/plugins/kbd.c
+++ b/src/plugins/kbd.c
@@ -1254,6 +1254,7 @@ static gboolean get_cache_size_used (const gchar *cache_dev_sys, guint64 *size,
g_io_channel_unref (file);
if (!found) {
+ g_free (line);
g_set_error (error, BD_KBD_ERROR, BD_KBD_ERROR_BCACHE_INVAL,
"Failed to get cache usage data");
return FALSE;
--
1.8.3.1

View File

@ -0,0 +1,24 @@
From 696dd84099cc2144b7c6b530933bed01b5fbaac4 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Fri, 25 Sep 2020 14:26:37 +0200
Subject: [PATCH 13/15] lvm-dbus: Fix memory leak
---
src/plugins/lvm-dbus.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/lvm-dbus.c b/src/plugins/lvm-dbus.c
index b0efe7a..bf60141 100644
--- a/src/plugins/lvm-dbus.c
+++ b/src/plugins/lvm-dbus.c
@@ -2978,6 +2978,7 @@ gboolean bd_lvm_cache_detach (const gchar *vg_name, const gchar *cached_lv, gboo
lv_id = g_strdup_printf ("%s/%s", vg_name, cached_lv);
call_lvm_obj_method_sync (lv_id, CACHED_LV_INTF, "DetachCachePool", params, NULL, extra, TRUE, error);
g_free (lv_id);
+ g_free (cache_pool_name);
return ((*error) == NULL);
}
--
1.8.3.1

View File

@ -0,0 +1,24 @@
From d60f654d4547febf7c6ce5353a403ca0df60450c Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Fri, 25 Sep 2020 14:27:22 +0200
Subject: [PATCH 14/15] mdraid: Fix memory leak
---
src/plugins/mdraid.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/mdraid.c b/src/plugins/mdraid.c
index 74af744..b97bc64 100644
--- a/src/plugins/mdraid.c
+++ b/src/plugins/mdraid.c
@@ -1332,6 +1332,7 @@ gchar* bd_md_name_from_node (const gchar *node, GError **error) {
continue;
}
node_name = g_path_get_basename (dev_path);
+ g_free (dev_path);
if (g_strcmp0 (node_name, node) == 0) {
found = TRUE;
name = g_path_get_basename (*path_p);
--
1.8.3.1

View File

@ -0,0 +1,24 @@
From 58e7484228fcfbffc439a9d5131a221dd9e35d5f Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Fri, 25 Sep 2020 14:27:54 +0200
Subject: [PATCH 15/15] swap: Fix memory leak
---
src/plugins/swap.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/swap.c b/src/plugins/swap.c
index 102780a..115f8fc 100644
--- a/src/plugins/swap.c
+++ b/src/plugins/swap.c
@@ -417,6 +417,7 @@ gboolean bd_swap_swapstatus (const gchar *device, GError **error) {
if (!real_device) {
/* the device doesn't exist and thus is not an active swap */
g_clear_error (error);
+ g_free (file_content);
return FALSE;
}
}
--
1.8.3.1

View File

@ -0,0 +1,101 @@
From 5528baef6ccc835a06c45f9db34a2c9c3f2dd940 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Tue, 16 Mar 2021 12:05:37 +0100
Subject: [PATCH] vdo: Do not use g_memdup in bd_vdo_stats_copy
g_memdup is deprecated and the replacement g_memdup2 is not yet
available so lets just do the copy manually.
Signed-off-by: Vojtech Trefny <vtrefny@redhat.com>
---
src/lib/plugin_apis/vdo.api | 17 ++++++++++++++++-
src/lib/plugin_apis/vdo.c | 17 ++++++++++++++++-
src/plugins/vdo.c | 17 ++++++++++++++++-
3 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/src/lib/plugin_apis/vdo.api b/src/lib/plugin_apis/vdo.api
index 936f8e0..312de4e 100644
--- a/src/lib/plugin_apis/vdo.api
+++ b/src/lib/plugin_apis/vdo.api
@@ -170,7 +170,22 @@ void bd_vdo_stats_free (BDVDOStats *stats) {
* Deprecated: 2.24: Use LVM-VDO integration instead.
*/
BDVDOStats* bd_vdo_stats_copy (BDVDOStats *stats) {
- return g_memdup (stats, sizeof (BDVDOStats));
+ if (stats == NULL)
+ return NULL;
+
+ BDVDOStats *new_stats = g_new0 (BDVDOStats, 1);
+
+ new_stats->block_size = stats->block_size;
+ new_stats->logical_block_size = stats->logical_block_size;
+ new_stats->physical_blocks = stats->physical_blocks;
+ new_stats->data_blocks_used = stats->data_blocks_used;
+ new_stats->overhead_blocks_used = stats->overhead_blocks_used;
+ new_stats->logical_blocks_used = stats->logical_blocks_used;
+ new_stats->used_percent = stats->used_percent;
+ new_stats->saving_percent = stats->saving_percent;
+ new_stats->write_amplification_ratio = stats->write_amplification_ratio;
+
+ return new_stats;
}
GType bd_vdo_stats_get_type () {
diff --git a/src/lib/plugin_apis/vdo.c b/src/lib/plugin_apis/vdo.c
index 40563ee..3e23bbc 100644
--- a/src/lib/plugin_apis/vdo.c
+++ b/src/lib/plugin_apis/vdo.c
@@ -106,7 +106,22 @@ void bd_vdo_stats_free (BDVDOStats *stats) {
* Deprecated: 2.24: Use LVM-VDO integration instead.
*/
BDVDOStats* bd_vdo_stats_copy (BDVDOStats *stats) {
- return g_memdup (stats, sizeof (BDVDOStats));
+ if (stats == NULL)
+ return NULL;
+
+ BDVDOStats *new_stats = g_new0 (BDVDOStats, 1);
+
+ new_stats->block_size = stats->block_size;
+ new_stats->logical_block_size = stats->logical_block_size;
+ new_stats->physical_blocks = stats->physical_blocks;
+ new_stats->data_blocks_used = stats->data_blocks_used;
+ new_stats->overhead_blocks_used = stats->overhead_blocks_used;
+ new_stats->logical_blocks_used = stats->logical_blocks_used;
+ new_stats->used_percent = stats->used_percent;
+ new_stats->saving_percent = stats->saving_percent;
+ new_stats->write_amplification_ratio = stats->write_amplification_ratio;
+
+ return new_stats;
}
GType bd_vdo_stats_get_type () {
diff --git a/src/plugins/vdo.c b/src/plugins/vdo.c
index 2352394..a9eb54a 100644
--- a/src/plugins/vdo.c
+++ b/src/plugins/vdo.c
@@ -81,7 +81,22 @@ void bd_vdo_stats_free (BDVDOStats *stats) {
}
BDVDOStats* bd_vdo_stats_copy (BDVDOStats *stats) {
- return g_memdup (stats, sizeof (BDVDOStats));
+ if (stats == NULL)
+ return NULL;
+
+ BDVDOStats *new_stats = g_new0 (BDVDOStats, 1);
+
+ new_stats->block_size = stats->block_size;
+ new_stats->logical_block_size = stats->logical_block_size;
+ new_stats->physical_blocks = stats->physical_blocks;
+ new_stats->data_blocks_used = stats->data_blocks_used;
+ new_stats->overhead_blocks_used = stats->overhead_blocks_used;
+ new_stats->logical_blocks_used = stats->logical_blocks_used;
+ new_stats->used_percent = stats->used_percent;
+ new_stats->saving_percent = stats->saving_percent;
+ new_stats->write_amplification_ratio = stats->write_amplification_ratio;
+
+ return new_stats;
}
--
2.27.0

View File

@ -3,13 +3,30 @@
Name: libblockdev
Version: 2.24
Release: 2
Release: 8
Summary: libblockdev is a C library supporting GObject introspection for manipulation of block devices
License: LGPLv2+
URL: https://github.com/storaged-project/libblockdev
Source0: https://github.com/storaged-project/libblockdev/releases/download/%{version}-1/%{name}-%{version}.tar.gz
BuildRequires: git glib2-devel libyaml-devel libbytesize-devel parted-devel libuuid-devel ndctl-devel device-mapper-devel
Patch1: 0001-lvm-Add-missing-attribute-to-bd_lvm_pvdata_copy-in-L.patch
Patch2: 0002-module.c-Fix-error-message-when-loading-module-witho.patch
Patch3: 0003-exec-Fix-setting-locale-for-util-calls.patch
Patch4: 0004-lvm-Fix-checking-for-LVM-VDO-dependencies.patch
Patch5: 0005-lvm-dbus-Fix-memory-leak-in-bd_lvm_cache_attach.patch
Patch6: 0006-lvm-Fix-memory-leak-bd_lvm_cache_create_cached_lv.patch
Patch7: 0007-fs-Fix-return-values-in-bd_fs_ntfs_get_info.patch
Patch8: 0008-fs-Fix-return-values-in-bd_fs_xfs_get_info.patch
Patch9: 0009-dm-Fix-comparing-DM-RAID-member-devices-UUID.patch
Patch10: 0010-dm-Fix-memory-leak-in-the-DM-plugin-and-DM-logging-r.patch
Patch11: 0011-fs-Fix-memory-leak.patch
Patch12: 0012-kbd-Fix-memory-leak.patch
Patch13: 0013-lvm-dbus-Fix-memory-leak.patch
Patch14: 0014-mdraid-Fix-memory-leak.patch
Patch15: 0015-swap-Fix-memory-leak.patch
Patch16: 0016-vdo-Do-not-use-g_memdup-in-bd_vdo_stats_copy.patch
BuildRequires: glib2-devel libyaml-devel libbytesize-devel parted-devel libuuid-devel ndctl-devel device-mapper-devel
BuildRequires: device-mapper-devel systemd-devel nss-devel volume_key-devel >= 0.3.9-7 libblkid-devel libmount-devel
BuildRequires: cryptsetup-devel kmod-devel libxslt glib2-doc gtk-doc python2-devel python3-devel gobject-introspection-devel
BuildRequires: autoconf-archive
@ -18,37 +35,37 @@ Requires: device-mapper-persistent-data lvm2-dbusd >= 2.02.156 ndctl gdisk
Recommends: vdo kmod-kvdo
Provides: %{name}-utils%{?_isa} %{name}-utils
Obsoletes: %{name}-utils
Obsoletes: %{name}-utils < %{version}
Provides: %{name}-btrfs%{?_isa} %{name}-btrfs
Obsoletes: %{name}-btrfs
Obsoletes: %{name}-btrfs < %{version}
Provides: %{name}-crypto%{?_isa} %{name}-crypto
Obsoletes: %{name}-crypto
Obsoletes: %{name}-crypto < %{version}
Provides: %{name}-dm%{?_isa} %{name}-dm
Obsoletes: %{name}-dm
Obsoletes: %{name}-dm < %{version}
Provides: %{name}-fs%{?_isa} %{name}-fs
Obsoletes: %{name}-fs
Obsoletes: %{name}-fs < %{version}
Provides: %{name}-kbd%{?_isa} %{name}-kbd
Obsoletes: %{name}-kbd
Obsoletes: %{name}-kbd < %{version}
Provides: %{name}-vdo%{?_isa} %{name}-vdo
Obsoletes: %{name}-vdo
Obsoletes: %{name}-vdo < %{version}
Provides: %{name}-loop%{?_isa} %{name}-loop
Obsoletes: %{name}-loop
Obsoletes: %{name}-loop < %{version}
Provides: %{name}-lvm%{?_isa} %{name}-lvm
Obsoletes: %{name}-lvm
Obsoletes: %{name}-lvm < %{version}
Provides: %{name}-lvm-dbus%{?_isa} %{name}-lvm-dbus
Obsoletes: %{name}-lvm-dbus
Obsoletes: %{name}-lvm-dbus < %{version}
Provides: %{name}-mdraid%{?_isa} %{name}-mdraid
Obsoletes: %{name}-mdraid
Obsoletes: %{name}-mdraid < %{version}
Provides: %{name}-mpath%{?_isa} %{name}-mpath
Obsoletes: %{name}-mpath
Obsoletes: %{name}-mpath < %{version}
Provides: %{name}-nvdimm%{?_isa} %{name}-nvdimm
Obsoletes: %{name}-nvdimm
Obsoletes: %{name}-nvdimm < %{version}
Provides: %{name}-part%{?_isa} %{name}-part
Obsoletes: %{name}-part
Obsoletes: %{name}-part < %{version}
Provides: %{name}-swap%{?_isa} %{name}-swap
Obsoletes: %{name}-swap
Obsoletes: %{name}-swap < %{version}
Provides: %{name}-plugins-all%{?_isa} %{name}-plugins-all
Obsoletes: %{name}-plugins-all
Obsoletes: %{name}-plugins-all < %{version}
%description
libblockdev is a C library supporting GObject introspection for manipulation of block devices.
@ -61,35 +78,35 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: glib2-devel device-mapper-devel xfsprogs dosfstools systemd-devel
Provides: %{name}-btrfs-devel%{?_isa} %{name}-btrfs-devel
Obsoletes: %{name}-btrfs-devel
Obsoletes: %{name}-btrfs-devel < %{version}
Provides: %{name}-crypto-devel%{?_isa} %{name}-crypto-devel
Obsoletes: %{name}-crypto-devel
Obsoletes: %{name}-crypto-devel < %{version}
Provides: %{name}-dm-devel%{?_isa} %{name}-dm-devel
Obsoletes: %{name}-dm-devel
Obsoletes: %{name}-dm-devel < %{version}
Provides: %{name}-fs-devel%{?_isa} %{name}-fs-devel
Obsoletes: %{name}-fs-devel
Obsoletes: %{name}-fs-devel < %{version}
Provides: %{name}-kbd-devel%{?_isa} %{name}-kbd-devel
Obsoletes: %{name}-kbd-devel
Obsoletes: %{name}-kbd-devel < %{version}
Provides: %{name}-loop-devel%{?_isa} %{name}-loop-devel
Obsoletes: %{name}-loop-devel
Obsoletes: %{name}-loop-devel < %{version}
Provides: %{name}-lvm-devel%{?_isa} %{name}-lvm-devel
Obsoletes: %{name}-lvm-devel
Obsoletes: %{name}-lvm-devel < %{version}
Provides: %{name}-lvm-dbus-devel%{?_isa} %{name}-lvm-dbus-devel
Obsoletes: %{name}-lvm-dbus-devel
Obsoletes: %{name}-lvm-dbus-devel < %{version}
Provides: %{name}-mdraid-devel%{?_isa} %{name}-mdraid-devel
Obsoletes: %{name}-mdraid-devel
Obsoletes: %{name}-mdraid-devel < %{version}
Provides: %{name}-mpath-devel%{?_isa} %{name}-mpath-devel
Obsoletes: %{name}-mpath-devel
Obsoletes: %{name}-mpath-devel < %{version}
Provides: %{name}-nvdimm-devel%{?_isa} %{name}-nvdimm-devel
Obsoletes: %{name}-nvdimm-devel
Obsoletes: %{name}-nvdimm-devel < %{version}
Provides: %{name}-part-devel%{?_isa} %{name}-part-devel
Obsoletes: %{name}-part-devel
Obsoletes: %{name}-part-devel < %{version}
Provides: %{name}-swap-devel%{?_isa} %{name}-swap-devel
Obsoletes: %{name}-swap-devel
Obsoletes: %{name}-swap-devel < %{version}
Provides: %{name}-vdo-devel%{?_isa} %{name}-vdo-devel
Obsoletes: %{name}-vdo-devel
Obsoletes: %{name}-vdo-devel < %{version}
Provides: %{name}-utils-devel%{?_isa} %{name}-utils-devel
Obsoletes: %{name}-utils-devel
Obsoletes: %{name}-utils-devel < %{version}
%description devel
Libraries and header files for a set for utils(libblockdev,libblockdev-btrfs,libblockdev-crypto,
@ -126,7 +143,7 @@ Requires: python3-gobject-base
Python3 bindings for libblockdev
%prep
%autosetup -n %{name}-%{version} -p1 -Sgit
%autosetup -n %{name}-%{version} -p1
%build
autoreconf -ivf
@ -170,6 +187,21 @@ find %{buildroot} -type f -name "*.la" | xargs %{__rm}
%changelog
* Tue Sep 28 2021 Wenchao Hao <haowenchao@huawei.com> - 2.24-8
- NOP:nothing but to make it able to sync between differnt branches
* Fri Jul 30 2021 chenyanpanHW <chenyanpan@huawei.com> - 2.24-7
- DESC: delete -Sgit from %autosetup, and delete BuildRequires git
* Mon Jul 26 2020 yanglongkang <yannglongkang@huawei.com> - 2.24-6
- fix build fail caused by deprecated-declarations
* Sat Oct 31 2020 Zhiqiang Liu <liuzhiqiang26@huawei.com> - 2.24-5
- backport upstream patches-epoch2 to fix serveral problems
* Tue Jul 28 2020 Ruijun Ge <geruijun@huawei.com> - 2.24-3
- backport upstream patches
* Wed Jan 6 2021 Lixiaokeng <lixiaokeng@huawei.com> - 2.24-2
- remove require of dmraid