NetBSD Problem Report #45829

From t.hash000@gmail.com  Fri Jan 13 04:40:05 2012
Return-Path: <t.hash000@gmail.com>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id 9A7EE63B84C
	for <gnats-bugs@gnats.NetBSD.org>; Fri, 13 Jan 2012 04:40:05 +0000 (UTC)
Message-Id: <CAGk0BNM=WXn7FJeWi-9qVfCDS1QO6Bf8fYRVV1U0rpZpbGFvFg@mail.gmail.com>
Date: Fri, 13 Jan 2012 13:40:02 +0900
From: Takahiro Hayashi <t.hash000@gmail.com>
To: gnats-bugs@gnats.NetBSD.org
Cc: t.hash000@gmail.com
Subject: writing to vnd on sparse file blocks on pager_map

>Number:         45829
>Category:       kern
>Synopsis:       writing to vnd on sparse file blocks on pager_map
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    hannken
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jan 13 04:45:00 +0000 2012
>Closed-Date:    Mon Apr 09 11:19:23 +0000 2012
>Last-Modified:  Mon Apr 09 11:19:23 +0000 2012
>Originator:     Takahiro Hayashi
>Release:        NetBSD 5.99.59 201201110930Z
>Organization:
>Environment:
System: NetBSD ruin 5.99.59 NetBSD 5.99.59 (MONOLITHIC) #0: Wed Jan 11
16:24:49 UTC 2012
builds@b8.netbsd.org:/home/builds/ab/HEAD/i386/201201110930Z-obj/home/builds/ab/HEAD/src/sys/arch/i386/compile/MONOLITHIC
i386
Architecture: i386
Machine: i386
>Description:
        Writing to vnd created on sparse file may block on wait channel
        pager_map.
        I created 1 giga byte sparse file, configured vnd on it,
        newfs, mount, and did "dd if=/dev/zero bs=32k of=/mnt/foo".
        (see How-To-Repeat)
        The dd command does not return and ps (on other tty) shows
        that dd is blocked in wait channel pager_map.  sync, df and
        ls /mnt/ freeze on wchan tstile.
        The problem happens even if bs=4k but it takes several seconds.
        However, does not happen if bs=512.

        Originally found on Xen amd64 when installing i386 tree into
        domU image.

        Here is the output from crash:

# ps l
UID PID PPID  CPU PRI NI  VSZ  RSS WCHAN    STAT TTY      TIME COMMAND
  0 316  365    0  85  0 2544 2240 pause    S    tty00 0:00.06 -tcsh
  0 365    1    0  85  0 6336 2672 wait     Is   tty00 0:00.07 login
  0 379  316 2048  85  0 3188  992 pager_ma D    tty00 0:00.27 dd if=/dev/zero
  0 401  316 1024  43  0 3196 1104 -        O+   tty00 0:00.00 ps -l
