On Thu, 23 Nov 2006 20:48:25 +0100 Mathieu Fluhr wrote: > I explain: First take this really simple program: > ----8<------------------------------------------------------------------ > #include <sys/types.h> > #include <sys/stat.h> > #include <fcntl.h> > > > int main(int argc, char **argv) > { > if(argc < 2) > return 0; > > int iFD = open(argv[1], O_RDONLY | O_NONBLOCK); > if(iFD == -1) > perror("open"); > > while(1) > sleep(1); > > return 0; > } > ----8<----------------------------------------------------------------- [..] > Ok. Now take a full DVD (I tested DVD+R, +RW and -R), with more than > 4 300 000 000 bytes (very important :), and perform the following: > > 0. Open the tray of your recorder > 1. Launch this small program above, passing the recorder device file as > argument and let it run in background. At this time the following code in drivers/ide/ide-cd.c:cdrom_read_toc() is executed: /* Try to get the total cdrom capacity and sector size. */ stat = cdrom_read_capacity(drive, &toc->capacity, §ors_per_frame, sense); if (stat) toc->capacity = 0x1fffff; set_capacity(info->disk, toc->capacity * sectors_per_frame); Obviously, with the tray open cdrom_read_capacity() won't succeed, therefore toc->capacity will be set to 0x1fffff. > 2. then put the disc in the device and mount it > 3. try to copy to whole content on the hard drive > > -> You will get an error like the following: > > kernel: attempt to access beyond end of device > > kernel: hdb: rw=0, want=8388612, limit=8388604 0x1fffff * 2048/512 == 8388604 Your background program is keeping the device open, which prevents revalidation of capacity and other media information on subsequent device opens. When HAL polls CD-ROM devices to detect newly inserted media, it does not keep the device open forever - instead, it opens and closes the device every time. Your program should either do the same thing, or just depend on HAL events.
Attachment:
pgpn7Q3Ujkiob.pgp
Description: PGP signature
- Follow-Ups:
- Re: 'False' IO error when copying from cdrom drive
- From: Mathieu Fluhr <[email protected]>
- Re: 'False' IO error when copying from cdrom drive
- References:
- 'False' IO error when copying from cdrom drive
- From: Mathieu Fluhr <[email protected]>
- 'False' IO error when copying from cdrom drive
- Prev by Date: Re: [PATCH] snd-hda-intel: fix insufficient memory
- Next by Date: Re: 2.6.19-rc6-mm1
- Previous by thread: 'False' IO error when copying from cdrom drive
- Next by thread: Re: 'False' IO error when copying from cdrom drive
- Index(es):