Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Sep 2016 08:03:44 +0200
From:      Matthias Andree <mandree@FreeBSD.org>
To:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: User-space API to inquire block alignment requirements for open file descriptor?
Message-ID:  <69e12778-75d0-fd79-2dc4-a7727ccab522@FreeBSD.org>
In-Reply-To: <20586.1473664368@critter.freebsd.dk>
References:  <c9063edd-a3c1-fce4-483c-a192addc6b86@FreeBSD.org> <20586.1473664368@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
Am 12.09.2016 um 09:12 schrieb Poul-Henning Kamp:
> --------
> In message <c9063edd-a3c1-fce4-483c-a192addc6b86@FreeBSD.org>, Matthias=
 Andree=20
> writes:
>> Greetings,
>>
>> given an open file descriptor, do we have a system interface to inquir=
e
>> about the block size of the underlying devices? In the past, we used t=
o
>> deal with 512-byte blocks, but how about drives using 4096-byte blocks=
?
> DIOCGSECTORSIZE in sys/disk.h
>
Thanks Alan, Eugene, Poul-Henning.


Now for the next two interesting questions for file system utilities
(think sysutils/e2fsprogs) running on advanced-format (4096-block)
drives - many provide internal read-modify-write approaches to emulate
512-byte blocks at substantial performance impact.

Ted Y. Ts'o, the upstream e2fsprogs maintainer, asked me this question:

> So how to fill in this matrix?
>
>       	              HDD     Linux             Mac OS                  =
    FreeBSD
> Logical Block Size    512     BLKGETSSZGET	DKIOCGETBLOCKSIZE           =
DIOCGSECTORSIZE
> Physical Block Size  4096     BLKGETPSZGET	DKIOCGETPHYSICALBLOCKSIZE   =
?

I have found one hint in the BSD forums that in certain situations the
DIOCGSTRIPESIZE and DIOCGSTRIPEOFFSET can contain the latter, but on
RAID it often does not.


And while we're here, and for the records:

how do we query the *erase block size* on flash (solid-state) drives?
It's often much bigger than a sector size.


Thanks,

Matthias





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69e12778-75d0-fd79-2dc4-a7727ccab522>