# crash
Crash version 5.99.59, image version 5.99.59.
Output from a running system is unreliable.
crash> ps/l
PID    LID S CPU     FLAGS       STRUCT LWP *               NAME WAIT
402  >   1 7   1         0           cbcc62c0              crash
379      1 3   0         0           cbcc6d40                 dd pager_map
316      1 3   0        80           cbcc6aa0               tcsh pause
365      1 3   1        80           cbbcc000              login wait
335      1 3   0        80           cbd322a0               sshd select
295      1 3   1        80           cbd32000             powerd kqueue
287      1 3   0        80           cbd32540               ntpd pause
153      1 3   1        80           cbd32d20            syslogd kqueue
1        1 3   1        80           cbbccd20               init wait
0       54 3   1       200           cbcc6800               vnd0 pager_map
0       53 3   1       200           cbd32a80            physiod physiod
0       52 3   0       200           cbbcc2a0           aiodoned aiodoned
0       51 3   1       200           cbbcc7e0            ioflush tstile
0       50 3   1       200           cbbcc540           pgdaemon pgdaemon
0       47 3   1       200           cbbc0d40          cryptoret crypto_w
0       45 3   1       200           caafe000               usb4 usbevt
0       44 3   1       200           caafe2a0               usb3 usbevt
0       43 3   1       200           caafe540               usb2 usbevt
0       42 3   1       200           caafe7e0               usb1 usbevt
0       41 3   1       200           cbbcca80         usbtask-dr usbtsk
0       40 3   1       200           cbbc0aa0         usbtask-hc usbtsk
0       39 3   1       200           cbbc0800               usb0 usbevt
0       38 3   1       200           cbbc0020              unpgc unpgc
0       37 3   1       200           cbbc0560        vmem_rehash vmem_rehash
0       36 3   1       200           cbbc02c0          coretemp0 coretemp0
0       27 3   1       200           caafea80               iic0 iicintr
0       26 3   1       200           caafed20            atabus2 atath
0       25 3   0       200           caafa020            atabus1 atath
0       24 3   0       200           caafa2c0            atabus0 atath
0       23 3   0       200           caafa560               apm0 apmev
0       22 3   1       200           caafa800            xcall/1 xcall
0       21 1   1       200           caafaaa0          softser/1
0       20 1   1       200           caafad40          softclk/1
0       19 1   1       200           caaf6000          softbio/1
0       18 1   1       200           caaf62a0          softnet/1
0       17 1   1       201           caaf6540             idle/1
0       16 3   0       200           caaf67e0             sysmon smtaskq
0       15 3   0       200           caaf6a80         pmfsuspend pmfsuspend
0       14 3   0       200           caaf6d20           pmfevent pmfevent
0       13 3   0       200           caaf2020         sopendfree sopendfr
0       12 3   0       200           caaf22c0           nfssilly nfssilly
0       11 3   1       200           caaf2560            cachegc cachegc
0       10 3   0       200           caaf2800              vrele vrele
0        9 3   0       200           caaf2aa0             vdrain vdrain
0        8 3   0       200           caaf2d40          modunload mod_unld
0        7 3   0       200           caaf0000            xcall/0 xcall
0        6 1   0       200           caaf02a0          softser/0
0        5 1   0       200           caaf0540          softclk/0
0        4 1   0       200           caaf07e0          softbio/0
0        3 1   0       200           caaf0a80          softnet/0
0    >   2 7   0       201           caaf0d20             idle/0
0        1 3   1       200           c0c86140            swapper uvm
crash> bt/al cbcc6d40   <-- lwp of dd
trace: pid 379 lid 1 at 0xcbcb771c
sleepq_block(0,0,c0c029dd,c0c86e48,cc1cda70,4,c111ad84,64f1001,18650,caaefd40)
at c054f8cf
mtsleep(c17ebe00,204,c0c029dd,0,c0d09804,ffffffff,0,4040000,cc1c73c0,1)
at c0552713
uvm_pagermapin(cbcb795c,10,1,6776001,10,f,f,cbcb799c,c193f630,0) at c08a6449
genfs_gop_write(cc1cda58,cbcb795c,10,21,cbcb7960,13,18650,cc1cda58,cc1cda58,3)
at c0337a5b
genfs_do_putpages(cc1cda58,3360000,0,3370000,0,21,0,c08ac465,cc1c73c0,6)
at c03375de
genfs_putpages(cbcb7a18,6,4000,0,cb424000,0,4,3370000,336c000,c0b4a2fc)
at c0337a29
VOP_PUTPAGES(cc1cda58,3360000,0,3370000,0,21,caaec000,1,cbba8000,cbfd90b4)
at c08e5015
ffs_write(cbcb7b80,cc1cda58,cbcb7b9c,c08c5be7,cc1cda58,cbcb0030,cbcb7b8c,c05372ba,caaefd00,2a)
at c030eda9
VOP_WRITE(cc1cda58,cbcb7c20,10,caaec000,0,0,0,8000,caaefd00,0) at c08e419e
vn_write(cbbd8600,cbbd8600,cbcb7c20,caaec000,1,cbbcc2a0,0,cbcc6d40,cbcb7c2c,cbcb7cf4)
at c08c6818
dofilewrite(4,cbbd8600,bb903000,8000,cbbd8600,1,cbcb7d1c,cbcc6d40,cbcc6d40,cbcb7d48)
at c07bce8b
sys_write(cbcc6d40,cbcb7cf4,cbcb7d1c,0,c0680a31,cbbcae94,cbcc6d40,cbbcae0c,c0680a31,cbbca83c)
at c07bcfb7
syscall(cbcb7d48,bbbb00b3,ab,bfbf001f,bbbb001f,bb903000,804d400,bfbfec98,bfbfec70,4)
at c07c941d
crash> bt/al cbcc6800   <- lwp of vnd0 thread
trace: pid 0 lid 54 at 0xcbce592c
sleepq_block(0,0,c0c029dd,c0c86e48,cc1cdf40,cbce596c,cbce59ac,c068331e,c111b18c,caaefc00)
at c054f8cf
mtsleep(c17ebe00,204,c0c029dd,0,c0d09804,ffffffff,0,4040000,cc1cdf28,1)
at c0552713
uvm_pagermapin(cbce5b6c,c,1,6778001,10,b,f,cbce5b9c,c18dad48,0) at c08a6449
genfs_gop_write(cc1cdf28,cbce5b6c,c,1b,cbce5b70,13,cbce5a7c,c08c2b5d,0,cc1c991c)
at c0337a5b
genfs_do_putpages(cc1cdf28,0,0,0,0,1b,0,cc1c4f00,1,0) at c0337295
genfs_putpages(cbce5c28,ffffffff,cbce5c1c,cbce5c2c,1,b33c000,0,0,1,c0b4a2fc)
at c0337a29
VOP_PUTPAGES(cc1cdf28,0,0,0,0,1b,1,1,cc1c4f00,cbce5d0c) at c08e5015
vndthread(cbce1300,e63000,e6c000,0,c0100307,0,0,0,0,0) at c08e347b
crash>

