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.
> 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
Cordula's Web. http://www.cordula.ws/
More information about the freebsd-questions