X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=TODO;h=6a89409ec4591f065b6d24ababf0835ba0641d94;hp=3264e3a0f56c1c189d846149611a8e7aabb1f61e;hb=e9f5144537a4d89cc875bce42b269d1e2b119d8f;hpb=88be1d399915c716ff312f29a7d3f3afcfd509f8 diff --git a/TODO b/TODO index 3264e3a..6a89409 100644 --- a/TODO +++ b/TODO @@ -49,53 +49,132 @@ Use virtio_blk by default. It's faster and more natural. Unfortunately it seems like this will rename all devices - see next item. +Note: virtio_blk *IS* supported by all our minimum platforms, +ie. CentOS 5.3, Fedora 11, Debian. + ---------------------------------------------------------------------- -"Device independent" naming for devices. +"Standalone/local mode" + +Instead of running guestfsd (the daemon) inside qemu, there should be +an option to just run guestfsd directly. + +The architecture in this mode would look like: + + +------------------+ + | main program | + |------------------| + | libguestfs | + +--------^---------+ + | | reply + cmd | | + +----v-------------+ + | guestfsd | + +------------------+ + +Notes: -With a Fedora-based appliance, using libata driver, devices have -"SCSI" names like /dev/sda. +(1) This only makes sense if we are running as root. -With an EPEL-based appliance, using old ide driver, devices have names -like /dev/hda. +(2) There is no console / kernel messages in this configuration, but +we might consider capturing stderr from the daemon. -If we use virtio_blk, devices will have names like /dev/vda. +(3) guestfs_config and guestfs_add_drive become no-ops. -What a mess. +Obviously in this configuration, commands are run directly on the +local machine's disks. You could just run the commands themselves +directly, but libguestfs provides a convenient API and language +bindings. Also deals with tricky stuff like parsing the output of the +LVM commands. Also we get to leverage other code such as +virt-inspector. -So the idea would be to add a device independent naming scheme, such -as the one used by grub: +This is mainly useful from live CDs, ie. virt-p2v. - "(hdX)" X = 0 means 'a', X = 1 means 'b' and so on. - "(hdX,Y)" Device X, partition Y (in grub, this counts from 0 which is - deeply confusing). +Should we bother having the daemon at all and just link the guestfsd +code directly into libguestfs? -There would have to be a very simple rule. If guestfsd was expecting -a /dev block device or partition name, then the alternate form can be -used, and we would just look it up using the normal output of -guestfs_list_devices. +---------------------------------------------------------------------- + +PPC problems: + + ppc (32 bit) works with qemu from git, however there is no serial console -Maybe best is to use /dev/sda as the "standard" naming. That -shouldn't cause conflicts in the appliance because we tightly control -what drivers are available. + ppc64 requires extra parameters: + -M mac99 -cpu ppc64 + however it still fails: + invalid/unsupported opcode: 01 - 01 - 1a (06301e83) 00000000018c2738 1 + invalid bits: 00400000 for opcode: 0b - 19 - 15 (2d746572) 0000000000009230 -Note there's a lot of hackery that currently exists in tests.c which -could be *removed* if we made this change. + no serial console in ppc or ppc64 because no one can tell us what + console=ttyXX option to use + +---------------------------------------------------------------------- -Open: Should the substitution be done in the library layer or in the -daemon? +Supermin appliance should be moved into febootstrap. ---------------------------------------------------------------------- -Qemu options -- After discussion with the KVM developers, they have -recommended some flags which will improve the safety and reliability -of KVM. Need to test that these also work under qemu (or at least, do -no harm): +Extra commands / functionality: + + General glibc / core programs: + chgrp + grep (do it locally using pipe?) + dd (?) + ln / ln -s + readlink + utime / utimes / futimes / futimens / l.. + more mk*temp calls + some sort of alloc/fallocate/posix_fallocate call to create empty space + realpath + trunc[ate??] + getfattr (also useful because gives us access to NTFS datastreams) + setfattr + + ext2 properties: + chattr + lsattr + badblocks + blkid + debugfs + dumpe2fs + e2image + e2undo + filefrag + findfs + logsave + mklost+found + + SELinux: + chcat + restorecon + ch??? + + Oddball: + pivot_root + fts(3) / ftw(3) --no-hpet HPET support is broken and should be disabled. +---------------------------------------------------------------------- + +Allow swap space from the guest to be used. Is it a good idea? + +---------------------------------------------------------------------- + +Need a way to query a binary or library file for its architecture. +Using objdump or readelf? +What about non-ELF files (eg. Windows, BSD). + +To do this properly requires some serious logic, eg. to cover Linux +and Windows we'd need objdump and i686-pc-mingw32-objdump, and more to +cover a.out, COFF and 64 bit Windows. Therefore this cannot be done +inside the daemon, and should be done by a separate, external program +similar to virt-inspector. + +Probably we should go all the way and have virt-inspector able to +determine kernel and userspace architectures of guests. + +---------------------------------------------------------------------- --rtc-td-hack Keeps the rtc clock source track time correctly. +Other initrd-* commands, such as: --drive file=...,if=[ide|virtio],cache=off - cache=off is necessary to improve reliability in the - event of a system crash when writing. +initrd-extract +initrd-replace