>How-To-Repeat:
        1. make a sparse 1 giga byte file
           (using tar, rsync -S, truncate(1) (from FreeBSD), i used truncate
           e.g. truncate -s1g imgfile)
        2. vnconfig -cv vnd0 sparse-file
        3. newfs -O2 /dev/rvnd0a
        4. mount /dev/vnd0a /mnt
        5. dd if=/dev/zero bs=32k of=/mnt/foo &
        6. ps l
>Fix:
        Not known.
        To avoid this problem please vnconfig non-sparse file.

>Release-Note:

>Audit-Trail:
From: "J. Hannken-Illjes" <hannken@eis.cs.tu-bs.de>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/45829: writing to vnd on sparse file blocks on pager_map
Date: Fri, 13 Jan 2012 13:06:13 +0100

 On Jan 13, 2012, at 5:45 AM, Takahiro Hayashi wrote:

 >> Number:         45829
 >> Category:       kern
 >> Synopsis:       writing to vnd on sparse file blocks on pager_map

 As I'm not able to reproduce it here, please add more info:

 - dmesg
 - mount -v
 - which of your file systems holds the sparse image

 --
 Juergen Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig (Germany)

From: Takahiro Hayashi <t.hash000@gmail.com>
To: gnats-bugs@netbsd.org
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: kern/45829: writing to vnd on sparse file blocks on pager_map
Date: Fri, 13 Jan 2012 22:08:53 +0900

 > =A0As I'm not able to reproduce it here, please add more info:
 >
 > =A0- dmesg
 > =A0- mount -v
 > =A0- which of your file systems holds the sparse image

 Thank you for your response.
 I mount / with -o log,noatime,nodevmtime and the sparse image
 is on it.

 Note: I overwrite ethernet address of re0 in /etc/rc.conf.
     Some boards remember the overwritten address, that's why
     enaddr of re0 in dmesg is xen's one.

 # dmesg
 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
     2006, 2007, 2008, 2009, 2010, 2011, 2012
     The NetBSD Foundation, Inc.  All rights reserved.
 Copyright (c) 1982, 1986, 1989, 1991, 1993
     The Regents of the University of California.  All rights reserved.

 NetBSD 5.99.59 (MONOLITHIC) #0: Wed Jan 11 16:24:49 UTC 2012
         builds@b8.netbsd.org:/home/builds/ab/HEAD/i386/201201110930Z-obj/ho=
 me/builds/ab/HEAD/src/sys/arch/i386/compile/MONOLITHIC
 total memory =3D 501 MB
 avail memory =3D 480 MB
 timecounter: Timecounters tick every 10.000 msec
 RTC BIOS diagnostic error 0x80<clock_battery>
 timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
                                                                   (
                     )
 mainbus0 (root)
 cpu0 at mainbus0 apid 0: Intel(R) Atom(TM) CPU  230   @ 1.60GHz, id 0x106c2
 cpu1 at mainbus0 apid 1: Intel(R) Atom(TM) CPU  230   @ 1.60GHz, id 0x106c2
 ioapic0 at mainbus0 apid 2: pa 0xfec00000, version 20, 24 pins
 acpi0 at mainbus0: Intel ACPICA 20110623
 acpi0: X/RSDT: OemId <INTEL ,D945GLF ,00000026>, AslId <    ,01000013>
 acpi0: SCI interrupting at int 9
 timecounter: Timecounter "ACPI-Fast" frequency 3579545 Hz quality 1000
 hpet0 at acpi0: high precision event timer (mem 0xfed00000-0xfed00400)
 timecounter: Timecounter "hpet0" frequency 14318180 Hz quality 2000
 acpibut0 at acpi0 (SLPB, PNP0C0E): ACPI Sleep Button
 IOCM (PNP0C02) at acpi0 not configured
 npx1 at acpi0 (FPU, PNP0C04): io 0xf0 irq 13
 npx1: reported by CPUID; using exception 16
 attimer1 at acpi0 (TMR, PNP0100): io 0x40-0x43,0x50-0x53 irq 0
 pcppi1 at acpi0 (SPKR, PNP0800): io 0x61
 midi0 at pcppi1: PC speaker
 sysbeep0 at pcppi1
 XTRA (PNP0C02) at acpi0 not configured
 XTR2 (PNP0C02) at acpi0 not configured
 FDC0 (PNP0700) at acpi0 not configured
 UAR1 (PNP0501) at acpi0 not configured
 APIC (PNP0003) at acpi0 not configured
 apm0 at acpi0: Power Management spec V1.2
 attimer1: attached to pcppi1
 pci0 at mainbus0 bus 0: configuration mode 1
 pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
 pchb0 at pci0 dev 0 function 0: vendor 0x8086 product 0x2770 (rev. 0x02)
 agp0 at pchb0: detected 7932k stolen memory
 agp0: aperture at 0x20000000, size 0x10000000
 vga1 at pci0 dev 2 function 0: vendor 0x8086 product 0x2772 (rev. 0x02)
 wsdisplay0 at vga1 kbdmux 1
 wsmux1: connecting to wsdisplay0
 i915drm0 at vga1: Intel i945G
 i915drm0: AGP at 0x20000000 256MB
 i915drm0: Initialized i915 1.6.0 20080730
 hdaudio0 at pci0 dev 27 function 0: HD Audio Controller
 hdaudio0: interrupting at ioapic0 pin 22
 hdafg0 at hdaudio0: Realtek ALC662
 hdafg0: DAC00 2ch: Speaker [Jack]
 hdafg0: DAC01 2ch: HP Out [Jack]
 hdafg0: ADC02 2ch: Line In [Jack], Mic In [Jack]
 hdafg0: ADC03 2ch: Mic In [Jack]
 hdafg0: 2ch/2ch 44100Hz 48000Hz 96000Hz PCM16 PCM20 PCM24 AC3
 audio0 at hdafg0: full duplex, playback, capture, independent
 ppb0 at pci0 dev 28 function 0: vendor 0x8086 product 0x27d0 (rev. 0x01)
 ppb0: PCI Express 1.0 <Root Port of PCI-E Root Complex>
 pci1 at ppb0 bus 1
 pci1: i/o space, memory space enabled, rd/line, wr/inv ok
 re0 at pci1 dev 0 function 0: RealTek 8100E/8101E/8102E/8102EL PCIe
 10/100BaseTX (rev. 0x02)
 re0: interrupting at ioapic0 pin 16
 re0: Ethernet address 00:16:3e:00:00:f2
 re0: using 256 tx descriptors
 rlphy0 at re0 phy 7: RTL8201L 10/100 media interface, rev. 1
 rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
 ppb1 at pci0 dev 28 function 2: vendor 0x8086 product 0x27d4 (rev. 0x01)
 ppb1: PCI Express 1.0 <Root Port of PCI-E Root Complex>
 pci2 at ppb1 bus 2
 pci2: i/o space, memory space enabled, rd/line, wr/inv ok
 ppb2 at pci0 dev 28 function 3: vendor 0x8086 product 0x27d6 (rev. 0x01)
 ppb2: PCI Express 1.0 <Root Port of PCI-E Root Complex>
 pci3 at ppb2 bus 3
 pci3: i/o space, memory space enabled, rd/line, wr/inv ok
 uhci0 at pci0 dev 29 function 0: vendor 0x8086 product 0x27c8 (rev. 0x01)
 uhci0: interrupting at ioapic0 pin 23
 usb0 at uhci0: USB revision 1.0
 uhci1 at pci0 dev 29 function 1: vendor 0x8086 product 0x27c9 (rev. 0x01)
 uhci1: interrupting at ioapic0 pin 19
 usb1 at uhci1: USB revision 1.0
 uhci2 at pci0 dev 29 function 2: vendor 0x8086 product 0x27ca (rev. 0x01)
 uhci2: interrupting at ioapic0 pin 18
 usb2 at uhci2: USB revision 1.0
 uhci3 at pci0 dev 29 function 3: vendor 0x8086 product 0x27cb (rev. 0x01)
 uhci3: interrupting at ioapic0 pin 16
 usb3 at uhci3: USB revision 1.0
 ehci0 at pci0 dev 29 function 7: vendor 0x8086 product 0x27cc (rev. 0x01)
 ehci0: interrupting at ioapic0 pin 23
 ehci0: EHCI version 1.0
 ehci0: companion controllers, 2 ports each: uhci0 uhci1 uhci2 uhci3
 usb4 at ehci0: USB revision 2.0
 ppb3 at pci0 dev 30 function 0: vendor 0x8086 product 0x244e (rev. 0xe1)
 pci4 at ppb3 bus 4
 pci4: i/o space, memory space enabled
 ichlpcib0 at pci0 dev 31 function 0: vendor 0x8086 product 0x27b8 (rev. 0x0=
 1)
 timecounter: Timecounter "ichlpcib0" frequency 3579545 Hz quality 1000
 ichlpcib0: 24-bit timer
 ichlpcib0: TCO (watchdog) timer configured.
 gpio0 at ichlpcib0: 64 pins
 piixide0 at pci0 dev 31 function 1: Intel 82801GB/GR IDE Controller
 (ICH7) (rev. 0x01)
 piixide0: bus-master DMA support present
 piixide0: primary channel configured to compatibility mode
 piixide0: primary channel interrupting at ioapic0 pin 14
 atabus0 at piixide0 channel 0
 piixide0: secondary channel configured to compatibility mode
 piixide0: secondary channel ignored (disabled)
 piixide1 at pci0 dev 31 function 2: Intel 82801GB/GR Serial ATA/Raid
 Controller (ICH7) (rev. 0x01)
 piixide1: bus-master DMA support present
 piixide1: primary channel configured to native-PCI mode
 piixide1: using ioapic0 pin 19 for native-PCI interrupt
 atabus1 at piixide1 channel 0
 piixide1: secondary channel configured to native-PCI mode
 atabus2 at piixide1 channel 1
 ichsmb0 at pci0 dev 31 function 3: vendor 0x8086 product 0x27da (rev. 0x01)
 ichsmb0: interrupting at ioapic0 pin 19
 iic0 at ichsmb0: I2C bus
 isa0 at ichlpcib0
 com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
 com0: console
 pckbc0 at isa0 port 0x60-0x64
 fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
 acpicpu0 at cpu0: ACPI CPU
 acpicpu0: C1: HLT, lat   0 us, pow     0 mW
 acpicpu1 at cpu1: ACPI CPU
 timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
 uhub0 at usb0: vendor 0x8086 UHCI root hub, class 9/0, rev 1.00/1.00, addr =
 1
 uhub0: 2 ports with 2 removable, self powered
 uhub1 at usb1: vendor 0x8086 UHCI root hub, class 9/0, rev 1.00/1.00, addr =
 1
 uhub1: 2 ports with 2 removable, self powered
 uhub2 at usb2: vendor 0x8086 UHCI root hub, class 9/0, rev 1.00/1.00, addr =
 1
 uhub2: 2 ports with 2 removable, self powered
 uhub3 at usb3: vendor 0x8086 UHCI root hub, class 9/0, rev 1.00/1.00, addr =
 1
 uhub3: 2 ports with 2 removable, self powered
 uhub4 at usb4: vendor 0x8086 EHCI root hub, class 9/0, rev 2.00/1.00, addr =
 1
 uhub4: 8 ports with 8 removable, self powered
 wd0 at atabus0 drive 0
 wd0: <Maxtor 6Y120L0>
 wd0: drive supports 16-sector PIO transfers, LBA addressing
 wd0: 114 GB, 238213 cyl, 16 head, 63 sec, 512 bytes/sect x 240119615 sector=
 s
 wd0: 32-bit data port
 wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
 wd0(piixide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DM=
 A)
 Kernelized RAIDframe activated
 boot device: wd0
 root on wd0a dumps on wd0b
 root file system type: ffs
 # mount -vv
 /dev/wd0a on / type ffs (log, noatime, nodevmtime, local, root file
 system, fsid: 0x0/0x78b, reads: sync 8779 async 0, writes: sync 0
 async 53)
 tmpfs on /tmp type tmpfs (local, fsid: 0xab01/0x69ab, reads: sync 0
 async 0, writes: sync 0 async 0, [tmpfs: version=3D1, size_max=3D52428800,
 nodes_max=3D51203, root_uid=3Droot, root_gid=3Dwheel, root_mode=3D1777])

 -- hash

