Messages in this thread | | | Date | Wed, 30 May 2001 23:15:09 +0200 | From | Jens Axboe <> | Subject | Re: determining size of cdrom |
| |
On Wed, May 30 2001, Jeff Meininger wrote: > > I'm not subscribed to the mailing list, so please Cc a copy of your > replies straight to my email address: jeffm@boxybutgood.com. > > > I'm trying to determine the raw size of a cdrom disc, as in the size of > the file you'd get by doing 'dd if=/dev/cdrom of=size_of_this.img'. > > I've tried the following things (with a disc in the drive) without > success, and I'm hoping that someone will be able to point me in the right > direction. > > > struct stat s; > stat("/dev/cdrom", &s); > /* s.st_size is 0, s.st_blocks is 0. */ > > int fd = open("/dev/cdrom", O_RDONLY); > > off_t bytes = lseek(fd, 0, SEEK_END); > /* bytes is 0 */ > > long sectors = 0; > ioctl(fd, BLKGETSIZE, §ors); > /* sectors varies (never seems accurate) and is usually LONG_MAX */
At least this is the capacity as reported by the drive when we read the table of contents.
> long ssz = 0; > ioctl(fd, BLKSSZGET, &ssz); > /* ssz varies, and is usually 1024. (shouldn't it be 2048?) */
Someone added a block size setting of 1024 to ide revalidate, and this has screwed us for a awhile (ie atapi dvd-ram breaks). Recent ac has the correct stuff to reset it.
> /* ioctl HDIO_GETGEO fails. */ > > /* ioctl HDIO_GET_IDENTITY returns 0's for the c/h/s values I'm looking > for. */ > > I didn't find anything that looked obvious to me in linux/cdrom.h, except > in the #ifdef __KERNEL__ section which I don't believe I can use from > user space.
You can do it from user space with CDROMREADTOCHDR/CDROMREATOCENTRY if you want, did you see those?
-- Jens Axboe
- 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/
| |