ext2fs crash in -current (r218056)
Peter Jeremy
peterjeremy at acm.org
Thu Feb 3 23:33:28 UTC 2011
On 2011-Feb-03 07:13:18 -0800, Jeremy Chadwick <freebsd at jdc.parodius.com> wrote:
>The offset and the length are both explicitly casted and printed as
>signed numbers here.
>
>For me anyway, the next question is "what are bio_offset and bio_length
>defined as?" (indirectly, "why the explicit cast?"). They're both
>declared as part of struct bio in src/sys/sys/bio.h as shown:
>
> 71 struct bio {
>...
> 78 off_t bio_offset; /* Offset into file. */
>...
> 92 off_t bio_length; /* Like bio_bcount */
>...
off_t is always a 64-bit signed int and there's no printf(9) length
modifier to handle this particular situation (it's typically 'long' on
64-bit archs and 'long long' on 32-bit archs). Instead it's cast to a
signed int which is at least as large that does have a suitable length
modifier (intmax_t can be printed using %jd).
--
Peter Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20110203/745bb949/attachment.pgp
More information about the freebsd-fs
mailing list