From: "Juergen Hannken-Illjes" <hannken@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/45829 CVS commit: src/sys/dev
Date: Mon, 26 Mar 2012 16:28:09 +0000

 Module Name:	src
 Committed By:	hannken
 Date:		Mon Mar 26 16:28:08 UTC 2012

 Modified Files:
 	src/sys/dev: vnd.c vndvar.h

 Log Message:
 When backed by a sparse file limit the number of pending requests.

 Should fix PR #45829: "writing to vnd on sparse file blocks on pager_map"
 where the pager_map gets exhausted by requests enqueued on a vnd
 device and the device worker thread blocks on putpages() needing the map.

 While here always sync the underlying vnode before calling biodone().

 XXX: vnd should be converted to mutex/condvar.


 To generate a diff of this commit:
 cvs rdiff -u -r1.219 -r1.220 src/sys/dev/vnd.c
 cvs rdiff -u -r1.31 -r1.32 src/sys/dev/vndvar.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

Responsible-Changed-From-To: kern-bug-people->hannken
Responsible-Changed-By: hannken@NetBSD.org
Responsible-Changed-When: Thu, 05 Apr 2012 12:50:54 +0000
Responsible-Changed-Why:
Take.


State-Changed-From-To: open->pending-pullups
State-Changed-By: hannken@NetBSD.org
State-Changed-When: Thu, 05 Apr 2012 12:50:54 +0000
State-Changed-Why:
Fixed in -current -- Pullup pending.


