From: Rainer Schöpf Date: Tue, 13 Jul 2004 06:49:54 +0000 (+0000) Subject: kdump-linux-26-20040713 X-Git-Tag: openafs-devel-1_3_66~58 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=4bd03a76c55b6f90f82a3625207ed31be375bcf8;p=packages%2Fo%2Fopenafs.git kdump-linux-26-20040713 FIXES 5814 update kdump for linux 2.6 --- diff --git a/src/venus/kdump.c b/src/venus/kdump.c index 71bde8afe..a0411d636 100644 --- a/src/venus/kdump.c +++ b/src/venus/kdump.c @@ -27,6 +27,16 @@ RCSID #undef USE_UCONTEXT #endif +#ifdef AFS_LINUX26_ENV +/* For some reason, this doesn't get defined in linux/types.h + if __KERNEL_STRICT_NAMES is defined. But the definition of + struct inode uses it. +*/ +#ifndef pgoff_t +#define pgoff_t unsigned long +#endif +#endif + #include #ifdef __linux__ @@ -625,7 +635,11 @@ PrintIPAddr(int addr) #include #include +#ifdef AFS_LINUX26_ENV +#define KSYMS "/proc/kallsyms" +#else #define KSYMS "/proc/ksyms" +#endif /* symlist_t contains all the kernel symbols. Forcing a 64 byte array is * a bit wasteful, but simple. @@ -689,6 +703,13 @@ read_ksyms(void) } ksyms[nksyms].s_value = (int)strtoul(line, &p, 16); p++; +#ifdef AFS_LINUX26_ENV + /* Linux 2.6 /proc/kallsyms has a one-char symbol type + between address and name, so step over it and the following + blank. + */ + p += 2; +#endif q = strchr(p, '\t'); if (q) *q = '\0'; @@ -2779,8 +2800,13 @@ print_vnode(kmem, vep, ptr, pnt) vep->i_atime, vep->i_mtime, vep->i_ctime, vep->i_version, vep->i_nrpages); #endif +#ifdef AFS_LINUX26_ENV + printf("\ti_op=0x%x, i_rdev=0x%x, i_sb=0x%x\n", vep->i_op, + vep->i_rdev, vep->i_sb); +#else /* AFS_LINUX26_ENV */ printf("\ti_op=0x%x, i_dev=0x%x, i_rdev=0x%x, i_sb=0x%x\n", vep->i_op, vep->i_dev, vep->i_rdev, vep->i_sb); +#endif /* AFS_LINUX26_ENV */ #ifdef AFS_LINUX24_ENV #ifdef AFS_PARISC_LINUX24_ENV printf("\ti_sem: count=%d, wait=0x%x\n", vep->i_sem.count, @@ -2793,9 +2819,15 @@ print_vnode(kmem, vep, ptr, pnt) printf("\ti_sem: count=%d, waking=%d, wait=0x%x\n", vep->i_sem.count, vep->i_sem.waking, vep->i_sem.wait); #endif +#ifdef AFS_LINUX26_ENV + printf("\ti_hash=0x%x:0x%x, i_list=0x%x:0x%x, i_dentry=0x%x:0x%x\n", + vep->i_hash.pprev, vep->i_hash.next, vep->i_list.prev, + vep->i_list.next, vep->i_dentry.prev, vep->i_dentry.next); +#else /* AFS_LINUX26_ENV */ printf("\ti_hash=0x%x:0x%x, i_list=0x%x:0x%x, i_dentry=0x%x:0x%x\n", vep->i_hash.prev, vep->i_hash.next, vep->i_list.prev, vep->i_list.next, vep->i_dentry.prev, vep->i_dentry.next); +#endif /* AFS_LINUX26_ENV */ #endif /* AFS_LINUX22_ENV */ } @@ -2830,7 +2862,7 @@ print_vcache(kmem, vep, ptr, pnt) #ifdef AFS_64BIT_CLIENT printf ("truncPos=(0x%x, 0x%x),\n\tcallb=x%lx, cbE=%d, opens=%d, XoW=%d, ", - (int)vep->truncPos >> 32, (int)vep->truncPos & 0xffffffff, + (int)(vep->truncPos >> 32), (int)(vep->truncPos & 0xffffffff), vep->callback, vep->cbExpires, vep->opens, vep->execsOrWriters); #else /* AFS_64BIT_CLIENT */ printf("truncPos=%d,\n\tcallb=x%lx, cbE=%d, opens=%d, XoW=%d, ", @@ -2846,11 +2878,11 @@ print_vcache(kmem, vep, ptr, pnt) #ifdef AFS_64BIT_CLIENT printf("\tquick[dc=%x, stamp=%x, f=%x, min=%d, len=(0x%x, 0x%x)]\n", vep->quick.dc, vep->quick.stamp, vep->quick.f, - vep->quick.minLoc, (int)vep->quick.len >> 32, - (int)vep->quick.len & 0xffffffff); + vep->quick.minLoc, (int)(vep->quick.len >> 32), + (int)(vep->quick.len & 0xffffffff)); printf ("\tmstat[len=(0x%x, 0x%x), DV=%d.%d, Date=%d, Owner=%d, Group=%d, Mode=0%o, linkc=%d]\n", - (int)vep->m.Length >> 32, (int)vep->m.Length & 0xffffffff, + (int)(vep->m.Length >> 32), (int)(vep->m.Length & 0xffffffff), vep->m.DataVersion.high, vep->m.DataVersion.low, vep->m.Date, vep->m.Owner, vep->m.Group, vep->m.Mode, vep->m.LinkCount); #else /* AFS_64BIT_CLIENT */