From: Ed Sweetman <safemode@comcast.net>
To: Jens Axboe <axboe@suse.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: audio cd writing causes massive swap and crash
Date: Mon, 19 Jul 2004 08:12:30 -0400 [thread overview]
Message-ID: <40FBBAAE.5060405@comcast.net> (raw)
In-Reply-To: <20040718071830.GA29753@suse.de>
[-- Attachment #1: Type: text/plain, Size: 5583 bytes --]
The patch does not work. I've just had the chance to try it out and the
same exact problem occurs with no difference. I ran vmstat while this
was going on, but not being the very first run, it'll probably be hard
to tell what's going on . The moment free mem drop is when i started
the cdrecord process. the cdrecord command line looks something like this:
/usr/local/bin/cdrecord
-v
-eject
-pad
speed=48
dev=/dev/hdc
-dao
fs=12m
driveropts=burnproof
-audio
-swab
Jens Axboe wrote:
>On Sat, Jul 17 2004, Ed Sweetman wrote:
>
>
>>Both with 2.6.7-rc3 and 2.6.8-rc1-mm1 I get the same behavior when
>>writing an audio cd on my plextor px-712a. DMA is enabled and normal
>>data cds write as expected, but audio cds will cause (at any speed) the
>>box to start using insane amounts of swap (>150MB) and eventually cause
>>the box to crash before finishing the cd. CPU usage during the write is
>>very low, but the feeling of lagginess begins after the first few tracks
>>(and as the memory begins to be sucked away). I've used both cdrecord
>>from cdrtools in debian and from the site and both have the same
>>behavior. I dont know how i'd go about finding out what the problem is,
>>so far I've coastered over 10 cds trying different ways of burning an
>>audio cd but it appears that burnfree, speed have nothing to do with the
>>problem.
>>
>>Here's some drive info if it helps.
>>
>>Linux sg driver version: 3.5.27
>>Using libscg version 'schily-0.8'.
>>Device type : Removable CD-ROM
>>Version : 0
>>Response Format: 1
>>Vendor_info : 'PLEXTOR '
>>Identifikation : 'DVDR PX-712A '
>>Revision : '1.01'
>>Device seems to be: Generic mmc2 DVD-R/DVD-RW.
>>cdrecord: This version of cdrecord does not include DVD-R/DVD-RW support
>>code.
>>cdrecord: See /usr/share/doc/cdrecord/README.DVD.Debian for details on
>>DVD support.
>>Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr).
>>Driver flags : MMC-3 SWABAUDIO BURNFREE VARIREC FORCESPEED SPEEDREAD
>>SINGLESESSION HIDECDR
>>Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R
>>
>>
>>now in cdrecord i use the option -swab not sure if that counters the
>>driver flags or what, either way I doubt it would be causing this problem.
>>
>>the drive by the way is mmc4 compliant, so it's weird that it says mmc2.
>>any more info that's needed just tell me.
>>
>>
>
>Sounds like it's leaking all the pages, vmstat 1 during rip will show
>for sure. Can you check if this makes a difference, against
>2.6.8-rc-mm1 (should apply with offsets, I'm on the road so cannot test
>myself)?
>
>--- /mnt/kscratch/linux-2.6.5/mm/highmem.c 2004-04-04 05:37:25.000000000 +0200
>+++ linux-2.6.5-SUSE-20040713/mm/highmem.c 2004-07-15 10:28:12.142262512 +0200
>@@ -309,12 +309,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
>@@ -327,8 +325,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);
> }
>
>--- /mnt/kscratch/linux-2.6.5/fs/bio.c 2004-07-14 23:12:42.000000000 +0200
>+++ linux-2.6.5-SUSE-20040713/fs/bio.c 2004-07-15 10:30:53.263775247 +0200
>@@ -549,7 +549,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);
>--- /mnt/kscratch/linux-2.6.5/drivers/block/scsi_ioctl.c 2004-07-14 23:12:42.000000000 +0200
>+++ linux-2.6.5-SUSE-20040713/drivers/block/scsi_ioctl.c 2004-07-15 10:26:39.089364958 +0200
>@@ -167,6 +167,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;
>--- /mnt/kscratch/linux-2.6.5/drivers/cdrom/cdrom.c 2004-07-14 23:12:42.000000000 +0200
>+++ linux-2.6.5-SUSE-20040713/drivers/cdrom/cdrom.c 2004-07-15 10:27:17.219225057 +0200
>@@ -1975,6 +1975,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;
>--- /mnt/kscratch/linux-2.6.5/drivers/block/ll_rw_blk.c 2004-07-14 23:12:42.000000000 +0200
>+++ linux-2.6.5-SUSE-20040713/drivers/block/ll_rw_blk.c 2004-07-15 10:34:51.152967583 +0200
>@@ -1807,6 +1807,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)
>
>
>
>
[-- Attachment #2: testing --]
[-- Type: text/plain, Size: 8934 bytes --]
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 9424 17540 14060 378248 0 0 297 202 20 235 4 2 91 4
6 0 9424 17540 14068 378248 0 0 0 30 1336 405 1 1 98 0
0 0 9424 17940 14068 378248 0 0 0 0 1494 1590 9 1 90 0
0 0 9424 17940 14068 378248 0 0 0 0 1415 334 0 0 100 0
0 0 9424 17940 14068 378248 0 0 0 0 1441 377 1 0 99 0
0 0 9424 17928 14076 378248 0 0 0 8 1450 700 7 2 91 0
0 0 9424 17928 14084 378248 0 0 0 8 1388 349 1 1 98 0
0 0 9424 17964 14084 378248 0 0 0 0 1284 245 1 0 99 0
0 0 9424 17964 14084 378248 0 0 0 0 1229 213 1 0 99 0
0 0 9424 17964 14084 378248 0 0 0 0 1241 224 0 0 100 0
0 0 9424 17968 14084 378248 0 0 0 14 1322 240 1 1 98 0
0 0 9424 18016 14088 378248 0 0 0 8 1268 223 1 1 98 0
2 0 9424 5384 14088 390540 0 0 0 0 1375 767 10 5 85 0
0 0 9424 4812 14084 390288 0 0 4608 0 1388 2761 10 4 69 17
0 0 9424 4828 14084 390288 0 0 0 0 1377 593 2 4 94 0
0 0 9424 3156 14060 391876 0 0 4092 18 1433 710 4 9 77 10
0 0 9424 3584 14068 391876 0 0 0 26 1503 1284 14 4 82 0
0 0 9424 3580 14068 391876 0 0 0 0 1375 594 10 0 90 0
0 0 9424 3572 14076 391876 0 0 0 20 1465 703 10 1 89 0
0 0 9424 3576 14076 391876 0 0 0 0 1285 549 7 2 91 0
0 0 9424 3568 14076 391876 0 0 0 0 1365 411 5 0 95 0
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 9424 3576 14084 391876 0 0 0 8 1463 507 11 0 89 0
0 0 9424 3576 14084 391876 0 0 0 0 1218 330 1 0 99 0
0 0 9424 3576 14084 391876 0 0 0 0 1229 316 2 0 98 0
0 0 9424 3572 14084 391876 0 0 0 0 1232 319 1 0 99 0
0 0 9424 3596 14084 391876 0 0 0 0 1228 341 3 1 96 0
0 0 9424 3532 14088 391876 0 0 0 16 1300 420 2 1 97 0
0 0 9424 2848 14088 391876 0 0 0 0 1293 338 1 0 99 0
0 0 9424 4780 14088 389316 0 0 0 0 1245 353 0 0 98 2
0 0 9424 4144 14088 389316 0 0 0 0 1263 348 1 1 98 0
0 0 9424 3496 14092 389316 0 0 0 6 1262 359 1 1 98 0
0 0 9424 2860 14096 389316 0 0 0 8 1427 482 2 0 98 0
0 0 9424 4808 14084 386808 0 0 0 0 1497 513 5 0 93 2
0 0 9424 4172 14084 386808 0 0 0 0 1399 430 4 0 96 0
0 0 9424 3500 14084 386808 0 0 0 0 1267 1041 3 2 95 0
0 0 9424 2856 14084 386808 0 0 0 4 1438 1132 6 3 91 0
0 0 9460 4580 14092 384424 0 40 0 48 1350 428 1 0 99 0
0 0 9460 4012 14092 384424 0 0 0 0 1247 350 1 0 99 0
0 0 9460 3432 14092 384424 0 0 0 0 1264 355 0 0 100 0
0 0 9460 2768 14092 384424 0 0 0 0 1257 342 1 1 98 0
3 1 9460 4076 14072 380900 0 0 0 6 1431 152 1 96 4 0
6 3 9464 4116 14000 378028 0 64 4102 88 1876 187 1 97 0 2
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 9464 2724 13736 376512 0 0 4240 2 2369 641 3 97 1 0
0 6 9464 3956 13676 372872 0 0 140 0 1618 342 2 94 3 2
6 3 9464 3996 12828 369832 0 0 4360 20 2742 457 0 86 6 7
1 7 9464 4060 12392 367736 0 0 3740 8 1754 175 1 98 0 1
1 0 9464 3360 12320 366144 0 0 0 0 1513 293 3 96 2 0
1 0 9464 4044 11724 363572 0 0 0 12 1481 595 4 95 2 0
0 6 9464 4036 11720 361888 0 0 0 0 1433 162 1 75 24 0
3 6 9464 4036 8416 361224 0 0 2048 0 2780 151 1 97 0 3
0 2 9464 3972 7920 359576 64 0 4168 14 1350 230 2 96 0 2
3 2 9464 4188 7816 357884 32 0 6192 0 1842 297 1 98 1 0
5 3 9464 4060 7776 354732 0 8 4100 20 2500 330 3 84 12 2
1 1 9464 3588 7708 352336 28 0 4534 0 1983 196 1 96 0 3
0 0 9464 3208 7700 350540 0 0 0 8 1345 315 3 94 3 0
1 1 9464 4040 7648 347776 0 0 4100 6 1447 219 1 94 3 2
3 5 9464 4036 7648 345984 0 0 0 0 1396 194 1 79 19 2
3 5 9464 3980 7512 342692 0 0 4124 0 2141 205 1 97 0 2
2 0 9464 4176 7456 340328 8 0 4108 12 1474 284 2 95 2 2
2 0 9464 4048 7460 338280 0 0 0 8 1577 317 3 95 3 0
0 4 9464 4044 7436 336400 0 0 1936 0 1429 170 1 79 19 1
6 1 9464 4044 7396 332604 0 0 0 12 2125 180 0 99 0 1
3 0 9464 3996 7388 330440 0 0 12 0 1368 309 3 95 2 0
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 2 9464 3956 7188 328216 0 0 2048 0 1564 500 5 93 1 2
1 2 9464 4084 6916 326356 0 0 2056 8 1517 1363 4 83 11 3
0 4 9464 4084 6580 322508 0 0 2048 8 1531 465 2 95 0 3
2 0 9464 3252 6572 323040 0 0 6160 4 1636 279 3 97 0 0
2 0 9464 3420 6552 321144 0 0 4100 14 1494 485 3 97 0 0
11 3 9464 4116 6552 316784 36 0 36 6 2268 451 2 86 10 2
2 0 9468 4140 6556 312612 28 16 8240 36 4190 535 2 98 0 0
0 0 9468 4108 6556 312600 0 0 0 6 1328 3161 11 15 74 0
1 0 9468 4108 6556 312600 0 0 0 0 1534 1201 5 15 80 0
0 0 9468 4556 6556 312600 32 0 32 0 1380 1397 8 7 85 0
0 0 9468 4556 6556 312600 0 0 0 0 1239 213 0 0 100 0
0 0 9468 4556 6572 312600 0 0 0 24 1227 247 1 0 99 0
0 0 9468 4580 6572 312600 0 0 0 4 1225 241 3 3 94 0
0 0 9468 4580 6572 312600 0 0 0 0 1234 221 1 0 99 0
1 0 9468 17332 6572 300308 36 0 36 0 1276 573 6 1 93 0
0 0 9428 17844 6572 300308 0 0 0 0 1247 867 4 1 95 0
0 0 9428 17844 6576 300308 0 0 0 8 1259 347 2 0 98 0
0 0 9428 17844 6584 300308 4 0 4 6 1260 339 2 2 96 0
0 0 9428 17860 6584 300308 0 0 0 0 1261 368 2 0 98 0
0 0 9428 17860 6584 300308 0 0 0 0 1243 219 1 0 99 0
0 0 9428 17860 6584 300308 0 0 0 0 1234 216 1 1 98 0
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 9428 17860 6592 300308 0 0 0 8 1244 223 0 0 99 1
0 0 9428 17900 6592 300308 0 0 0 0 1234 223 1 0 99 0
0 0 9428 17900 6592 300308 0 0 0 0 1227 224 0 0 100 0
0 0 9428 17900 6592 300308 0 0 0 0 1240 241 2 0 98 0
0 0 9428 17900 6592 300308 0 0 0 0 1239 221 0 0 100 0
0 0 9428 17932 6596 300308 0 0 0 8 1229 228 1 1 98 0
0 0 9428 17932 6596 300308 0 0 0 0 1225 220 1 1 98 0
0 0 9428 17932 6596 300308 0 0 0 0 1223 214 0 0 100 0
0 0 9428 17932 6596 300308 0 0 0 0 1222 225 1 0 99 0
0 0 9428 17924 6596 300308 0 0 0 0 1438 954 7 1 92 0
0 0 9428 17924 6604 300312 0 0 0 14 1282 366 3 1 96 0
0 0 9428 17924 6604 300312 0 0 0 0 1407 372 3 1 96 0
0 0 9428 17924 6608 300312 0 0 0 6 1526 468 2 0 98 0
0 0 9428 17932 6608 300312 0 0 0 0 1226 217 1 0 99 0
0 0 9428 17740 6612 300560 0 0 252 0 1262 350 2 0 94 4
0 0 9428 17740 6616 300560 0 0 0 8 1473 677 4 1 95 0
0 0 9428 17740 6616 300560 0 0 0 4 1241 263 1 0 99 0
0 0 9428 19404 6616 300560 0 0 0 0 1326 1142 12 2 86 0
0 0 9428 19404 6616 300560 0 0 0 0 1275 245 2 0 98 0
next prev parent reply other threads:[~2004-07-19 12:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-17 20:00 audio cd writing causes massive swap and crash Ed Sweetman
2004-07-17 19:34 ` Andrew Morton
2004-07-19 0:07 ` Chris Wedgwood
2004-07-17 20:41 ` bert hubert
2004-07-18 7:19 ` Jens Axboe
2004-07-19 12:12 ` Ed Sweetman [this message]
2004-07-19 20:26 ` Ed Sweetman
2004-07-22 4:41 ` Ed Sweetman
2004-07-22 12:54 ` Jens Axboe
2004-07-22 20:44 ` Martin Schlemmer
2004-07-22 23:30 ` Ed Sweetman
2004-07-22 21:40 ` Jens Axboe
2004-07-24 17:56 ` Ed Sweetman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40FBBAAE.5060405@comcast.net \
--to=safemode@comcast.net \
--cc=axboe@suse.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox