* lstat returns bogus values.
@ 2006-03-20 18:35 linux-os (Dick Johnson)
2006-03-20 20:35 ` Andreas Schwab
0 siblings, 1 reply; 5+ messages in thread
From: linux-os (Dick Johnson) @ 2006-03-20 18:35 UTC (permalink / raw)
To: Linux kernel
Hello,
I need to determine the total number of 512-byte sectors on
a physical media. lstat() returns bad data. With this defective
implimentation, how is one supposed to obtain this information?
Maybe some ioctl()
Boot device is /dev/hda
st_blksize = 4096
st_blocks = 0
st_size = 0
Here is what Linux `fisk` does to get the info...
open("/dev/hda", O_RDWR|O_LARGEFILE) = 3
ioctl(3, BLKSSZGET, 0xbff46b04) = 0
fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(3, 0), ...}) = 0
ioctl(3, 0x301, 0xbff46b00) = 0
ioctl(3, 0x80041272, 0xbff46b30) = 0
_llseek(3, 0, [0], SEEK_SET) = 0
Anybody know what the ioctls() names are? I don't see any
user-mode ioctls defined for this like BLKGETSIZE, which
exists only in kernel ioctls. Of course I could cheat
and copy some kernel-headers, but that's what created
this problem in the first place. Old code made some
assumptions that are no longer true, so how is somebody
supposed to get the total size of a block device??? The
"kernelly-corrected" stuff should have been returned by
lstat(), not by peeking at kernel headers.
Cheers,
Dick Johnson
Penguin : Linux version 2.6.15.4 on an i686 machine (5589.48 BogoMips).
Warning : 98.36% of all statistics are fiction, book release in April.
_
\x1a\x04
****************************************************************
The information transmitted in this message is confidential and may be privileged. Any review, retransmission, dissemination, or other use of this information by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify Analogic Corporation immediately - by replying to this message or by sending an email to DeliveryErrors@analogic.com - and destroy all copies of this information, including any attachments, without reading or disclosing them.
Thank you.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: lstat returns bogus values.
2006-03-20 18:35 lstat returns bogus values linux-os (Dick Johnson)
@ 2006-03-20 20:35 ` Andreas Schwab
2006-03-20 21:42 ` Jan Engelhardt
2006-03-20 22:04 ` linux-os (Dick Johnson)
0 siblings, 2 replies; 5+ messages in thread
From: Andreas Schwab @ 2006-03-20 20:35 UTC (permalink / raw)
To: linux-os (Dick Johnson); +Cc: Linux kernel
"linux-os (Dick Johnson)" <linux-os@analogic.com> writes:
> The "kernelly-corrected" stuff should have been returned by lstat()
What should lstat return for a cdrom device node that has no medium?
Should "ls -l /dev/cdrom" block until you have inserted a CD?
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: lstat returns bogus values.
2006-03-20 20:35 ` Andreas Schwab
@ 2006-03-20 21:42 ` Jan Engelhardt
2006-03-20 22:04 ` linux-os (Dick Johnson)
1 sibling, 0 replies; 5+ messages in thread
From: Jan Engelhardt @ 2006-03-20 21:42 UTC (permalink / raw)
To: Andreas Schwab; +Cc: linux-os (Dick Johnson), Linux kernel
>> The "kernelly-corrected" stuff should have been returned by lstat()
>
>What should lstat return for a cdrom device node that has no medium?
>Should "ls -l /dev/cdrom" block until you have inserted a CD?
>
Given that /dev/cdrom is a symlink on many systems, it should just
dereference the symlink :)
Jan Engelhardt
--
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: lstat returns bogus values.
2006-03-20 20:35 ` Andreas Schwab
2006-03-20 21:42 ` Jan Engelhardt
@ 2006-03-20 22:04 ` linux-os (Dick Johnson)
2006-03-20 22:22 ` Andreas Schwab
1 sibling, 1 reply; 5+ messages in thread
From: linux-os (Dick Johnson) @ 2006-03-20 22:04 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Linux kernel
On Mon, 20 Mar 2006, Andreas Schwab wrote:
> "linux-os (Dick Johnson)" <linux-os@analogic.com> writes:
>
>> The "kernelly-corrected" stuff should have been returned by lstat()
>
> What should lstat return for a cdrom device node that has no medium?
> Should "ls -l /dev/cdrom" block until you have inserted a CD?
>
> Andreas.
>
`ls` only means something when there is a file-system so `ls`
is not appropriate until you have a file-system. Currently
`ls` on such a block device correctly returns the device type.
I think lstat should return -1 and the appropriate error code
should be in errno (perhaps ENOMEDIUM).
> --
> Andreas Schwab, SuSE Labs, schwab@suse.de
> SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
> PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
> "And now for something completely different."
>
Cheers,
Dick Johnson
Penguin : Linux version 2.6.15.4 on an i686 machine (5589.48 BogoMips).
Warning : 98.36% of all statistics are fiction, book release in April.
_
\x1a\x04
****************************************************************
The information transmitted in this message is confidential and may be privileged. Any review, retransmission, dissemination, or other use of this information by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify Analogic Corporation immediately - by replying to this message or by sending an email to DeliveryErrors@analogic.com - and destroy all copies of this information, including any attachments, without reading or disclosing them.
Thank you.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: lstat returns bogus values.
2006-03-20 22:04 ` linux-os (Dick Johnson)
@ 2006-03-20 22:22 ` Andreas Schwab
0 siblings, 0 replies; 5+ messages in thread
From: Andreas Schwab @ 2006-03-20 22:22 UTC (permalink / raw)
To: linux-os (Dick Johnson); +Cc: Linux kernel
"linux-os (Dick Johnson)" <linux-os@analogic.com> writes:
> `ls` only means something when there is a file-system so `ls`
> is not appropriate until you have a file-system.
ls just calls lstat on the device node. It doesn't read the device.
> I think lstat should return -1 and the appropriate error code
> should be in errno (perhaps ENOMEDIUM).
But the cdrom device node exists as a file.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-03-20 22:22 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-03-20 18:35 lstat returns bogus values linux-os (Dick Johnson)
2006-03-20 20:35 ` Andreas Schwab
2006-03-20 21:42 ` Jan Engelhardt
2006-03-20 22:04 ` linux-os (Dick Johnson)
2006-03-20 22:22 ` Andreas Schwab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®