bcwipe won't wipe a block device...

Aaron Peterson aaron at alpete.com
Thu Feb 19 13:21:47 PST 2004


> I'm no expert either, but that never stopped me from commenting on a topic
> :-).
>
> Here's the relevant part.  ktrace shows that bcwipe has opened /dev/da0.
>
>  13661 bcwipe   CALL  access(0xbfbfee71,0x6)
>  13661 bcwipe   NAMI  "/dev/da0"
>  13661 bcwipe   RET   access 0
>  13661 bcwipe   CALL  open(0xbfbfee71,0x82,0xbfbfee71)
>  13661 bcwipe   NAMI  "/dev/da0"
>  13661 bcwipe   RET   open 3
>
> I haven't looked up what the lseek syscall does, but I suspect
> that you are seek to the start of the file here and you have
> succeeded
>
>  13661 bcwipe   CALL  lseek(0x3,0,0,0,0x2)
>  13661 bcwipe   RET   lseek 0
>
> Here'w where the problems begin.  It looks like you are seeking
> beyond the end of the device.  lseek fails and bcwipe isn't
> handling the failure correctly.
>
>  13661 bcwipe   CALL  lseek(0x3,0,0xffffffff,0x7fffffff,0)
>  13661 bcwipe   RET   lseek -1/0xffffffff
>  13661 bcwipe   CALL  read(0x3,0xbfbeeba0,0x1)
>  13661 bcwipe   RET   read -1 errno 22 Invalid argument

Just for fun, here's the kdump from the "dd if=/dev/urandom bs=1024
count=5 of=/dev/da0" which was successful:

http://www.alpete.com/dd.da0.kdump.txt

Looks like the open call, plus some:

13760 dd       CALL  open(0x804f063,0x602,0x1b6)
13760 dd       NAMI  "/dev/da0"
13760 dd       RET   open 4
13760 dd       CALL  fstat(0x4,0xbfbfeca0)
13760 dd       RET   fstat 0
13760 dd       CALL  ioctl(0x4,FIODTYPE,0xbfbfec9c)
13760 dd       RET   ioctl 0

and i don't see much else useful in there...

sooo....  how might i fix this?  learn C and fix bcwipe?  heh...


More information about the freebsd-current mailing list