Date: Wed, 14 Sep 2016 09:05:28 -0600 From: Alan Somers <asomers@freebsd.org> To: Matthias Andree <mandree@freebsd.org> Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Re: User-space API to inquire block alignment requirements for open file descriptor? Message-ID: <CAOtMX2hOfp=_w4LuEhqah4AEhrZ6rpPRzYSMKtfdaREioPEZGw@mail.gmail.com> In-Reply-To: <69e12778-75d0-fd79-2dc4-a7727ccab522@FreeBSD.org> References: <c9063edd-a3c1-fce4-483c-a192addc6b86@FreeBSD.org> <20586.1473664368@critter.freebsd.dk> <69e12778-75d0-fd79-2dc4-a7727ccab522@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Sep 14, 2016 at 12:03 AM, Matthias Andree <mandree@freebsd.org> wrote: > Am 12.09.2016 um 09:12 schrieb Poul-Henning Kamp: >> -------- >> In message <c9063edd-a3c1-fce4-483c-a192addc6b86@FreeBSD.org>, Matthias Andree >> writes: >>> Greetings, >>> >>> given an open file descriptor, do we have a system interface to inquire >>> about the block size of the underlying devices? In the past, we used to >>> 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. Correct. DIOCGSTRIPESIZE is what you want. A quick tests shows that it works correctly for both gmirror and zvols as well as native disks. > > > 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. Sorry, I don't know. > > > Thanks, > > Matthias -Alan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2hOfp=_w4LuEhqah4AEhrZ6rpPRzYSMKtfdaREioPEZGw>