Hiroshi Aono wrote:
> Hi,
>
> I tried to run XFS on IA64, but kernel panic occurs.
> I got 11202000XFSdevel.patch.gz and compiled.
> Then I run the kernel on IA64 machine which is provided by Intel. (2cpu,
> 1Gmem, xfs on SCSI disk)
>
> Mkfs works fine.
>
> [root@luna aono]# mkfs -t xfs -b size=16384 -f /dev/sdc1
> meta-data=/dev/sdc1 isize=256 agcount=8, agsize=8033 blks
> data = bsize=16384 blocks=64258, imaxpct=25
> = sunit=0 swidth=0 blks, unwritten=0
> naming =version 2 bsize=16384
> log =internal log bsize=16384 blocks=1000
> realtime =none extsz=65536 blocks=0, rtextents=0
>
> However the kernel crashed at xlog_bread when I mounted the filesystem.
> First, I trapped at xlog_bread and xfsbdstrat.
>
> [root@luna aono]# mount -t xfs /dev/sdc1 /mnt/xfs
>
> Instruction breakpoint #1 at 0xe0000000007db470
> e0000000007db470 <xfsbdstrat>: [MII] alloc r37=ar.pfs,9,6,0
> e0000000007db471 <xfsbdstrat+0x1>: addl r14=1055048,r1
> e0000000007db472 <xfsbdstrat+0x2>: mov r36=b0
> Entering kdb (0x31e88000) on processor 0 [0]kdb> go
>
> Start mounting filesystem: sd(8,33)
> Instruction breakpoint #0 at 0xe0000000007804a0
> e0000000007804a0 <xlog_bread>: [MII] alloc r43=ar.pfs,16,12,0
> e0000000007804a1 <xlog_bread+0x1>: addl r14=1055048,r1
> e0000000007804a2 <xlog_bread+0x2>: mov r42=b0
> Entering kdb (0x31e88000) on processor 0 [0]kdb> go
>
> Instruction breakpoint #1 at 0xe0000000007db470
> e0000000007db470 <xfsbdstrat>: [MII] alloc r37=ar.pfs,9,6,0
> e0000000007db471 <xfsbdstrat+0x1>: addl r14=1055048,r1
> e0000000007db472 <xfsbdstrat+0x2>: mov r36=b0
> Entering kdb (0x31e88000) on processor 0 [0]kdb> go
>
> Instruction breakpoint #0 at 0xe0000000007804a0
> e0000000007804a0 <xlog_bread>: [MII] alloc r43=ar.pfs,16,12,0
> e0000000007804a1 <xlog_bread+0x1>: addl r14=1055048,r1
> e0000000007804a2 <xlog_bread+0x2>: mov r42=b0
> Entering kdb (0x31e88000) on processor 0 [0]kdb> go
>
> Unable to handle kernel paging request at virtual address 00000000000001d0
> mount[300]: Oops 8813272891392
> Entering kdb (0x31e88000) on processor 0 Panic: <NULL>
> due to panic @ 0x7806d0
> psr: 0x0000101008026030 ifs: 0x8000000000000610 ip: 0xe0000000007806d0
> unat: 0x0000000000000000 pfs: 0x0000000000000590 rsc: 0x0000000000000003
> rnat: 0x0000000000000590 bsps: 0x0000000000000003 pr: 0x000000000002e553
> ldrs: 0x0000000000000000 ccv: 0x0000000000000000 fpsr: 0x0009804c8a70033f
> b0: 0xe000000000782c30 b6: 0xe000000000502f70 b7: 0xe000000000521270
> r1: 0xe000000000ce1e40 r2: 0xe000000031e8f970 r3: 0x000000000002e513
> r8: 0x0000000000000000 r9: 0x0000000000000000 r10: 0x0000000000000000
> r11: 0x600000000000c140 r12: 0xe000000031e8f9b0 r13: 0xe000000031e88000
> r14: 0x00000000000001d0 r15: 0xe000000031d13840 r16: 0xe000000031d13810
> r17: 0x0000000008000001 r18: 0xe000000031d13818 r19: 0x0000000000000200
> r20: 0xe000000031e897b8 r21: 0x000000000002e593 r22: 0x000000003fe36dc0
> r23: 0x80000000ffdf5f30 r24: 0x80000000ffdf5ee0 r25: 0x80000000ffdf5f40
> r26: 0x000000003ff48010 r27: 0xe000000000de22d8 r28: 0xe000000000521270
> r29: 0x0000000000000001 r30: 0xe000000000c94080 r31: 0x600000000000c110
> ®s = 0xe000000031e8f820
> [0]kdb> bt
> Ret Address (ip) Mem Stack (sp) Reg Stack (bsp) Name
>
> 0xe0000000007806d0: v+0x2000000000000000 v+0x3be60eb0 xlog_bread
>
> bt command on IA64 seems not to work.
> I disassembled the crashed point.
> It seems the kernel crashed at before calling xfsbdstrat.
>
> 292: PCREL21B assfail
> 296: d0 02 3c 30 20 00 ld8 r45=[r15]
> 29c: 08 00 00 50 br.call.sptk.many b0=290
> <xlog_bread+0x180>;;
> 2a0: 10 00 00 00 01 00 [MIB] nop.m 0x0
> 2a6: 00 00 00 02 00 00 nop.i 0x0
> 2ac: 20 00 00 40 br 2c0 <xlog_bread+0x1b0>
> 2b0: 00 00 00 00 01 00 [MII] nop.m 0x0
> 2b6: 40 22 d9 ac 29 00 dep.z r36=r36,9,23
> 2bc: 00 00 04 00 nop.i 0x0
> 2c0: 01 78 00 50 01 21 [MII] adds r15=128,r40
> 2c6: 70 42 95 00 42 00 adds r39=40,r37
> 2cc: 02 29 01 84 adds r16=16,r37;;
> 2d0: 04 70 00 1e 18 10 [MLX] ld8 r14=[r15]
> 2d6: 08 00 00 00 00 20 movl r17=0x8000001
> 2dc: 12 00 00 60
> 2e0: 02 00 00 00 01 00 [MII] nop.m 0x0
> 2e6: 30 01 90 2c 00 c0 sxt4 r19=r36;;
> 2ec: e1 48 01 80 add r14=r14,r41
> 2f0: 02 78 00 4b 00 21 [MII] adds r15=64,r37
> 2f6: 40 42 a3 00 42 00 adds r36=104,r40;;
> 2fc: 00 00 04 00 nop.i 0x0
> 300: 00 00 38 4e 98 11 [MII] st8 [r39]=r14
> 306: 20 c1 94 00 42 a0 adds r18=24,r37
> 30c: 05 28 01 84 mov r45=r37
> 310: 0b 70 00 20 10 10 [MMI] ld4 r14=[r16];;
> 316: e0 88 38 1c 40 00 or r14=r17,r14
> 31c: 00 00 04 00 nop.i 0x0;;
> 320: 08 00 38 20 90 11 [MMI] st4 [r16]=r14
> 326: 00 98 3c 30 23 00 st8 [r15]=r19
> 32c: 00 00 04 00 nop.i 0x0
> 330: 0b 70 00 48 18 10 [MMI] ld8 r14=[r36];;
> 336: e0 80 3a 06 42 00 adds r14=464,r14
> 33c: 00 00 04 00 nop.i 0x0;;
> 340: 0a 78 00 1c 18 10 [MMI] ld8 r15=[r14];; <- crashed
> 346: 00 78 48 30 23 00 st8 [r18]=r15
> 34c: 00 00 04 00 nop.i 0x0
> 350: 11 60 01 48 18 10 [MIB] ld8 r44=[r36]
> 352: PCREL21B xfsbdstrat
> 356: 00 00 00 02 00 00 nop.i 0x0
> 35c: 08 00 00 50 br.call.sptk.many b0=350
> <xlog_bread+0x240>;;
> 360: 11 60 01 4a 00 21 [MIB] mov r44=r37
>
> /*
> * nbblks should be uint, but oh well. Just want to catch that 32-bit length.
> */
> int
> xlog_bread(xlog_t *log,
> xfs_daddr_t blk_no,
> int nbblks,
> xfs_buf_t *bp)
> {
> int error;
>
> ASSERT(log);
> ASSERT(nbblks > 0);
> ASSERT(BBTOB(nbblks) <= XFS_BUF_SIZE(bp));
> ASSERT(bp);
>
> XFS_BUF_SET_ADDR(bp, log->l_logBBstart + blk_no);
> XFS_BUF_READ(bp);
> XFS_BUF_BUSY(bp);
> XFS_BUF_SET_COUNT(bp, BBTOB(nbblks));
> XFS_BUF_SET_TARGET(bp, &log->l_mp->m_logdev_targ);
>
> xfsbdstrat(log->l_mp, bp);
> if (error = xfs_iowait(bp)) {
> xfs_ioerror_alert("xlog_bread", log->l_mp,
> XFS_BUF_TARGET(bp), XFS_BUF_ADDR(bp));
> return (error);
> }
> return error;
> } /* xlog_bread */
>
> What is wrong? can you help me?
Well these things are always difficult to just "look at" and figure out what is
wrong.
But it looks like a bad pointer someplace.
Do you have XFS compiled with DEBUG turned on?
If not recompile the xfs module and try running again.
If the log structure or xfs_buf_t is NULL the ASSERTs at the
begging of the function should catch the fact.
If that doesn't work start printing out all the fields of the log structure
that are
referenced.
log->l_mp->m_logdev_targ
and
log->l_mp
>
>
> Hiroshi Aono, NEC Solutions
> (h-aono@xxxxxxxxxxxxx)
|