Hello community, here is the log from the commit of package psmisc for openSUSE:Factory checked in at 2018-11-19 23:28:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/psmisc (Old) and /work/SRC/openSUSE:Factory/.psmisc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "psmisc" Mon Nov 19 23:28:36 2018 rev:71 rq:649178 version:23.2 Changes: -------- --- /work/SRC/openSUSE:Factory/psmisc/psmisc.changes 2018-11-06 14:02:26.163605553 +0100 +++ /work/SRC/openSUSE:Factory/.psmisc.new/psmisc.changes 2018-11-19 23:28:41.299419038 +0100 @@ -1,0 +2,6 @@ +Wed Nov 14 07:44:55 UTC 2018 - Dr. Werner Fink <[email protected]> + +- Modify patch 0001-Use-mountinfo-to-be-able-to-use-the-mount-identity.patch + to handle sub volumes of the btrFS (bsc#1112780) + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ 0001-Use-mountinfo-to-be-able-to-use-the-mount-identity.patch ++++++ ++++ 695 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/psmisc/0001-Use-mountinfo-to-be-able-to-use-the-mount-identity.patch ++++ and /work/SRC/openSUSE:Factory/.psmisc.new/0001-Use-mountinfo-to-be-able-to-use-the-mount-identity.patch ++++++ 0002-Use-new-statx-2-system-call-to-avoid-hangs-on-NFS.patch ++++++ --- /var/tmp/diff_new_pack.kRCM5X/_old 2018-11-19 23:28:41.743418527 +0100 +++ /var/tmp/diff_new_pack.kRCM5X/_new 2018-11-19 23:28:41.743418527 +0100 @@ -1,6 +1,6 @@ -From 7181b4125fc2a1057dffffaa643e6bcb549fd0eb Mon Sep 17 00:00:00 2001 +From d4b2099ffd77d1fdea380ac42326b11a5be35e72 Mon Sep 17 00:00:00 2001 From: Werner Fink <[email protected]> -Date: Fri, 2 Nov 2018 14:27:00 +0100 +Date: Thu, 15 Nov 2018 07:41:23 +0100 Subject: [PATCH] Use new statx(2) system call to avoid hangs on NFS Signed-off-by: Werner Fink <[email protected]> @@ -12,7 +12,7 @@ src/statx.h | 66 +++++++++++ src/timeout.c | 372 ---------------------------------------------------------- src/timeout.h | 45 ------- - 7 files changed, 247 insertions(+), 511 deletions(-) + 7 files changed, 248 insertions(+), 510 deletions(-) create mode 100644 src/statx.c create mode 100644 src/statx.h delete mode 100644 src/timeout.c @@ -90,7 +90,7 @@ # Enable hardened compile and link flags AC_ARG_ENABLE([harden_flags], diff --git src/fuser.c src/fuser.c -index 2681f74..c717e19 100644 +index 7ee9b49..3f512de 100644 --- src/fuser.c +++ src/fuser.c @@ -63,7 +63,7 @@ @@ -113,7 +113,7 @@ static char *expandpath(const char *path); static struct unixsocket_list *unixsockets = NULL; static struct names *names_head = NULL, *names_tail = NULL; -@@ -468,7 +464,7 @@ int parse_file(struct names *this_name, struct inode_list **ino_list, +@@ -506,7 +502,7 @@ int parse_file(struct names *this_name, struct inode_list **ino_list, free(this_name->filename); this_name->filename = strdup(new); } @@ -122,7 +122,7 @@ find_mountpoint(this_name->filename, &mountinfo) != 0) { if (errno == ENOENT) fprintf(stderr, -@@ -1193,9 +1189,7 @@ int main(int argc, char *argv[]) +@@ -1250,9 +1246,7 @@ int main(int argc, char *argv[]) opts |= OPT_INTERACTIVE; break; case 'I': @@ -132,21 +132,22 @@ break; case 'k': opts |= OPT_KILL; -@@ -1261,10 +1255,9 @@ int main(int argc, char *argv[]) +@@ -1318,10 +1312,11 @@ int main(int argc, char *argv[]) continue; } -#if defined(WITH_MOUNTINFO_LIST) - if ((opts & (OPT_MOUNTS|OPT_ALWAYSSTAT)) == OPT_MOUNTS) - thestat = mntstat; --#endif ++#if defined(HAVE_DECL_SYS_STATX) && HAVE_DECL_SYS_STATX == 1 + if ((opts & OPT_ALWAYSSTAT)) + stat_flags = 0; /* Triggers sync with e.g. remote NFS server even on autofs */ + #endif + /* an option */ /* Not an option, must be a file specification */ if ((this_name = malloc(sizeof(struct names))) == NULL) -@@ -1584,7 +1577,7 @@ static struct stat *get_pidstat(const pid_t pid, const char *filename, int *id) +@@ -1641,7 +1636,7 @@ static struct stat *get_pidstat(const pid_t pid, const char *filename, int *id) if ((st = (struct stat *)malloc(sizeof(struct stat))) == NULL) return NULL; snprintf(pathname, 256, "/proc/%d/%s", pid, filename); @@ -155,7 +156,7 @@ free(st); return NULL; } -@@ -1631,7 +1624,7 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, +@@ -1688,7 +1683,7 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, snprintf(filepath, sizeof filepath - 1, "/proc/%d/%s/%s", pid, dirname, direntry->d_name); @@ -164,7 +165,7 @@ if (errno != ENOENT && errno != ENOTDIR) { fprintf(stderr, _("Cannot stat file %s: %s\n"), filepath, strerror(errno)); -@@ -1673,7 +1666,7 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, +@@ -1743,7 +1738,7 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, if (thedev != ino_tmp->device) continue; if (!st.st_ino @@ -173,7 +174,7 @@ fprintf(stderr, _("Cannot stat file %s: %s\n"), filepath, strerror(errno)); -@@ -1761,11 +1754,11 @@ static uid_t getpiduid(const pid_t pid) +@@ -1841,11 +1836,11 @@ static uid_t getpiduid(const pid_t pid) if (asprintf(&pathname, "/proc/%d", pid) < 0) return 0; @@ -189,7 +190,7 @@ return st.st_uid; } -@@ -1803,7 +1796,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head) +@@ -1883,7 +1878,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head) path = scanned_path; if (*scanned_path == '@') scanned_path++; @@ -198,7 +199,7 @@ free(path); continue; } -@@ -1938,7 +1931,7 @@ static dev_t find_net_dev(void) +@@ -2018,7 +2013,7 @@ static dev_t find_net_dev(void) fprintf(stderr, _("Cannot open a network socket.\n")); return -1; } @@ -207,7 +208,7 @@ fprintf(stderr, _("Cannot find socket's device number.\n")); close(skt); return -1; -@@ -1971,7 +1964,7 @@ scan_knfsd(struct names *names_head, struct inode_list *ino_head, +@@ -2051,7 +2046,7 @@ scan_knfsd(struct names *names_head, struct inode_list *ino_head, if ((find_space = strpbrk(line, " \t")) == NULL) continue; *find_space = '\0'; @@ -216,7 +217,7 @@ continue; } /* Scan the devices */ -@@ -2006,7 +1999,7 @@ scan_mounts(struct names *names_head, struct inode_list *ino_head, +@@ -2086,7 +2081,7 @@ scan_mounts(struct names *names_head, struct inode_list *ino_head, mntinfo_t *mnt = list_entry(ptr, mntinfo_t); const char *find_mountp = mnt->mpoint; @@ -225,7 +226,7 @@ continue; /* Scan the devices */ -@@ -2053,7 +2046,7 @@ scan_swaps(struct names *names_head, struct inode_list *ino_head, +@@ -2133,7 +2128,7 @@ scan_swaps(struct names *names_head, struct inode_list *ino_head, if (*find_space == '\0') continue; } @@ -234,7 +235,7 @@ continue; } /* Scan the devices */ -@@ -2209,7 +2202,7 @@ out: +@@ -2296,7 +2291,7 @@ out: struct stat lst; snprintf(pathname, 256, "/proc/%d/fd/%s", pid, fd); @@ -243,7 +244,7 @@ if (lst.st_mode & S_IWUSR) info->flags |= O_WRONLY; ret++; -@@ -2352,49 +2345,6 @@ out: +@@ -2439,49 +2434,6 @@ out: return ret; } @@ -448,7 +449,7 @@ +} diff --git src/statx.h src/statx.h new file mode 100644 -index 0000000..548583d +index 0000000..bc9eda7 --- /dev/null +++ src/statx.h @@ -0,0 +1,66 @@ @@ -488,19 +489,19 @@ +extern int lstatn(const char*, unsigned int, struct stat*); +#else +extern inline int -+statn(const char *path, unsigned int mask __atribute__((unused)), struct stat *st) ++statn(const char *path, unsigned int mask __attribute__((unused)), struct stat *st) +{ + return stat(path, st); +} +extern inline int -+fstatn(int fd, unsigned int mask __atribute__((unused)), struct stat *st) ++fstatn(int fd, unsigned int mask __attribute__((unused)), struct stat *st) +{ + return fstat(fd, st); +} +extern inline int -+lstatn(const char *path, unsigned int mask __atribute__((unused)), struct stat *st) ++lstatn(const char *path, unsigned int mask __attribute__((unused)), struct stat *st) +{ -+ lstat(path, st); ++ return lstat(path, st); +} +#define STATX_TYPE 0 +#define STATX_MODE 0
