To-do: Explain the situation with resizing block devices.
[libguestfs.git] / TODO
diff --git a/TODO b/TODO
index e2eaff0..323dc0b 100644 (file)
--- a/TODO
+++ b/TODO
@@ -6,6 +6,12 @@ https://www.redhat.com/archives/fedora-virt/2009-April/msg00114.html
 We badly need to actually implement the FTP server mentioned in the
 documentation.
 
+Or: Implement a FUSE-based filesystem.  See the FUSE mountlo
+project which does something similar, albeit only to single
+filesystems:
+
+http://sourceforge.net/project/showfiles.php?group_id=121684&package_id=150116
+
 ----------------------------------------------------------------------
 
 BufferIn and BufferOut should turn into <char *, int> and simple
@@ -17,3 +23,29 @@ Limit on transfers would still be 2MB for these types.
 ----------------------------------------------------------------------
 
 Implement febootstrap command.
+
+----------------------------------------------------------------------
+
+Complete the Haskell bindings (see discussion on haskell-cafe).
+
+----------------------------------------------------------------------
+
+Practically, resizing the partitions when a block device is resized
+isn't possible.  So for example it's not possible to resize a Fedora
+block device.  If you try to use sfdisk-N to change the boundaries of
+the existing partition to fill up the new space, you get an error that
+the partition is in use.
+
+The reason, I now think, is because LVM is using the partition as a
+PV, and this locks it as far as the kernel is concerned.
+
+Removing the PV [which is what we do in the test suite] isn't
+desirable if the PV contains data you care about.  Rebooting the qemu
+subprocess after the partition table change works, but isn't very
+cool.  I believe what we need to do is to temporarily reconfigure LVM
+(using /etc/lvm/lvm.conf) to ignore the PV, vgscan (which will then
+ignore the PV), make the changes to the partition table, then set the
+LVM configuration back and do a final vgscan.
+
+Need to test the above, and find a nice way to present it through
+the API.