* [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online
@ 2022-09-08 14:03 miaoguanqin
2022-09-09 14:27 ` David Teigland
0 siblings, 1 reply; 4+ messages in thread
From: miaoguanqin @ 2022-09-08 14:03 UTC (permalink / raw)
To: lvm-devel
We found PVID file leakage problem when exec the following test;
pvcreate /dev/sdb
vgcreate -s 1M docker /dev/sdb
lvcreate -L 10M docker
pvscan --cache --listvg --checkcomplete --vgonline --udevoutput
--journal=output /dev/sdb
vgremove -ff docker
pvcreate operation generates a new PVID, which is used to create PVID
pvid file
when exec pvcan. However vgremove does not delete the old PVID file.
Here, we will delete all PVID files of each pv in current vg, when exec
vgremove.
Signed-off-by: miaoguanqin<miaopguanqin@huawei.com
---
lib/metadata/metadata.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 1cda1888f..75233d120 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -38,6 +38,30 @@
#include <time.h>
#include <math.h>
+
+static const char *_pvs_online_dir = DEFAULT_RUN_DIR "/pvs_online";
+
+static int remove_pvid_file(struct physical_volume *pv)
+{
+ char pvid[ID_LEN + 1] __attribute__((aligned(8))) = { 0 };
+ char path[PATH_MAX] __attribute__((aligned(8))) = { 0 };
+
+ memcpy(pvid, &pv->id.uuid, ID_LEN);
+
+ if (dm_snprintf(path, sizeof(path), "%s/%s", _pvs_online_dir, pvid) < 0) {
+ log_warn("WARNING:pvid file path is %s", path);
+ return 0;
+ }
+
+ log_warn("unlink pvid file, path is %s", path);
+
+ if (unlink(path) && (errno != ENOENT)) {
+ log_warn("WARNING:unlink pvid file path error, path is %s", path);
+ return 0;
+ }
+ return 1;
+}
+
static struct physical_volume *_pv_read(struct cmd_context *cmd,
const struct format_type *fmt,
struct volume_group *vg,
@@ -665,6 +689,15 @@ int vg_remove_direct(struct volume_group *vg)
" from volume group \"%s\"",
pv_dev_name(pv), vg->name);
ret = 0;
+ continue;
+ }
+
+ /* Remove pvid files */
+ if(!remove_pvid_file(pv)){
+ log_error("Failed to remove pvid files \"%s\""
+ " from volume group \"%s\"",
+ _pvs_online_dir, vg->name);
+ ret = 0;
}
}
--
2.33.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online
2022-09-08 14:03 [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online miaoguanqin
@ 2022-09-09 14:27 ` David Teigland
2022-09-10 1:56 ` liuzhiqiang
0 siblings, 1 reply; 4+ messages in thread
From: David Teigland @ 2022-09-09 14:27 UTC (permalink / raw)
To: lvm-devel
On Thu, Sep 08, 2022 at 10:03:40PM +0800, miaoguanqin wrote:
> We found PVID file leakage problem when exec the following test;
> pvcreate /dev/sdb
> vgcreate -s 1M docker /dev/sdb
> lvcreate -L 10M docker
> pvscan --cache --listvg --checkcomplete --vgonline --udevoutput
> --journal=output /dev/sdb
> vgremove -ff docker
>
> pvcreate operation generates a new PVID, which is used to create PVID pvid
> file
> when exec pvcan. However vgremove does not delete the old PVID file.
>
> Here, we will delete all PVID files of each pv in current vg, when exec
> vgremove.
Hi, these files are located in tmpfs, so they will disappear automatically
when the system reboots. Is there a reason that you want remove them in
vgremove instead of waiting for reboot to remove them?
Dave
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online
2022-09-09 14:27 ` David Teigland
@ 2022-09-10 1:56 ` liuzhiqiang
2022-09-14 19:27 ` David Teigland
0 siblings, 1 reply; 4+ messages in thread
From: liuzhiqiang @ 2022-09-10 1:56 UTC (permalink / raw)
To: lvm-devel
Thanks for your reply.
/run dir is mounted as tmpfs type, which has a setting inode number by systemd service. If the number of leakage pvid files increases with time, it may cause Deny of Service for other apps because cannot create files in /run.
????David Teigland <teigland@redhat.com>
????LVM2 development <lvm-devel@redhat.com>
????zkabelac <zkabelac@redhat.com>;linfeilong <linfeilong@huawei.com>;wuguanghao <wuguanghao3@huawei.com>;liuzhiqiang (I) <liuzhiqiang26@huawei.com>
????2022-09-09 22:27:45
????Re: [lvm-devel] [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online
On Thu, Sep 08, 2022 at 10:03:40PM +0800, miaoguanqin wrote:
> We found PVID file leakage problem when exec the following test;
> pvcreate /dev/sdb
> vgcreate -s 1M docker /dev/sdb
> lvcreate -L 10M docker
> pvscan --cache --listvg --checkcomplete --vgonline --udevoutput
> --journal=output /dev/sdb
> vgremove -ff docker
>
> pvcreate operation generates a new PVID, which is used to create PVID pvid
> file
> when exec pvcan. However vgremove does not delete the old PVID file.
>
> Here, we will delete all PVID files of each pv in current vg, when exec
> vgremove.
Hi, these files are located in tmpfs, so they will disappear automatically
when the system reboots. Is there a reason that you want remove them in
vgremove instead of waiting for reboot to remove them?
Dave
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20220910/67b53b3a/attachment.htm>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online
2022-09-10 1:56 ` liuzhiqiang
@ 2022-09-14 19:27 ` David Teigland
0 siblings, 0 replies; 4+ messages in thread
From: David Teigland @ 2022-09-14 19:27 UTC (permalink / raw)
To: lvm-devel
Hi, a patch for this is here:
https://sourceware.org/git/?p=lvm2.git;a=commit;h=0887896847807e159a70edc5ac92a4030c13923a
Dave
On Sat, Sep 10, 2022 at 01:56:59AM +0000, liuzhiqiang (I) wrote:
> Thanks for your reply.
> /run dir is mounted as tmpfs type, which has a setting inode number by systemd service. If the number of leakage pvid files increases with time, it may cause Deny of Service for other apps because cannot create files in /run.
>
> ????David Teigland <teigland@redhat.com>
> ????LVM2 development <lvm-devel@redhat.com>
> ????zkabelac <zkabelac@redhat.com>;linfeilong <linfeilong@huawei.com>;wuguanghao <wuguanghao3@huawei.com>;liuzhiqiang (I) <liuzhiqiang26@huawei.com>
> ????2022-09-09 22:27:45
> ????Re: [lvm-devel] [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online
>
> On Thu, Sep 08, 2022 at 10:03:40PM +0800, miaoguanqin wrote:
> > We found PVID file leakage problem when exec the following test;
> > pvcreate /dev/sdb
> > vgcreate -s 1M docker /dev/sdb
> > lvcreate -L 10M docker
> > pvscan --cache --listvg --checkcomplete --vgonline --udevoutput
> > --journal=output /dev/sdb
> > vgremove -ff docker
> >
> > pvcreate operation generates a new PVID, which is used to create PVID pvid
> > file
> > when exec pvcan. However vgremove does not delete the old PVID file.
> >
> > Here, we will delete all PVID files of each pv in current vg, when exec
> > vgremove.
>
> Hi, these files are located in tmpfs, so they will disappear automatically
> when the system reboots. Is there a reason that you want remove them in
> vgremove instead of waiting for reboot to remove them?
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-09-14 19:27 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-08 14:03 [PATCH] vgremove: PVID file leakage in /run/lvm/pvs_online miaoguanqin
2022-09-09 14:27 ` David Teigland
2022-09-10 1:56 ` liuzhiqiang
2022-09-14 19:27 ` David Teigland
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.