diff options
-rw-r--r-- | open_issues/blkrrpart_ioctl.mdwn | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/open_issues/blkrrpart_ioctl.mdwn b/open_issues/blkrrpart_ioctl.mdwn new file mode 100644 index 00000000..6a4c0378 --- /dev/null +++ b/open_issues/blkrrpart_ioctl.mdwn @@ -0,0 +1,32 @@ +[[meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU_Free_Documentation_License|/fdl]]."]]"""]] + +[[meta title="BLKRRPART IOCTL"]] + +[[tag open_issue_glibc open_issue_hurd open_issue_gnumach]] + +Just like in other Unix systems one can, for example, use `fdisk` or `parted` +to manage hard disks' partition tables. After doing changes to a disk's +partition table, the kernel has to be instructed to reinitialize its internal +data structures: where does a partition begin, where does it end, etc. + +With `fdisk` and friends this is done on Linux with the `BLKRRPART` IOCTL, +which is used to tell the kernel to reread the disk's partition table. + +`parted` also uses this interface on Linux, but for GNU Hurd, the corresponding +function, `libparted/arch/gnu.c (gnu_disk_commit)`, doesn't do anything at all. +The infrastructure in [[GNU_Mach|microkernel/mach/gnumach]] is already there, +`linux/src/drivers/block/ide.c (ide_ioctl) <BLKRRPART>` and +`linux/src/drivers/scsi/sd_ioctl.c (sd_ioctl) <BLKRRPART>`, but the IOCTL needs +to be routed from `libparted` through [[glibc]]'s Hurd IOCTL interface, through +Hurd's [[hurd/libstore]], to [[GNU_Mach|microkernel/mach/gnumach]]. + +This is not a huge project, and actually one that is suitable for someone who +wants to start with hacking the system. |