All of lore.kernel.org
 help / color / mirror / Atom feed
* [2.6.8-rc1-mm1][CD-Burning]kernel BUG at mm/page_alloc.c:796
@ 2004-07-14 21:36 Alexander Gran
  2004-07-15  9:00 ` Jens Axboe
  0 siblings, 1 reply; 3+ messages in thread
From: Alexander Gran @ 2004-07-14 21:36 UTC (permalink / raw)
  To: linux-kernel; +Cc: Andrew Morton

Hi,

I cannot burn cd's with 2.6.8-rc1-mm1.
System is Fujustu Siemens Celsius, detailed info below.
I hope it is not NVidias fault, but I don't think so.
I gonna check older kernels now.

root@ipt-cax-ws1: /root >cdrecord dev=/dev/hdc --checkdrive
results in:
------------[ cut here ]------------
kernel BUG at mm/page_alloc.c:796!
invalid operand: 0000 [#1]
PREEMPT SMP
Modules linked in: nvidia thermal processor fan button battery ac
CPU:    0
EIP:    0060:[<c01421ef>]    Tainted: P   VLI
EFLAGS: 00010246   (2.6.8-rc1-mm1)
EIP is at __free_pages+0x3e/0x48
eax: ffffffff   ebx: c2197400   ecx: c16c94a0   edx: 00000000
esi: c2191600   edi: 00000001   ebp: c2191680   esp: f52ddd34
ds: 007b   es: 007b   ss: 0068
Process cdrecord (pid: 1968, threadinfo=f52dc000 task=f5f562b0)
Stack: c2197400 c2191600 c0164b78 c2191600 f64a5000 00000100 fffffff2 00000000
       00079963 c2191680 00000000 c0392dcb c2191680 f5223eac c0396b2c f5223eac
       c2191680 00000100 00000100 21000046 01000000 00000000 f64d7930 00000000
Call Trace:
 [<c0164b78>] bio_uncopy_user+0x84/0xa9
 [<c0392dcb>] blk_rq_unmap_user+0x37/0x4c
 [<c0396b2c>] sg_io+0x296/0x310
 [<c03971dc>] scsi_cmd_ioctl+0x363/0x487
 [<c0364e02>] pty_write+0x123/0x162
 [<c032c640>] copy_from_user+0x4a/0x76
 [<c0364e02>] pty_write+0x123/0x162
 [<c047c530>] cdrom_ioctl+0x45/0xe04
 [<c011d6d9>] default_wake_function+0x0/0x12
 [<c011d6d9>] default_wake_function+0x0/0x12
 [<c035dc23>] tty_write+0x29d/0x316
 [<c03f0f24>] idecd_ioctl+0x70/0x84
 [<c03f0eb4>] idecd_ioctl+0x0/0x84
 [<c0395158>] blkdev_ioctl+0xa5/0x478
 [<c01736e1>] sys_ioctl+0x22e/0x2c1
 [<c01061d7>] syscall_call+0x7/0xb
Code: 2a f0 83 41 04 ff 0f 98 c0 84 c0 74 1a 85 d2 75 0a 89 c8 83 c4 08 e9 6a 
f9 ff ff 89 54 24 04 89 0c 24 e8 6c f3 ff ff 83 c4 08 c3 <0f> 0b 1c 03 83 a9 
5f c0 eb cc 85 c0 74 1e 05 00 00 00 40 c1 e8

System info:
root@ipt-cax-ws1: /root >cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Xeon(TM) CPU 3.06GHz
stepping        : 9
cpu MHz         : 3066.053
cache size      : 512 KB
physical id     : 0
siblings        : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca 
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips        : 6062.08

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Xeon(TM) CPU 3.06GHz
stepping        : 9
cpu MHz         : 3066.053
cache size      : 512 KB
physical id     : 0
siblings        : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca 
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips        : 6127.61

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Xeon(TM) CPU 3.06GHz
stepping        : 9
cpu MHz         : 3066.053
cache size      : 512 KB
physical id     : 3
siblings        : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca 
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips        : 6127.61

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Xeon(TM) CPU 3.06GHz
stepping        : 9
cpu MHz         : 3066.053
cache size      : 512 KB
physical id     : 3
siblings        : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca 
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips        : 6127.61

root@ipt-cax-ws1: /root >lspci
00:00.0 Host bridge: Intel Corp. E7505 Memory Controller Hub (rev 03)
00:00.1 Class ff00: Intel Corp. E7000 Series RAS Controller (rev 03)
00:01.0 PCI bridge: Intel Corp. E7000 Series Processor to AGP Controller (rev 
03)
00:02.0 PCI bridge: Intel Corp. E7000 Series Hub Interface B PCI-to-PCI Bridge 
(rev 03)
00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 02)
00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 02)
00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 02)
00:1d.7 USB Controller: Intel Corp. 82801DB USB2 (rev 02)
00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB/EB PCI Bridge (rev 82)
00:1f.0 ISA bridge: Intel Corp. 82801DB LPC Interface Controller (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801DB Ultra ATA Storage Controller (rev 
02)
00:1f.3 SMBus: Intel Corp. 82801DB/DBM SMBus Controller (rev 02)
00:1f.5 Multimedia audio controller: Intel Corp. 82801DB AC'97 Audio 
Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation NV35GL [Quadro FX 3000] 
(rev a1)
02:1c.0 PIC: Intel Corp. 82870P2 P64H2 I/OxAPIC (rev 04)
02:1d.0 PCI bridge: Intel Corp. 82870P2 P64H2 Hub PCI Bridge (rev 04)
02:1e.0 PIC: Intel Corp. 82870P2 P64H2 I/OxAPIC (rev 04)
02:1f.0 PCI bridge: Intel Corp. 82870P2 P64H2 Hub PCI Bridge (rev 04)
03:05.0 SCSI storage controller: Adaptec AIC-7902 U320 (rev 03)
03:05.1 SCSI storage controller: Adaptec AIC-7902 U320 (rev 03)
05:03.0 Ethernet controller: Intel Corp. 82540EM Gigabit Ethernet Controller 
(rev 02)


root@ipt-cax-ws1: /root >cdrecord -version
Cdrecord-Clone 2.01a18-dvd (i686-suse-linux) Copyright (C) 1995-2003 Jörg 
Schilling

root@ipt-cax-ws1: /root >dmesg | grep hdc
    ide1: BM-DMA at 0x18a8-0x18af, BIOS settings: hdc:DMA, hdd:pio
hdc: _NEC DVD+RW ND-1100A, ATAPI CD/DVD-ROM drive
hdc: ATAPI 32X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)
hdc: CHECK for good STATUS


root@ipt-cax-ws1: /root >hdparm /dev/hdc
/dev/hdc:
 HDIO_GET_MULTCOUNT failed: Invalid argument
 IO_support   =  1 (32-bit)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 HDIO_GETGEO failed: Invalid argument


regards
Alex

-- 
Encrypted Mails welcome.
PGP-Key at http://zodiac.dnsalias.org/misc/pgpkey.asc | Key-ID: 0x6D7DD291


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [2.6.8-rc1-mm1][CD-Burning]kernel BUG at mm/page_alloc.c:796
  2004-07-14 21:36 [2.6.8-rc1-mm1][CD-Burning]kernel BUG at mm/page_alloc.c:796 Alexander Gran
@ 2004-07-15  9:00 ` Jens Axboe
  2004-07-15 13:46   ` Alexander Gran
  0 siblings, 1 reply; 3+ messages in thread
From: Jens Axboe @ 2004-07-15  9:00 UTC (permalink / raw)
  To: Alexander Gran; +Cc: linux-kernel, Andrew Morton, j

On Wed, Jul 14 2004, Alexander Gran wrote:
> Hi,
> 
> I cannot burn cd's with 2.6.8-rc1-mm1.
> System is Fujustu Siemens Celsius, detailed info below.
> I hope it is not NVidias fault, but I don't think so.
> I gonna check older kernels now.
> 
> root@ipt-cax-ws1: /root >cdrecord dev=/dev/hdc --checkdrive
> results in:
> ------------[ cut here ]------------
> kernel BUG at mm/page_alloc.c:796!
> invalid operand: 0000 [#1]
> PREEMPT SMP
> Modules linked in: nvidia thermal processor fan button battery ac
> CPU:    0
> EIP:    0060:[<c01421ef>]    Tainted: P   VLI
> EFLAGS: 00010246   (2.6.8-rc1-mm1)
> EIP is at __free_pages+0x3e/0x48
> eax: ffffffff   ebx: c2197400   ecx: c16c94a0   edx: 00000000
> esi: c2191600   edi: 00000001   ebp: c2191680   esp: f52ddd34
> ds: 007b   es: 007b   ss: 0068
> Process cdrecord (pid: 1968, threadinfo=f52dc000 task=f5f562b0)
> Stack: c2197400 c2191600 c0164b78 c2191600 f64a5000 00000100 fffffff2 00000000
>        00079963 c2191680 00000000 c0392dcb c2191680 f5223eac c0396b2c f5223eac
>        c2191680 00000100 00000100 21000046 01000000 00000000 f64d7930 00000000
> Call Trace:
>  [<c0164b78>] bio_uncopy_user+0x84/0xa9
>  [<c0392dcb>] blk_rq_unmap_user+0x37/0x4c
>  [<c0396b2c>] sg_io+0x296/0x310
>  [<c03971dc>] scsi_cmd_ioctl+0x363/0x487

Can you check if this patch works for you? Andrew, this also fixes a
problem in the bouncing for io errors (it needs to free the pages and
clear the BIO_UPTODATE flag, not set it. it's already set. passing -EIO
to bio_endio() takes care of that).

diff -urp -X /home/axboe/cdrom/exclude /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c
--- /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c	2004-07-15 10:41:31.678544355 +0200
+++ linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c	2004-07-15 10:43:09.096987402 +0200
@@ -1853,6 +1853,12 @@ EXPORT_SYMBOL(blk_insert_request);
  *
  *    A matching blk_rq_unmap_user() must be issued at the end of io, while
  *    still in process context.
+ *
+ *    Note: The mapped bio may need to be bounced through blk_queue_bounce()
+ *    before being submitted to the device, as pages mapped may be out of
+ *    reach. It's the callers responsibility to make sure this happens. The
+ *    original bio must be passed back in to blk_rq_unmap_user() for proper
+ *    unmapping.
  */
 struct request *blk_rq_map_user(request_queue_t *q, int rw, void __user *ubuf,
 				unsigned int len)
diff -urp -X /home/axboe/cdrom/exclude /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c
--- /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c	2004-07-15 10:41:31.762535252 +0200
+++ linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c	2004-07-15 10:43:09.092987835 +0200
@@ -170,6 +170,13 @@ static int sg_io(request_queue_t *q, str
 	rq->flags |= REQ_BLOCK_PC;
 	bio = rq->bio;
 
+	/*
+	 * bounce this after holding a reference to the original bio, it's
+	 * needed for proper unmapping
+	 */
+	if (rq->bio)
+		blk_queue_bounce(q, &rq->bio);
+
 	rq->timeout = (hdr->timeout * HZ) / 1000;
 	if (!rq->timeout)
 		rq->timeout = q->sg_timeout;
diff -urp -X /home/axboe/cdrom/exclude /opt/kernel/linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c
--- /opt/kernel/linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c	2004-07-15 10:41:32.994401746 +0200
+++ linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c	2004-07-15 10:43:09.094987619 +0200
@@ -2082,6 +2082,9 @@ static int cdrom_read_cdda_bpc(struct cd
 		rq->timeout = 60 * HZ;
 		bio = rq->bio;
 
+		if (rq->bio)
+			blk_queue_bounce(q, &rq->bio);
+
 		if (blk_execute_rq(q, cdi->disk, rq)) {
 			struct request_sense *s = rq->sense;
 			ret = -EIO;
diff -urp -X /home/axboe/cdrom/exclude /opt/kernel/linux-2.6.8-rc1-mm1/fs/bio.c linux-2.6.8-rc1-mm1/fs/bio.c
--- /opt/kernel/linux-2.6.8-rc1-mm1/fs/bio.c	2004-07-15 10:41:44.105197605 +0200
+++ linux-2.6.8-rc1-mm1/fs/bio.c	2004-07-15 10:43:09.091987944 +0200
@@ -557,7 +557,6 @@ static struct bio *__bio_map_user(reques
 		bio->bi_rw |= (1 << BIO_RW);
 
 	bio->bi_flags |= (1 << BIO_USER_MAPPED);
-	blk_queue_bounce(q, &bio);
 	return bio;
 out:
 	kfree(pages);
diff -urp -X /home/axboe/cdrom/exclude /opt/kernel/linux-2.6.8-rc1-mm1/mm/highmem.c linux-2.6.8-rc1-mm1/mm/highmem.c
--- /opt/kernel/linux-2.6.8-rc1-mm1/mm/highmem.c	2004-07-15 10:41:50.046553716 +0200
+++ linux-2.6.8-rc1-mm1/mm/highmem.c	2004-07-15 10:43:09.090988052 +0200
@@ -308,12 +308,10 @@ static void bounce_end_io(struct bio *bi
 {
 	struct bio *bio_orig = bio->bi_private;
 	struct bio_vec *bvec, *org_vec;
-	int i;
+	int i, err = 0;
 
 	if (!test_bit(BIO_UPTODATE, &bio->bi_flags))
-		goto out_eio;
-
-	set_bit(BIO_UPTODATE, &bio_orig->bi_flags);
+		err = -EIO;
 
 	/*
 	 * free up bounce indirect pages used
@@ -326,8 +324,7 @@ static void bounce_end_io(struct bio *bi
 		mempool_free(bvec->bv_page, pool);	
 	}
 
-out_eio:
-	bio_endio(bio_orig, bio_orig->bi_size, 0);
+	bio_endio(bio_orig, bio_orig->bi_size, err);
 	bio_put(bio);
 }
 

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [2.6.8-rc1-mm1][CD-Burning]kernel BUG at mm/page_alloc.c:796
  2004-07-15  9:00 ` Jens Axboe
