public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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

  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