Avoid dead locks at login after reboot
OBS-URL: https://build.opensuse.org/package/show/shells/tcsh?expand=0&rev=97
This commit is contained in:
parent
ed3166724e
commit
3777c45560
82
tcsh-6.22.02-local-dotlock.dif
Normal file
82
tcsh-6.22.02-local-dotlock.dif
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
Avoid left over dot lock file after reboot
|
||||||
|
|
||||||
|
---
|
||||||
|
dotlock.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 50 insertions(+)
|
||||||
|
|
||||||
|
--- dotlock.c
|
||||||
|
+++ dotlock.c 2020-02-17 11:16:22.785018224 +0000
|
||||||
|
@@ -30,8 +30,38 @@
|
||||||
|
#define O_SYNC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if defined(__linux__)
|
||||||
|
+# include <sys/statfs.h>
|
||||||
|
+# include <unistd.h>
|
||||||
|
+# ifndef TMPFS_MAGIC
|
||||||
|
+# define TMPFS_MAGIC 0x01021994
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include "dotlock.h"
|
||||||
|
|
||||||
|
+#if defined(__linux__)
|
||||||
|
+static char *sys_tmpdir;
|
||||||
|
+static int
|
||||||
|
+dosys_tmpdir ()
|
||||||
|
+{
|
||||||
|
+ static char *shm = "/dev/shm";
|
||||||
|
+ struct statfs fs;
|
||||||
|
+ static int doshm;
|
||||||
|
+
|
||||||
|
+ if (doshm)
|
||||||
|
+ return (sys_tmpdir != NULL);
|
||||||
|
+
|
||||||
|
+ doshm++;
|
||||||
|
+
|
||||||
|
+ if (statfs(shm, &fs) < 0 || fs.f_type != TMPFS_MAGIC || eaccess(shm, W_OK|X_OK))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ sys_tmpdir = shm;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static int create_exclusive(const char *);
|
||||||
|
/*
|
||||||
|
* Create a unique file. O_EXCL does not really work over NFS so we follow
|
||||||
|
@@ -140,7 +170,17 @@ dot_lock(const char *fname, int pollinte
|
||||||
|
(void)sigaddset(&nset, SIGTSTP);
|
||||||
|
(void)sigaddset(&nset, SIGCHLD);
|
||||||
|
|
||||||
|
+#if defined(__linux__)
|
||||||
|
+ const char *ptr;
|
||||||
|
+ if ((ptr = strrchr(fname, '/')) && dosys_tmpdir()) {
|
||||||
|
+ ptr++;
|
||||||
|
+ fname = ptr;
|
||||||
|
+ (void)snprintf(path, sizeof(path), "%s/%s.lock", sys_tmpdir, fname);
|
||||||
|
+ } else
|
||||||
|
+ (void)snprintf(path, sizeof(path), "%s.lock", fname);
|
||||||
|
+#else
|
||||||
|
(void)snprintf(path, sizeof(path), "%s.lock", fname);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
retval = -1;
|
||||||
|
for (;;) {
|
||||||
|
@@ -174,6 +214,16 @@ dot_unlock(const char *fname)
|
||||||
|
{
|
||||||
|
char path[MAXPATHLEN];
|
||||||
|
|
||||||
|
+#if defined(__linux__)
|
||||||
|
+ const char *ptr;
|
||||||
|
+ if ((ptr = strrchr(fname, '/')) && dosys_tmpdir()) {
|
||||||
|
+ ptr++;
|
||||||
|
+ fname = ptr;
|
||||||
|
+ (void)snprintf(path, sizeof(path), "%s/%s.lock", sys_tmpdir, fname);
|
||||||
|
+ } else
|
||||||
|
+ (void)snprintf(path, sizeof(path), "%s.lock", fname);
|
||||||
|
+#else
|
||||||
|
(void)snprintf(path, sizeof(path), "%s.lock", fname);
|
||||||
|
+#endif
|
||||||
|
(void)unlink(path);
|
||||||
|
}
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 17 11:19:42 UTC 2020 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
- Add temporary patch tcsh-6.22.02-local-dotlock.dif to avoid
|
||||||
|
dead locks at login after a reboot to left dof locking files
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jan 8 12:06:46 UTC 2020 - Dr. Werner Fink <werner@suse.de>
|
Wed Jan 8 12:06:46 UTC 2020 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ Patch4: tcsh-6.18.03-colorls.dif
|
|||||||
Patch5: tcsh-6.17.06-dspmbyte.dif
|
Patch5: tcsh-6.17.06-dspmbyte.dif
|
||||||
Patch6: tcsh-6.18.03-catalogs.dif
|
Patch6: tcsh-6.18.03-catalogs.dif
|
||||||
Patch7: tcsh-6.22.02-workaround-common.patch
|
Patch7: tcsh-6.22.02-workaround-common.patch
|
||||||
|
Patch8: tcsh-6.22.02-local-dotlock.dif
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: ncurses-devel
|
BuildRequires: ncurses-devel
|
||||||
@ -59,6 +60,7 @@ correction, a history mechanism, job control, and a C-like syntax.
|
|||||||
%patch5 -b .dspmbyte
|
%patch5 -b .dspmbyte
|
||||||
%patch6 -b .catalogs
|
%patch6 -b .catalogs
|
||||||
%patch7 -p 1 -b .workaround
|
%patch7 -p 1 -b .workaround
|
||||||
|
%patch8 -p 0 -b .dotlock
|
||||||
%patch0 -b .0
|
%patch0 -b .0
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
Loading…
Reference in New Issue
Block a user