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: [EMAIL PROTECTED]
> 
> 
> 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, &sectors);
> /* 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to