This commit is contained in:
Daniel Novotny 2009-04-23 10:46:06 +00:00
parent ecd4529031
commit afd7e1de87
2 changed files with 137 additions and 1 deletions

View File

@ -0,0 +1,131 @@
diff -ru psmisc-22.6.org/src/fuser.c psmisc-22.6/src/fuser.c
--- psmisc-22.6.org/src/fuser.c 2009-01-23 19:24:11.000000000 +0200
+++ psmisc-22.6/src/fuser.c 2009-01-23 19:28:43.000000000 +0200
@@ -69,7 +69,6 @@
int parse_mount(struct names *this_name, struct device_list **dev_list);
static void add_device(struct device_list **dev_list, struct names *this_name, dev_t device);
-void scan_mount_devices(const opt_type opts, struct mountdev_list **mount_devices);
void fill_unix_cache(struct unixsocket_list **unixsocket_head);
static dev_t find_net_dev(void);
static void scan_procs(struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head);
@@ -365,10 +364,9 @@
return 0;
}
-int parse_mounts(struct names *this_name, struct mountdev_list *mounts, struct device_list **dev_list, const char opts)
+int parse_mounts(struct names *this_name, struct device_list **dev_list, const char opts)
{
struct stat st;
- struct mountdev_list *mountptr;
dev_t match_device;
if (stat(this_name->filename, &st) != 0) {
@@ -380,13 +378,7 @@
match_device = st.st_rdev;
else
match_device = st.st_dev;
- for (mountptr = mounts ; mountptr != NULL ; mountptr = mountptr->next) {
- if (mountptr->device == match_device) {
- /*printf("Debug: adding parse_mounts() adding %s\n",
- this_name->filename);*/
- add_device(dev_list, this_name, match_device);
- }
- }
+ add_device(dev_list, this_name, match_device);
return 0;
}
@@ -660,7 +652,6 @@
int ipv4_only, ipv6_only;
#endif
unsigned char default_namespace = NAMESPACE_FILE;
- struct mountdev_list *mount_devices = NULL;
struct device_list *match_devices = NULL;
struct unixsocket_list *unixsockets = NULL;
@@ -692,7 +683,6 @@
#endif
netdev = find_net_dev();
- scan_mount_devices(opts, &mount_devices);
fill_unix_cache(&unixsockets);
/* getopt doesnt like things like -SIGBLAH */
@@ -831,7 +821,7 @@
parse_file(this_name, &match_inodes);
parse_unixsockets(this_name, &match_inodes, unixsockets);
if (opts & OPT_MOUNTPOINT || opts & OPT_MOUNTS)
- parse_mounts(this_name, mount_devices, &match_devices, opts);
+ parse_mounts(this_name, &match_devices, opts);
break;
}
@@ -1082,20 +1072,6 @@
return st.st_uid;
}
-void add_mount_device(struct mountdev_list **mount_head,const char *fsname, const char *dir, dev_t device)
-{
- struct mountdev_list *newmount;
- /*printf("Adding mount Path: %s Dir:%s dev:%0x\n",dir, fsname, device);*/
-
- if ( (newmount = malloc(sizeof(struct mountdev_list))) == NULL)
- return;
- newmount->fsname = strdup(fsname);
- newmount->dir = strdup(dir);
- newmount->device = device;
- newmount->next = *mount_head;
- *mount_head = newmount;
-}
-
/*
* fill_unix_cache : Create a list of Unix sockets
* This list is used later for matching purposes
@@ -1135,28 +1111,6 @@
}
-/*
- * scan_mount_devices : Create a list of mount points and devices
- * This list is used later for matching purposes
- */
-void scan_mount_devices(const opt_type opts, struct mountdev_list **mount_devices)
-{
- FILE *mntfp;
- struct mntent *mnt_ptr;
- struct stat st;
-
- if ( (mntfp = setmntent("/etc/mtab","r")) == NULL) {
- fprintf(stderr, _("Cannot open /etc/mtab: %s\n"),
- strerror(errno));
- return;
- }
- while ( (mnt_ptr = getmntent(mntfp)) != NULL) {
- if (stat(mnt_ptr->mnt_dir, &st) == 0) {
- add_mount_device(mount_devices, mnt_ptr->mnt_fsname, mnt_ptr->mnt_dir, st.st_dev);
- }
- }
-}
-
#ifdef DEBUG
/* often not used, doesnt need translation */
static void debug_match_lists(struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head)
diff -ru psmisc-22.6.org/src/fuser.h psmisc-22.6/src/fuser.h
--- psmisc-22.6.org/src/fuser.h 2009-01-23 19:24:11.000000000 +0200
+++ psmisc-22.6/src/fuser.h 2009-01-23 19:29:48.000000000 +0200
@@ -58,14 +58,6 @@
struct inode_list *next;
};
-struct mountdev_list {
- char *fsname;
- char *dir;
- dev_t device;
- struct mountdev_list *next;
-};
-
-
struct device_list {
struct names *name;
dev_t device;

View File

@ -1,7 +1,7 @@
Summary: Utilities for managing processes on your system Summary: Utilities for managing processes on your system
Name: psmisc Name: psmisc
Version: 22.6 Version: 22.6
Release: 9%{?dist} Release: 10%{?dist}
License: GPLv2+ License: GPLv2+
Group: Applications/System Group: Applications/System
Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
@ -10,6 +10,7 @@ Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Patch0: psmisc-22.6-types.patch Patch0: psmisc-22.6-types.patch
Patch1: psmisc-22.6-pstree-overflow.patch Patch1: psmisc-22.6-pstree-overflow.patch
Patch2: psmisc-22.6-fuser-remove-mountlist.patch
BuildRequires: libselinux-devel BuildRequires: libselinux-devel
BuildRequires: gettext BuildRequires: gettext
@ -28,6 +29,7 @@ of processes that are using specified files or filesystems.
%setup -q %setup -q
%patch0 -p1 -b .types %patch0 -p1 -b .types
%patch1 -p1 -b .overflow %patch1 -p1 -b .overflow
%patch2 -p1 -b .mount
%build %build
export CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE" export CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE"
@ -68,6 +70,9 @@ rm -rf $RPM_BUILD_ROOT
%endif %endif
%changelog %changelog
* Thu Apr 23 2009 Daniel Novotny <dnovotny@redhat.com> - 22.6-10
- fix #497303 - fuser -m <dev> doesn't work after lazy unmount
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 22.6-9 * Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 22.6-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild