Currently NetBSD has three programming interfaces to determine
disk geometry from userland.

- ioctl DIOCGDINFO. The traditional interface, limited to 32bit
  numbers or disks < 2TB because its data structure corresponds
  to the binary on-disk structure.

- the "get-properties" command to the drvctl(4) driver. drvctl(4)
  is missing on some ports and some disk drivers don't make
  geometry properties available.

- ioctl DIOCGWEDGEINFO. Works only for wedges but not for the
  disk drivers themselves. This is fine for operations on
  data blocks of a wedge but doesn't help e.g. partitioning
  tools. It also does not provide the sector size.

To solve this, we could

- create a new DIOCGDINFO version that uses larger numbers. AFAIK
  that is about what OpenBSD does. The on-disk structure could be
  translated but writing a label might be incompatible if partitions
  are defined beyond the 2TB limit.

- make drvctl(4) mandatory and make all disk drivers provide
  geometry properties.

- make DIOCGWEDGEINFO available for the disk drivers and
  ignore wedge-related information.

- import FreeBSD DIOCGMEDIASIZE (and DIOCGSECTORSIZE) ioctls.


Comments?



-- 
                                Michael van Elst
Internet: mlel...@serpens.de
                                "A potential Snark may lurk in every tree."

Reply via email to