To-do: Explain the situation with resizing block devices.
[libguestfs.git] / TODO
diff --git a/TODO b/TODO
index 2afb0a7..323dc0b 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,43 +1,51 @@
-aug_load, aug_defvar, aug_defnode: These are not present in some
-older versions of Augeas.
+Ideas for the Python bindings:
+https://www.redhat.com/archives/fedora-virt/2009-April/msg00114.html
 
 ----------------------------------------------------------------------
 
 We badly need to actually implement the FTP server mentioned in the
 documentation.
 
-----------------------------------------------------------------------
-
-Use a real scanner in guestfish.  Suggest:
+Or: Implement a FUSE-based filesystem.  See the FUSE mountlo
+project which does something similar, albeit only to single
+filesystems:
 
-    "..."      strings
-    '...'
-    [...]      matching [ and ]
+http://sourceforge.net/project/showfiles.php?group_id=121684&package_id=150116
 
 ----------------------------------------------------------------------
 
-(From Ján ONDREJ (SAL))
-
-We should provide a way to stream partitions in and out.
-
-Thus:
+BufferIn and BufferOut should turn into <char *, int> and simple
+strings in other languages that can handle 8 bit clean strings.
+Limit on transfers would still be 2MB for these types.
+ - then implement write-file properly
+ - and implement read-file
 
-dd-out /dev/sda1 > [some file]
-
-dd-in /dev/sda1 < [some file]
+----------------------------------------------------------------------
 
-Along with this, we need to be able to call the resize2fs program to
-resize the filesystem in case it is larger or smaller than the target
-partition.
+Implement febootstrap command.
 
-Another useful feature would be to allow rsync to/from a stream for
-whole filesystems and subdirectories.
+----------------------------------------------------------------------
 
-The current protocol is message-oriented and doesn't support
-streaming.  But it's simple enough that we could add this.
+Complete the Haskell bindings (see discussion on haskell-cafe).
 
 ----------------------------------------------------------------------
 
-(From Ján ONDREJ (SAL))
-
-guestfish edit <filename>
+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.