All of lore.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 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.