[lsof] - added support for files on anon_inodefs
pschiffe
pschiffe at fedoraproject.org
Mon Jun 4 17:36:28 UTC 2012
commit 62c74990e337cad944ab7b5db06b26bf7f3945a5
Author: Peter Schiffer <pschiffe at redhat.com>
Date: Mon Jun 4 19:36:03 2012 +0200
- added support for files on anon_inodefs
lsof-4.86-anoninodfs.patch | 136 ++++++++++++++++++++++++++++++++++++++++++++
lsof.spec | 9 ++-
2 files changed, 143 insertions(+), 2 deletions(-)
---
diff --git a/lsof-4.86-anoninodfs.patch b/lsof-4.86-anoninodfs.patch
new file mode 100644
index 0000000..528b7a9
--- /dev/null
+++ b/lsof-4.86-anoninodfs.patch
@@ -0,0 +1,136 @@
+diff -X excludes -ruN lsof_4.86_src/dialects/linux/dnode.c _lsof_4.86_src/dialects/linux/dnode.c
+--- lsof_4.86_src/dialects/linux/dnode.c 2012-04-11 01:40:00.000000000 +0900
++++ _lsof_4.86_src/dialects/linux/dnode.c 2012-06-04 13:19:05.290490391 +0900
+@@ -401,6 +401,10 @@
+ /* Lf->ntype = Ntype = N_REGLR; by alloc_lfile() */
+ process_proc_sock(p, s, ss, l, ls);
+ return;
++ case 0:
++ if (!strcmp(p, "anon_inode"))
++ Lf->ntype = Ntype = N_ANON_INODE;
++ break;
+ }
+ }
+ if (Selinet)
+@@ -503,9 +507,13 @@
+ tn = "VTXT";
+ break;
+ default:
+- (void) snpf(Lf->type, sizeof(Lf->type), "%04o",
+- ((type >> 12) & 0xf));
+- tn = (char *)NULL;
++ if (Ntype == N_ANON_INODE) {
++ tn = "a_inode";
++ } else {
++ (void) snpf(Lf->type, sizeof(Lf->type), "%04o",
++ ((type >> 12) & 0xf));
++ tn = (char *)NULL;
++ }
+ }
+ } else
+ tn = "unknown";
+diff -X excludes -ruN lsof_4.86_src/dialects/linux/dproc.c _lsof_4.86_src/dialects/linux/dproc.c
+--- lsof_4.86_src/dialects/linux/dproc.c 2012-04-11 01:40:01.000000000 +0900
++++ _lsof_4.86_src/dialects/linux/dproc.c 2012-06-04 13:29:44.684989913 +0900
+@@ -81,7 +81,7 @@
+ */
+
+ _PROTOTYPE(static int get_fdinfo,(char *p, struct l_fdinfo *fi));
+-_PROTOTYPE(static int getlinksrc,(char *ln, char *src, int srcl));
++_PROTOTYPE(static int getlinksrc,(char *ln, char *src, int srcl, char** rest));
+ _PROTOTYPE(static int isefsys,(char *path, char *type, int l,
+ efsys_list_t **rep, struct lfile **lfr));
+ _PROTOTYPE(static int nm2id,(char *nm, int *id, int *idl));
+@@ -440,14 +440,18 @@
+
+
+ static int
+-getlinksrc(ln, src, srcl)
++getlinksrc(ln, src, srcl, rest)
+ char *ln; /* link path */
+ char *src; /* link source path return address */
+ int srcl; /* length of src[] */
++ char **rest; /* string after `:' of link source path */
+ {
+ char *cp;
+ int ll;
+
++ if (rest)
++ *rest = NULL;
++
+ if ((ll = readlink(ln, src, srcl - 1)) < 1
+ || ll >= srcl)
+ return(-1);
+@@ -457,6 +461,8 @@
+ if ((cp = strchr(src, ':'))) {
+ *cp = '\0';
+ ll = strlen(src);
++ if (rest)
++ *rest = cp + 1;
+ }
+ return(ll);
+ }
+@@ -795,6 +801,7 @@
+ static char *pathi = (char *)NULL;
+ static int pathil = 0;
+ int txts = 0;
++ char* rest;
+
+ #if defined(HASSELINUX)
+ cntxlist_t *cntxp;
+@@ -825,7 +832,7 @@
+ (void) make_proc_path(idp, idpl, &path, &pathl, "cwd");
+ alloc_lfile(CWD, -1);
+ efs = 0;
+- if (getlinksrc(path, pbuf, sizeof(pbuf)) < 1) {
++ if (getlinksrc(path, pbuf, sizeof(pbuf), NULL) < 1) {
+ if (!Fwarn) {
+ (void) memset((void *)&sb, 0, sizeof(sb));
+ lnk = ss = 0;
+@@ -873,7 +880,7 @@
+ if (!Ckscko) {
+ (void) make_proc_path(idp, idpl, &path, &pathl, "root");
+ alloc_lfile(RTD, -1);
+- if (getlinksrc(path, pbuf, sizeof(pbuf)) < 1) {
++ if (getlinksrc(path, pbuf, sizeof(pbuf), NULL) < 1) {
+ if (!Fwarn) {
+ (void) memset((void *)&sb, 0, sizeof(sb));
+ lnk = ss = 0;
+@@ -921,7 +928,7 @@
+ txts = 0;
+ (void) make_proc_path(idp, idpl, &path, &pathl, "exe");
+ alloc_lfile("txt", -1);
+- if (getlinksrc(path, pbuf, sizeof(pbuf)) < 1) {
++ if (getlinksrc(path, pbuf, sizeof(pbuf), NULL) < 1) {
+ (void) memset((void *)&sb, 0, sizeof(sb));
+ lnk = ss = 0;
+ if (!Fwarn) {
+@@ -1044,7 +1051,7 @@
+ continue;
+ (void) make_proc_path(dpath, i, &path, &pathl, fp->d_name);
+ (void) alloc_lfile((char *)NULL, fd);
+- if (getlinksrc(path, pbuf, sizeof(pbuf)) < 1) {
++ if (getlinksrc(path, pbuf, sizeof(pbuf), &rest) < 1) {
+ (void) memset((void *)&sb, 0, sizeof(sb));
+ lnk = ss = 0;
+ if (!Fwarn) {
+@@ -1137,6 +1144,8 @@
+ }
+ if (pn) {
+ process_proc_node(lnk ? pbuf : path, &sb, ss, &lsb, ls);
++ if (Lf->ntype == N_ANON_INODE)
++ enter_nm(rest);
+ if (Lf->sf)
+ link_lfile();
+ }
+diff -X excludes -ruN lsof_4.86_src/lsof.h _lsof_4.86_src/lsof.h
+--- lsof_4.86_src/lsof.h 2011-09-08 04:14:10.000000000 +0900
++++ _lsof_4.86_src/lsof.h 2012-06-04 13:27:40.190724414 +0900
+@@ -349,6 +349,7 @@
+ #define N_VXFS 51 /* Veritas file system node */
+ #define N_XFS 52 /* XFS node */
+ #define N_ZFS 53 /* ZFS node */
++#define N_ANON_INODE 54 /* inode on linux anon_inodefs */
+
+ # if !defined(OFFDECDIG)
+ #define OFFDECDIG 8 /* maximum number of digits in the
diff --git a/lsof.spec b/lsof.spec
index 517b258..871a661 100644
--- a/lsof.spec
+++ b/lsof.spec
@@ -1,7 +1,7 @@
Summary: A utility which lists open files on a Linux/UNIX system
Name: lsof
Version: 4.86
-Release: 1%{?dist}
+Release: 2%{?dist}
License: zlib
Group: Development/Debuggers
@@ -15,6 +15,8 @@ Group: Development/Debuggers
Source0: %{lsofrh}.tar.bz2
URL: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof
+Patch0: lsof-4.86-anoninodfs.patch
+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libselinux-devel
@@ -26,7 +28,7 @@ UNIX system.
%prep
%setup -q -n %{lsofrh}
-#%patch0 -p1
+%patch0 -p1
%build
LSOF_VSTR=2.6.16 LINUX_BASE=/proc ./Configure -n linux
@@ -50,6 +52,9 @@ rm -rf ${RPM_BUILD_ROOT}
%{_mandir}/man*/*
%changelog
+* Mon Jun 04 2012 Peter Schiffer <pschiffe at redhat.com> - 4.86-2
+- added support for files on anon_inodefs
+
* Fri Apr 20 2012 Peter Schiffer <pschiffe at redhat.com> - 4.86-1
- resolves: #811520
update to 4.86
More information about the scm-commits
mailing list