write(2) to /dev/ad4 = EINVAL
Hans Petter Selasky
hselasky at c2i.net
Mon Jan 26 02:31:29 PST 2009
On Monday 26 January 2009, Lukasz Jaroszewski wrote:
> 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.
>
And if you add a "lseek(f, 0, SEEK_SET);" after open?
--HPS
More information about the freebsd-hackers
mailing list