* [PATCH 1/2] build: changing SUSE release file @ 2025-05-14 15:03 Heming Zhao 2025-05-14 15:04 ` [PATCH 2/2] remove lock file after using it Heming Zhao 0 siblings, 1 reply; 3+ messages in thread From: Heming Zhao @ 2025-05-14 15:03 UTC (permalink / raw) To: drbd-dev; +Cc: zzhou This commit changes /etc/SuSe-release to /etc/os-release. The SuSe-release file disappeared a long time ago. Signed-off-by: Heming Zhao <heming.zhao@suse.com> --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 282fdf1584e3..883fe3e5cdb3 100644 --- a/configure.ac +++ b/configure.ac @@ -402,7 +402,7 @@ else if test -z $DISTRO; then AC_CHECK_FILE(/etc/redhat-release, [DISTRO="redhat"]) AC_CHECK_FILE(/etc/debian_version, [DISTRO="debian"]) - AC_CHECK_FILE(/etc/SuSE-release, [DISTRO="suse"]) + AC_CHECK_FILE(/etc/os-release, [DISTRO="suse"]) fi case "$DISTRO" in redhat) @@ -439,7 +439,7 @@ else # RPM_REQ_HEARTBEAT="Requires: heartbeat" # Unfortunately gcc on SLES9 is broken with -O2. Works with -O1 - if grep -q 'VERSION = 9' /etc/SuSE-release; then + if grep -q 'VERSION = 9' /etc/os-release; then CFLAGS="-g -O1" fi ;; -- 2.43.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] remove lock file after using it 2025-05-14 15:03 [PATCH 1/2] build: changing SUSE release file Heming Zhao @ 2025-05-14 15:04 ` Heming Zhao 2025-05-15 2:19 ` Heming Zhao 0 siblings, 1 reply; 3+ messages in thread From: Heming Zhao @ 2025-05-14 15:04 UTC (permalink / raw) To: drbd-dev; +Cc: zzhou In a SELinux env, if a user runs as root to set up a DRBD device, it will leave a lock file in "/var/run/drbd/lock/". Then HA pacemaker will fail to set up DRBD because of a permission issue. This commit removes the lock file when drbdsetup and drbdmeta close the lock fd. Signed-off-by: Heming Zhao <heming.zhao@suse.com> --- user/shared/drbdmeta.c | 3 +++ user/shared/shared_tool.c | 16 +++++++++++++++- user/shared/shared_tool.h | 2 +- user/v84/drbdsetup.c | 2 +- user/v9/drbdsetup.c | 2 +- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/user/shared/drbdmeta.c b/user/shared/drbdmeta.c index 099592a530da..c84c09abef86 100644 --- a/user/shared/drbdmeta.c +++ b/user/shared/drbdmeta.c @@ -5482,6 +5482,9 @@ int main(int argc, char **argv) if (minor_attached) fprintf(stderr, "# Output might be stale, since minor %d is attached\n", cfg->minor); + if ((cfg->minor != -1) && (cfg->lock_fd != -1)) + dt_unlock_drbd(cfg->lock_fd, cfg->minor); + // dummy bool normalization to not return negative values, the usual "FIXME sane exit codes" still applies */ return !!rv; /* and if we want an explicit free, diff --git a/user/shared/shared_tool.c b/user/shared/shared_tool.c index 20598132a0ac..f9ed4e7258f8 100644 --- a/user/shared/shared_tool.c +++ b/user/shared/shared_tool.c @@ -793,10 +793,24 @@ int dt_lock_drbd(int minor) } /* ignore errors */ -void dt_unlock_drbd(int lock_fd) +void dt_unlock_drbd(int lock_fd, int minor) { + int sz; + char *lfname; + if (lock_fd >= 0) unlock_fd(lock_fd); + + sz = asprintf(&lfname, "%s/drbd-%d-%d", + drbd_lock_dir(), LANANA_DRBD_MAJOR, minor); + if (sz < 0) { + perror(""); + exit(20); + } + if (unlink(lfname) < 0) { + perror("unlink"); + exit(20); + } } void dt_print_gc(const uint32_t* gen_cnt) diff --git a/user/shared/shared_tool.h b/user/shared/shared_tool.h index 3dedf79683f5..44f10b549a77 100644 --- a/user/shared/shared_tool.h +++ b/user/shared/shared_tool.h @@ -108,7 +108,7 @@ extern bool addr_scope_local(const char *input); extern unsigned long long m_strtoll(const char* s,const char def_unit); extern int only_digits(const char *s); extern int dt_lock_drbd(int minor); -extern void dt_unlock_drbd(int lock_fd); +extern void dt_unlock_drbd(int lock_fd, int minor); extern int dt_minor_of_dev(const char *device); extern void dt_print_gc(const uint32_t* gen_cnt); extern void dt_pretty_print_gc(const uint32_t* gen_cnt); diff --git a/user/v84/drbdsetup.c b/user/v84/drbdsetup.c index 9127a4462a0e..530af7b70b95 100644 --- a/user/v84/drbdsetup.c +++ b/user/v84/drbdsetup.c @@ -3715,7 +3715,7 @@ int main(int argc, char **argv) rv = cmd->function(cmd, argc, argv); if ((context & CTX_MINOR) && !cmd->lockless) - dt_unlock_drbd(lock_fd); + dt_unlock_drbd(lock_fd, minor); return rv; } #endif diff --git a/user/v9/drbdsetup.c b/user/v9/drbdsetup.c index 8aa9b7c48a6a..e7fa4d8bad7b 100644 --- a/user/v9/drbdsetup.c +++ b/user/v9/drbdsetup.c @@ -4779,6 +4779,6 @@ int drbdsetup_main(int argc, char **argv) rv = cmd->function(cmd, argc, argv); if ((context & CTX_MINOR) && !cmd->lockless) - dt_unlock_drbd(lock_fd); + dt_unlock_drbd(lock_fd, minor); return rv; } -- 2.43.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 2/2] remove lock file after using it 2025-05-14 15:04 ` [PATCH 2/2] remove lock file after using it Heming Zhao @ 2025-05-15 2:19 ` Heming Zhao 0 siblings, 0 replies; 3+ messages in thread From: Heming Zhao @ 2025-05-15 2:19 UTC (permalink / raw) To: drbd-dev; +Cc: zzhou On 5/14/25 23:04, Heming Zhao wrote: > In a SELinux env, if a user runs as root to set up a DRBD device, > it will leave a lock file in "/var/run/drbd/lock/". Then HA pacemaker > will fail to set up DRBD because of a permission issue. > > This commit removes the lock file when drbdsetup and drbdmeta close > the lock fd. > > Signed-off-by: Heming Zhao <heming.zhao@suse.com> > --- > user/shared/drbdmeta.c | 3 +++ > user/shared/shared_tool.c | 16 +++++++++++++++- > user/shared/shared_tool.h | 2 +- > user/v84/drbdsetup.c | 2 +- > user/v9/drbdsetup.c | 2 +- > 5 files changed, 21 insertions(+), 4 deletions(-) > > diff --git a/user/shared/drbdmeta.c b/user/shared/drbdmeta.c > index 099592a530da..c84c09abef86 100644 > --- a/user/shared/drbdmeta.c > +++ b/user/shared/drbdmeta.c > @@ -5482,6 +5482,9 @@ int main(int argc, char **argv) > if (minor_attached) > fprintf(stderr, "# Output might be stale, since minor %d is attached\n", cfg->minor); > > + if ((cfg->minor != -1) && (cfg->lock_fd != -1)) > + dt_unlock_drbd(cfg->lock_fd, cfg->minor); > + > // dummy bool normalization to not return negative values, the usual "FIXME sane exit codes" still applies */ > return !!rv; > /* and if we want an explicit free, > diff --git a/user/shared/shared_tool.c b/user/shared/shared_tool.c > index 20598132a0ac..f9ed4e7258f8 100644 > --- a/user/shared/shared_tool.c > +++ b/user/shared/shared_tool.c > @@ -793,10 +793,24 @@ int dt_lock_drbd(int minor) > } > > /* ignore errors */ > -void dt_unlock_drbd(int lock_fd) > +void dt_unlock_drbd(int lock_fd, int minor) > { > + int sz; > + char *lfname; > + > if (lock_fd >= 0) > unlock_fd(lock_fd); > + > + sz = asprintf(&lfname, "%s/drbd-%d-%d", > + drbd_lock_dir(), LANANA_DRBD_MAJOR, minor); > + if (sz < 0) { > + perror(""); > + exit(20); > + } > + if (unlink(lfname) < 0) { > + perror("unlink"); > + exit(20); > + } Sorry, I forgot to free the lfname before the function returns. Will send v2 patch. - Heming > } > > void dt_print_gc(const uint32_t* gen_cnt) > diff --git a/user/shared/shared_tool.h b/user/shared/shared_tool.h > index 3dedf79683f5..44f10b549a77 100644 > --- a/user/shared/shared_tool.h > +++ b/user/shared/shared_tool.h > @@ -108,7 +108,7 @@ extern bool addr_scope_local(const char *input); > extern unsigned long long m_strtoll(const char* s,const char def_unit); > extern int only_digits(const char *s); > extern int dt_lock_drbd(int minor); > -extern void dt_unlock_drbd(int lock_fd); > +extern void dt_unlock_drbd(int lock_fd, int minor); > extern int dt_minor_of_dev(const char *device); > extern void dt_print_gc(const uint32_t* gen_cnt); > extern void dt_pretty_print_gc(const uint32_t* gen_cnt); > diff --git a/user/v84/drbdsetup.c b/user/v84/drbdsetup.c > index 9127a4462a0e..530af7b70b95 100644 > --- a/user/v84/drbdsetup.c > +++ b/user/v84/drbdsetup.c > @@ -3715,7 +3715,7 @@ int main(int argc, char **argv) > rv = cmd->function(cmd, argc, argv); > > if ((context & CTX_MINOR) && !cmd->lockless) > - dt_unlock_drbd(lock_fd); > + dt_unlock_drbd(lock_fd, minor); > return rv; > } > #endif > diff --git a/user/v9/drbdsetup.c b/user/v9/drbdsetup.c > index 8aa9b7c48a6a..e7fa4d8bad7b 100644 > --- a/user/v9/drbdsetup.c > +++ b/user/v9/drbdsetup.c > @@ -4779,6 +4779,6 @@ int drbdsetup_main(int argc, char **argv) > rv = cmd->function(cmd, argc, argv); > > if ((context & CTX_MINOR) && !cmd->lockless) > - dt_unlock_drbd(lock_fd); > + dt_unlock_drbd(lock_fd, minor); > return rv; > } ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-05-15 2:19 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-05-14 15:03 [PATCH 1/2] build: changing SUSE release file Heming Zhao 2025-05-14 15:04 ` [PATCH 2/2] remove lock file after using it Heming Zhao 2025-05-15 2:19 ` Heming Zhao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox