Re: CDROM ioctl bug (fwd)

Ron Lawrence (rlawrence@netraverse.com)
Wed, 28 Nov 2001 11:44:00 -0700 (MST)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,

Jens told me to go ahead and post to this list, since he has been very
busy. Here are the symptoms of my problem : doing reads from a CDROM
device intermingled with CDROM_MEDIA_CHANGED ioctls causes long pauses
during the ioctl. This behavior started in 2.4.10. The ioctl can take a
very long time to return, especially if reading large chunks.

FYI, I tried adjusting the max/min-readahead that appeared in 2.4.16, but
these seemed to have no effect on the problem. If anyone has time to look
into this, or can point me at a likely place to start looking, I would
appreciate it.

Ron Lawrence
rlawrence@netraverse.com

Here is a program that will recreate the problem consistently (larger
numbers produce it more consistently):

- -------- %< ------------
#include <stdio.h>
#include <fcntl.h>
#include <linux/cdrom.h>
/* usage cdr [cd-device [bytes to read] ] */
int
main(int argc, char *argv[]) {
int cdfd, i, j, k;
char *infile;
char c;
int read_bytes = argc > 2 ? atoi(argv[2]) : 65535;
char buf[500000];
char *openit = argc > 1 ? argv[1] : "/dev/cdrom";

printf("opening %s, reading %d at a time\n", openit, read_bytes);
if ((cdfd = open(openit, O_RDONLY) ) == -1) {
exit(2);
}

for (i=0; i<50 ;i++) {
j=time();
printf("%2.2d Reading %d bytes\n", i, read_bytes);
read(cdfd, buf, read_bytes);
printf("%2.2d Calling media change ioctl:\n",i);
ioctl(cdfd, CDROM_MEDIA_CHANGED, CDSL_CURRENT);
k=time();
printf("%2.2d done (%d)\n", i, (k-j));
}
return 0;
}
- -------- %< ------------

- ---------- Forwarded message ----------
Date: Wed, 28 Nov 2001 08:01:20 +0100
From: Jens Axboe <axboe@suse.de>
To: Ron Lawrence <rlawrence@netraverse.com>
Subject: Re: CDROM ioctl bug

On Tue, Nov 27 2001, Ron Lawrence wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Jens,
>
> I'm just writing to ask whether you have had any luck finding the
> CDROM
> MEDIA_CHANGE ioctl bug yet. If not, would you mind my posting of the
> sample program to the kernel list to see if anyone else has time to
> debug it?

No time yet, but please go ahead and post the sample program so someone
else can debug it for now.

--
Jens Axboe
- --------------------------------------------

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE8BTBzU0yq8UBYK2oRAmQfAJ4/YaXWrDcWfLcVRREHetBGwAolfwCfeJIt
Z3/z1rseKLU1N1p/gspjieU=
=+NEN
-----END PGP SIGNATURE-----

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/