@ 2004-07-15 13:46   ` Alexander Gran
  0 siblings, 0 replies; 3+ messages in thread
From: Alexander Gran @ 2004-07-15 13:46 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel, Andrew Morton, j, cadcam

Hi,

the patch does the trick. Thanks for the fast response ;)

regards
Alex

Am Donnerstag, 15. Juli 2004 11:00 schrieb Jens Axboe:
> On Wed, Jul 14 2004, Alexander Gran wrote:
> > Hi,
> >
> > I cannot burn cd's with 2.6.8-rc1-mm1.
> > System is Fujustu Siemens Celsius, detailed info below.
> > I hope it is not NVidias fault, but I don't think so.
> > I gonna check older kernels now.
> >
> > root@ipt-cax-ws1: /root >cdrecord dev=/dev/hdc --checkdrive
> > results in:
> > ------------[ cut here ]------------
> > kernel BUG at mm/page_alloc.c:796!
> > invalid operand: 0000 [#1]
> > PREEMPT SMP
> > Modules linked in: nvidia thermal processor fan button battery ac
> > CPU:    0
> > EIP:    0060:[<c01421ef>]    Tainted: P   VLI
> > EFLAGS: 00010246   (2.6.8-rc1-mm1)
> > EIP is at __free_pages+0x3e/0x48
> > eax: ffffffff   ebx: c2197400   ecx: c16c94a0   edx: 00000000
> > esi: c2191600   edi: 00000001   ebp: c2191680   esp: f52ddd34
> > ds: 007b   es: 007b   ss: 0068
> > Process cdrecord (pid: 1968, threadinfo=f52dc000 task=f5f562b0)
> > Stack: c2197400 c2191600 c0164b78 c2191600 f64a5000 00000100 fffffff2
> > 00000000 00079963 c2191680 00000000 c0392dcb c2191680 f5223eac c0396b2c
> > f5223eac c2191680 00000100 00000100 21000046 01000000 00000000 f64d7930
> > 00000000 Call Trace:
> >  [<c0164b78>] bio_uncopy_user+0x84/0xa9
> >  [<c0392dcb>] blk_rq_unmap_user+0x37/0x4c
> >  [<c0396b2c>] sg_io+0x296/0x310
> >  [<c03971dc>] scsi_cmd_ioctl+0x363/0x487
>
> Can you check if this patch works for you? Andrew, this also fixes a
> problem in the bouncing for io errors (it needs to free the pages and
> clear the BIO_UPTODATE flag, not set it. it's already set. passing -EIO
> to bio_endio() takes care of that).
>
> diff -urp -X /home/axboe/cdrom/exclude
> /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c
> linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c ---
> /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c	2004-07-15
> 10:41:31.678544355 +0200 +++
> linux-2.6.8-rc1-mm1/drivers/block/ll_rw_blk.c	2004-07-15 10:43:09.096987402
> +0200 @@ -1853,6 +1853,12 @@ EXPORT_SYMBOL(blk_insert_request);
>   *
>   *    A matching blk_rq_unmap_user() must be issued at the end of io,
> while *    still in process context.
> + *
> + *    Note: The mapped bio may need to be bounced through
> blk_queue_bounce() + *    before being submitted to the device, as pages
> mapped may be out of + *    reach. It's the callers responsibility to make
> sure this happens. The + *    original bio must be passed back in to
> blk_rq_unmap_user() for proper + *    unmapping.
>   */
>  struct request *blk_rq_map_user(request_queue_t *q, int rw, void __user
> *ubuf, unsigned int len)
> diff -urp -X /home/axboe/cdrom/exclude
> /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c
> linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c ---
> /opt/kernel/linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c	2004-07-15
> 10:41:31.762535252 +0200 +++
> linux-2.6.8-rc1-mm1/drivers/block/scsi_ioctl.c	2004-07-15
> 10:43:09.092987835 +0200 @@ -170,6 +170,13 @@ static int
> sg_io(request_queue_t *q, str
>  	rq->flags |= REQ_BLOCK_PC;
>  	bio = rq->bio;
>
> +	/*
> +	 * bounce this after holding a reference to the original bio, it's
> +	 * needed for proper unmapping
> +	 */
> +	if (rq->bio)
> +		blk_queue_bounce(q, &rq->bio);
> +
>  	rq->timeout = (hdr->timeout * HZ) / 1000;
>  	if (!rq->timeout)
>  		rq->timeout = q->sg_timeout;
> diff -urp -X /home/axboe/cdrom/exclude
> /opt/kernel/linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c
> linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c ---
> /opt/kernel/linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c	2004-07-15
> 10:41:32.994401746 +0200 +++
> linux-2.6.8-rc1-mm1/drivers/cdrom/cdrom.c	2004-07-15 10:43:09.094987619
> +0200 @@ -2082,6 +2082,9 @@ static int cdrom_read_cdda_bpc(struct cd
>  		rq->timeout = 60 * HZ;
>  		bio = rq->bio;
>
> +		if (rq->bio)
> +			blk_queue_bounce(q, &rq->bio);
> +
>  		if (blk_execute_rq(q, cdi->disk, rq)) {
>  			struct request_sense *s = rq->sense;
>  			ret = -EIO;
> diff -urp -X /home/axboe/cdrom/exclude
> /opt/kernel/linux-2.6.8-rc1-mm1/fs/bio.c linux-2.6.8-rc1-mm1/fs/bio.c ---
> /opt/kernel/linux-2.6.8-rc1-mm1/fs/bio.c	2004-07-15 10:41:44.105197605
> +0200 +++ linux-2.6.8-rc1-mm1/fs/bio.c	2004-07-15 10:43:09.091987944 +0200
> @@ -557,7 +557,6 @@ static struct bio *__bio_map_user(reques
>  		bio->bi_rw |= (1 << BIO_RW);
>
>  	bio->bi_flags |= (1 << BIO_USER_MAPPED);
> -	blk_queue_bounce(q, &bio);
>  	return bio;
>  out:
>  	kfree(pages);
> diff -urp -X /home/axboe/cdrom/exclude
> /opt/kernel/linux-2.6.8-rc1-mm1/mm/highmem.c
> linux-2.6.8-rc1-mm1/mm/highmem.c ---
> /opt/kernel/linux-2.6.8-rc1-mm1/mm/highmem.c	2004-07-15 10:41:50.046553716
> +0200 +++ linux-2.6.8-rc1-mm1/mm/highmem.c	2004-07-15 10:43:09.090988052
> +0200 @@ -308,12 +308,10 @@ static void bounce_end_io(struct bio *bi
>  {
>  	struct bio *bio_orig = bio->bi_private;
>  	struct bio_vec *bvec, *org_vec;
> -	int i;
> +	int i, err = 0;
>
>  	if (!test_bit(BIO_UPTODATE, &bio->bi_flags))
> -		goto out_eio;
> -
> -	set_bit(BIO_UPTODATE, &bio_orig->bi_flags);
> +		err = -EIO;
>
>  	/*
>  	 * free up bounce indirect pages used
> @@ -326,8 +324,7 @@ static void bounce_end_io(struct bio *bi
>  		mempool_free(bvec->bv_page, pool);
>  	}
>
> -out_eio:
> -	bio_endio(bio_orig, bio_orig->bi_size, 0);
> +	bio_endio(bio_orig, bio_orig->bi_size, err);
>  	bio_put(bio);
>  }

-- 
Encrypted Mails welcome.
PGP-Key at http://zodiac.dnsalias.org/misc/pgpkey.asc | Key-ID: 0x6D7DD291


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-07-15 13:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-14 21:36 [2.6.8-rc1-mm1][CD-Burning]kernel BUG at mm/page_alloc.c:796 Alexander Gran
2004-07-15  9:00 ` Jens Axboe
2004-07-15 13:46   ` Alexander Gran

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.