From: "Jeff Rizzo" <riz@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/45829 CVS commit: [netbsd-6] src/sys/dev
Date: Fri, 6 Apr 2012 17:44:21 +0000

 Module Name:	src
 Committed By:	riz
 Date:		Fri Apr  6 17:44:21 UTC 2012

 Modified Files:
 	src/sys/dev [netbsd-6]: vnd.c vndvar.h

 Log Message:
 Pull up following revision(s) (requested by hannken in ticket #162):
 	sys/dev/vnd.c: revision 1.220
 	sys/dev/vndvar.h: revision 1.32
 When backed by a sparse file limit the number of pending requests.
 Should fix PR #45829: "writing to vnd on sparse file blocks on pager_map"
 where the pager_map gets exhausted by requests enqueued on a vnd
 device and the device worker thread blocks on putpages() needing the map.
 While here always sync the underlying vnode before calling biodone().
 XXX: vnd should be converted to mutex/condvar.


 To generate a diff of this commit:
 cvs rdiff -u -r1.219 -r1.219.8.1 src/sys/dev/vnd.c
 cvs rdiff -u -r1.31 -r1.31.8.1 src/sys/dev/vndvar.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: pending-pullups->closed
State-Changed-By: hannken@NetBSD.org
State-Changed-When: Mon, 09 Apr 2012 11:19:23 +0000
State-Changed-Why:
Pulled up.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.