Re: Why is SECTOR_SIZE = 512 inside kernel ?
On Mon, Aug 17, 2015 at 10:46 PM, <Valdis.Kletnieks@vt.edu> wrote:
On Mon, 17 Aug 2015 16:35:59 +0530, Navin P said:
Hi, Why is SECTOR_SIZE 512 ?
Because most fixed-block devices presented a logical interface in terms of 512 byte sectors. (IBM's count-key-data format is an example of a non-fixed block device).
Is it going to change or is it cast in stone ?
As you have probably figured out, high-capacity devices have often moved to 4K physical blocks to avoid wasting so much room between blocks (the hardware format includes a preamble to each block and a postamble, and dead space in between, it uses more space than you think).
However, as long as there are still devices out there that have 512 byte blocks, it's not changing. And it still won't change unless there's a good reason to change it (hint - how many places in the kernel have hidden assumptions about the size of SECTOR_SIZE being 9 bits worth?)
I posted this to http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg956881.html avoided cross posting. Looks like this is cast in stone at kernel . I was thinking of doing sectors written * hw_sector_size. But the sectors counters in /proc/diskstats are actually 512 byte sections even for 4kN disks. That way userspace programs are immune to underlying sector. Wish that page_size was also same :) There are lot of places like 9 bits . http://lxr.free-electrons.com/source/block/blk-lib.c bio->bi_iter.bi_size = req_sects << 9; http://lxr.free-electrons.com/source/include/linux/blkdev.h sprinkled with 9 . I'm assuming the magic number 9 here is SECTOR_SIZE. :) The hw_sector_size must be cosmetic in that sense or just to you tell you that "your drive really is 4kn" or "512e".
participants (1)
-
Navin P