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>