write(2) to /dev/ad4 = EINVAL

Christoph Mallon christoph.mallon at gmx.de
Mon Jan 26 02:31:54 PST 2009


Lukasz Jaroszewski schrieb:
> 2009/1/26 Hans Petter Selasky <hselasky at c2i.net>:
>> On Monday 26 January 2009, Lukasz Jaroszewski wrote:
>>> Hi,
>>> after opening /dev/ad4 with success for O_RDWR, I am getting [EINVAL]
>>> from write(2), which according to man 2 write, means
>>>  ``     [EINVAL]           The pointer associated with d was
>>> negative.'', as you can see below it is not true, I have tried
>>> different block sizes, with same result.
>>>
>>> How can I write one byte to /dev/adN ?
>> Hi,
>>
>> You cannot write one byte to /dev/adN, I think. Harddisks are block based.
>> Please see:
>>
>> diskinfo -v ad4
>>
>> And especially the "sector size". When you seek and transfer data the offset
>> and length must be a factor of the "sector size" or "block size". See also
>> LBA, logical block address.
> 
> 
> Yes, I have tried with bs=512 and multiplies, no luck.
> 
> root@~(0)   diskinfo -v ad4
> ad4
>         512             # sectorsize
>         2029805568      # mediasize in bytes (1.9G)
>         3964464         # mediasize in sectors
>         3933            # Cylinders according to firmware.
>         16              # Heads according to firmware.
>         63              # Sectors according to firmware.
>         ad:CFx20CARDx200000190C # Disk ident.

It would be helpful, if you showed the actual code, instead of letting 
us guess what you are doing.


More information about the freebsd-hackers mailing list