Depends on your definition, in C a partial read or write isn't considered an error. You can't have both 8 bytes read and also get an EIO, it would have to be one or the other. It depends on the device and the why the read/write stopped that determines if you get an error like EIO or it just reports less bytes than you asked.