Writes to Hard Disk Going Beyond Capacity

C. P. Ghost cpghost at cordula.ws
Sat Jul 10 16:03:33 UTC 2010


On Sat, Jul 10, 2010 at 12:53 PM, Patrick Donnelly <batrick at batbytes.com> wrote:
> On Sat, Jul 10, 2010 at 4:01 AM, Giorgos Keramidas
> <keramida at ceid.upatras.gr> wrote:
>> On Sat, 10 Jul 2010 03:10:31 -0400, Patrick Donnelly <batrick at batbytes.com> wrote:
>>> Hi List,
>>>
>>> I have a strange problem in a C program I wrote. I open a hard
>>> disk character file (/dev/ad1) and attempt to write over the
>>> entire disk. I expect the last write that would go beyond the
>>> hard disk length (capacity) to return with an error but instead
>>> the write succeeds.  This happens for hundreds of gigabytes
>>> beyond the file (hard drive) length. What could be wrong? (This
>>> program works fine on Linux. The last write that would go
>>> beyond the end of the hard drive returns with -1.)
>>>
>>> Thanks for any help,
>>
>> Can we see the exact source code of the program?  What you
>> describe might work if the file has holes inside it.
>
> http://www.batbytes.com/destroy
>
> Specifically, after filling the hard drive it will begin to rapidly
> "write" where the throughput of the writes is about 10 GB/s (obviously
> not going to the hard drive).

Are you aware of short writes?

static int write_buf (int fd, const char *buf, size_t s)
{
  ssize_t r = write(fd, buf, s);
  if (r == -1)
    fprintf(stderr, "write error: %s\n", strerror(errno));
  return r >= 0;
}

What if write(2) returns less than s, but not -1?

> --
> - Patrick Donnelly

-cpghost.

-- 
Cordula's Web. http://www.cordula.ws/


More information about the freebsd-questions mailing list