NFS client and swap under Linux 2.2.13.

H.J. Lu (hjl@valinux.com)
Sun, 24 Oct 1999 14:49:30 -0700 (PDT)


I have a problem with NFS client and swap under Linux 2.2.13
on Linux/alpha. When I do a build on an NFS fs, I got

Oct 24 12:38:47 alpha kernel: Unable to handle kernel paging request at virtual address 0000000000400760
Oct 24 12:38:47 alpha kernel: kswapd(5): Oops 0
Oct 24 12:38:47 alpha kernel: pc = [try_to_free_buffers+52/288] ra = [shrink_mmap+352/512] ps = 0000
Oct 24 12:38:47 alpha kernel: r0 = 0000000000000001 r1 = 0000000000000000 r2 = 0000000000400720
Oct 24 12:38:47 alpha kernel: r3 = fffffc000056f5c8 r4 = fffffc000051dd14 r5 = 0000000000002000
Oct 24 12:38:47 alpha kernel: r6 = fffffc000056f498 r7 = 000000000000187b r8 = fffffc0000018000
Oct 24 12:38:47 alpha kernel: r9 = fffffc0000631880 r10= 0000000000400720 r11= 0000000000400720
Oct 24 12:38:47 alpha kernel: r12= fffffc000056f4e0 r13= fffffc0000631880 r14= fffffc000056f4b0
Oct 24 12:38:47 alpha kernel: r15= 0000000000000000
Oct 24 12:38:47 alpha kernel: r16= fffffc0000631880 r17= 0000000000000030 r18= fffffc000065adc0
Oct 24 12:38:47 alpha kernel: r19= fffffc000056f4b0 r20= fffffc00005767c0 r21= ffffffffffffffff
Oct 24 12:38:47 alpha kernel: r22= 0000000000000004 r23= 0000000000000001 r24= 0000000000000001
Oct 24 12:38:47 alpha kernel: r25= 000006f800000000 r27= fffffc000034cb80 r28= 0000000000000c3d
Oct 24 12:38:47 alpha kernel: gp = fffffc0000566af0 sp = fffffc000001bd60
Oct 24 12:38:47 alpha kernel: Code: a56d0048 456b040a 454a0402 <a0220040> a54a0028 f4200003 a4220030 4428d001 e4200007
Oct 24 12:38:47 alpha kernel: Trace: [shrink_mmap+352/512] [do_try_to_free_pages+120/320] [kswapd+248/416] [__kernel_thread+80/104] [kswapd+0/416]

The source code looks like:

int try_to_free_buffers(struct page * page_map)
{
struct buffer_head * tmp, * bh = page_map->buffers;

tmp = bh;
do {
struct buffer_head * p = tmp;

tmp = tmp->b_this_page;
if (!buffer_busy(p))
continue;

wakeup_bdflush(0);
return 0;
} while (tmp != bh);

and the assembly code looks like:

0xfffffc000034cb80 <try_to_free_buffers>: ldah gp,34(t12)
0xfffffc000034cb84 <try_to_free_buffers+4>: lda gp,-24720(gp)
0xfffffc000034cb88 <try_to_free_buffers+8>: subq sp,0x30,sp
0xfffffc000034cb8c <try_to_free_buffers+12>: stq s4,40(sp)
0xfffffc000034cb90 <try_to_free_buffers+16>: stq s1,16(sp)
0xfffffc000034cb94 <try_to_free_buffers+20>: mov a0,s4
0xfffffc000034cb98 <try_to_free_buffers+24>: stq ra,0(sp)
0xfffffc000034cb9c <try_to_free_buffers+28>: stq s0,8(sp)
0xfffffc000034cba0 <try_to_free_buffers+32>: stq s2,24(sp)
0xfffffc000034cba4 <try_to_free_buffers+36>: stq s3,32(sp)
0xfffffc000034cba8 <try_to_free_buffers+40>: ldq s2,72(s4)
0xfffffc000034cbac <try_to_free_buffers+44>: mov s2,s1
0xfffffc000034cbb0 <try_to_free_buffers+48>: mov s1,t1
0xfffffc000034cbb4 <try_to_free_buffers+52>: ldl t0,64(t1)
0xfffffc000034cbb8 <try_to_free_buffers+56>: ldq s1,40(s1)
0xfffffc000034cbbc <try_to_free_buffers+60>:

-- 
H.J. Lu (hjl@gnu.org)

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/