f2dce827 | 01-Jun-2017 |
Thomas Lamprecht <t.lamprecht@proxmox.com> |
qemu-ga: add missing libpcre to MSI build
glib depends on libpcre which was not shipped with the MSI, thus starting of the qemu-ga.exe failed with the respective error message.
Tell WIXL to ship th
qemu-ga: add missing libpcre to MSI build
glib depends on libpcre which was not shipped with the MSI, thus starting of the qemu-ga.exe failed with the respective error message.
Tell WIXL to ship this library with the MSI to avoid this problem.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> CC: Stefan Weil <sw@weilnetz.de> CC: Michael Roth <mdroth@linux.vnet.ibm.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
009f38d9 | 05-Jul-2017 |
Daniel Rempel <daniel@daynix.com> |
qga-win: fix installation on localized windows
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1357789 Replace hardcoded user and group names ("Administrators", "SYSTEM") with the ones acquired fro
qga-win: fix installation on localized windows
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1357789 Replace hardcoded user and group names ("Administrators", "SYSTEM") with the ones acquired from system. Windows uses localized strings for these names and it may cause the installation to fail. Windows has Well-known SIDs for "Administrators" group and "SYSTEM" user so they were used to identify required users and groups. Well-known SIDs: https://support.microsoft.com/en-us/help/243330/well-known-security-identifiers-in-windows-operating-systems
Signed-off-by: Daniel Rempel <daniel@daynix.com> Signed-off-by: Sameeh Jubran <sjubran@redhat.com> Reviewed-by: Sameeh Jubran <sameeh@daynix.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
9bd8e933 | 22-Jun-2017 |
Li Ping <li.ping288@zte.com.cn> |
qga-win32: Fix memory leak of device information set
The caller of SetupDiGetClassDevs must delete the returned device information set when it is no longer needed by calling SetupDiDestroyDeviceInf
qga-win32: Fix memory leak of device information set
The caller of SetupDiGetClassDevs must delete the returned device information set when it is no longer needed by calling SetupDiDestroyDeviceInfoList.
Signed-off-by: Li Ping <li.ping288@zte.com.cn> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
show more ...
|
01b2ffce | 07-Jun-2017 |
Marc-André Lureau <marcandre.lureau@redhat.com> |
qapi: merge QInt and QFloat in QNum
We would like to use a same QObject type to represent numbers, whether they are int, uint, or floats. Getters will allow some compatibility between the various ty
qapi: merge QInt and QFloat in QNum
We would like to use a same QObject type to represent numbers, whether they are int, uint, or floats. Getters will allow some compatibility between the various types if the number fits other representations.
Add a few more tests while at it.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20170607163635.17635-7-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> [parse_stats_intervals() simplified a bit, comment in test_visitor_in_int_overflow() tidied up, suppress bogus warnings] Signed-off-by: Markus Armbruster <armbru@redhat.com>
show more ...
|
7064024d | 26-May-2017 |
Marc-André Lureau <marcandre.lureau@redhat.com> |
qemu-ga: remove useless allocation
There is no need to duplicate a fixed string.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-
qemu-ga: remove useless allocation
There is no need to duplicate a fixed string.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
show more ...
|
f465706e | 10-May-2017 |
Stefan Hajnoczi <stefanha@redhat.com> |
Merge remote-tracking branch 'mjt/tags/trivial-patches-fetch' into staging
trivial patches for 2017-05-10
# gpg: Signature made Wed 10 May 2017 03:19:30 AM EDT # gpg: using RSA key 0
Merge remote-tracking branch 'mjt/tags/trivial-patches-fetch' into staging
trivial patches for 2017-05-10
# gpg: Signature made Wed 10 May 2017 03:19:30 AM EDT # gpg: using RSA key 0x701B4F6B1A693E59 # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: 7B73 BAD6 8BE7 A2C2 8931 4B22 701B 4F6B 1A69 3E59
* mjt/tags/trivial-patches-fetch: (23 commits) tests: Remove redundant assignment MAINTAINERS: Update paths for AioContext implementation MAINTAINERS: Update paths for main loop jazz_led: fix bad snprintf tests: Ignore another built executable (test-hmp) scripts: Switch to more portable Perl shebang scripts/qemu-binfmt-conf.sh: Fix shell portability issue virtfs: allow a device id to be specified in the -virtfs option hw/core/generic-loader: Fix crash when running without CPU virtio-blk: Remove useless condition around g_free() qemu-doc: Fix broken URLs of amnhltm.zip and dosidle210.zip use _Static_assert in QEMU_BUILD_BUG_ON channel-file: fix wrong parameter comments block: Make 'replication_state' an enum util: Use g_malloc/g_free in envlist.c qga: fix compiler warnings (clang 5) device_tree: fix compiler warnings (clang 5) usb-ccid: make ccid_write_data_block() cope with null buffers tests: Ignore more test executables Add 'none' as type for drive's if option ...
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
show more ...
|
bd269ebc | 26-Apr-2017 |
Markus Armbruster <armbru@redhat.com> |
sockets: Limit SocketAddressLegacy to external interfaces
SocketAddressLegacy is a simple union, and simple unions are awkward: they have their variant members wrapped in a "data" object on the wire
sockets: Limit SocketAddressLegacy to external interfaces
SocketAddressLegacy is a simple union, and simple unions are awkward: they have their variant members wrapped in a "data" object on the wire, and require additional indirections in C. SocketAddress is the equivalent flat union. Convert all users of SocketAddressLegacy to SocketAddress, except for existing external interfaces.
See also commit fce5d53..9445673 and 85a82e8..c5f1ae3.
Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1493192202-3184-7-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> [Minor editing accident fixed, commit message and a comment tweaked]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
show more ...
|
dfd100f2 | 26-Apr-2017 |
Markus Armbruster <armbru@redhat.com> |
sockets: Rename SocketAddress to SocketAddressLegacy
The next commit will rename SocketAddressFlat to SocketAddress, and the commit after that will replace most uses of SocketAddressLegacy by Socket
sockets: Rename SocketAddress to SocketAddressLegacy
The next commit will rename SocketAddressFlat to SocketAddress, and the commit after that will replace most uses of SocketAddressLegacy by SocketAddress, replacing most of this commit's renames right back.
Note that checkpatch emits a few "line over 80 characters" warnings. The long lines are all temporary; the SocketAddressLegacy replacement will shorten them again.
Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1493192202-3184-5-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
show more ...
|
9879f5ac | 07-Apr-2017 |
Philippe Mathieu-Daudé <f4bug@amsat.org> |
qga: fix compiler warnings (clang 5)
static code analyzer complain:
qga/commands-posix.c:2127:9: warning: Null pointer passed as an argument to a 'nonnull' parameter closedir(dp); ^
qga: fix compiler warnings (clang 5)
static code analyzer complain:
qga/commands-posix.c:2127:9: warning: Null pointer passed as an argument to a 'nonnull' parameter closedir(dp); ^~~~~~~~~~~~
Reported-by: Clang Static Analyzer Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
show more ...
|
53c58e64 | 19-Apr-2017 |
Vinzenz Feenstra <vfeenstr@redhat.com> |
qga: Add `guest-get-timezone` command
Adds a new command `guest-get-timezone` reporting the currently configured timezone on the system. The information on what timezone is currently is configured i
qga: Add `guest-get-timezone` command
Adds a new command `guest-get-timezone` reporting the currently configured timezone on the system. The information on what timezone is currently is configured is useful in case of Windows VMs where the offset of the hardware clock is required to have the same offset. This can be used for management systems like `oVirt` to detect the timezone difference and warn administrators of the misconfiguration.
Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com> Reviewed-by: Sameeh Jubran <sameeh@daynix.com> Tested-by: Sameeh Jubran <sameeh@daynix.com> * moved stub implementation to end of function for consistency * document that timezone names are for informational use only. Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
161a56a9 | 19-Apr-2017 |
Vinzenz Feenstra <vfeenstr@redhat.com> |
qga: Add 'guest-get-users' command
A command that will list all currently logged in users, and the time since when they are logged in.
Examples:
virsh # qemu-agent-command F25 '{ "execute": "guest
qga: Add 'guest-get-users' command
A command that will list all currently logged in users, and the time since when they are logged in.
Examples:
virsh # qemu-agent-command F25 '{ "execute": "guest-get-users" }' {"return":[{"login-time":1490622289.903835,"user":"root"}]}
virsh # qemu-agent-command Win2k12r2 '{ "execute": "guest-get-users" }' {"return":[{"login-time":1490351044.670552,"domain":"LADIDA", "user":"Administrator"}]}
Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com> * make g_hash_table_contains compat func inline to avoid unused warnings Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
1dbfbc17 | 03-Apr-2017 |
Marc-André Lureau <marcandre.lureau@redhat.com> |
qga: improve fsfreeze documentations
Some users find the fsfreeze behaviour confusing. Add some notes about invalid mount points and Windows usage.
Related to: https://bugzilla.redhat.com/show_bug.
qga: improve fsfreeze documentations
Some users find the fsfreeze behaviour confusing. Add some notes about invalid mount points and Windows usage.
Related to: https://bugzilla.redhat.com/show_bug.cgi?id=1436976
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Vinzenz Feenstra <vfeenstr@redhat.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
0a3d197a | 04-Apr-2017 |
Vinzenz Feenstra <vfeenstr@redhat.com> |
qga: Add 'guest-get-host-name' command
Retrieving the guest host name is a very useful feature for virtual management systems. This information can help to have more user friendly VM access details,
qga: Add 'guest-get-host-name' command
Retrieving the guest host name is a very useful feature for virtual management systems. This information can help to have more user friendly VM access details, instead of an IP there would be the host name. Also the host name reported can be used to have automated checks for valid SSL certificates.
virsh # qemu-agent-command F25 '{ "execute": "guest-get-host-name" }' {"return":{"host-name":"F25.lab.evilissimo.net"}}
Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com> * minor whitespace fix-ups Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
15296053 | 05-Apr-2017 |
Sameeh Jubran <sameeh@daynix.com> |
qga-win: Fix Event Viewer errors caused by qemu-ga
When the command "guest-fsfreeze-freeze" is executed it causes the VSS service to log the error below in the Event Viewer. This error is caused by
qga-win: Fix Event Viewer errors caused by qemu-ga
When the command "guest-fsfreeze-freeze" is executed it causes the VSS service to log the error below in the Event Viewer. This error is caused by an issue in the function "CommitSnapshots" in provider.cpp:
* When VSS_TIMEOUT_MSEC expires the funtion returns E_ABORT. This causes the error #12293.
|event id| error | * 12293 : Volume Shadow Copy Service error: Error calling a routine on a Shadow Copy Provider {00000000-0000-0000-0000-000000000000}. Routine details CommitSnapshots [hr = 0x80004004, Operation aborted.
Signed-off-by: Sameeh Jubran <sameeh@daynix.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
94d81ae8 | 11-Apr-2017 |
Sameeh Jubran <sameeh@daynix.com> |
qga-win: Fix a bug where qemu-ga service is stuck during stop operation
After triggering a freeze command without any following thaw command, qemu-ga will not respond to stop operation. This behavio
qga-win: Fix a bug where qemu-ga service is stuck during stop operation
After triggering a freeze command without any following thaw command, qemu-ga will not respond to stop operation. This behaviour is wanted on Linux as there is no time limit for a freeze command and we want to prevent quitting in the middle of freeze, on the other hand on Windows the time limit for freeze is 10 seconds, so we should wait for the timeout, thaw the file system and quit.
Signed-off-by: Sameeh Jubran <sameeh@daynix.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
54858553 | 11-Apr-2017 |
Sameeh Jubran <sameeh@daynix.com> |
qga-win: Enable 'can-offline' field in 'guest-get-vcpus' reply
The QGA schema states:
@can-offline: Whether offlining the VCPU is possible. This member is always filled in by the gue
qga-win: Enable 'can-offline' field in 'guest-get-vcpus' reply
The QGA schema states:
@can-offline: Whether offlining the VCPU is possible. This member is always filled in by the guest agent when the structure is returned, and always ignored on input (hence it can be omitted then).
Currently 'can-offline' is missing entirely from the reply. This causes errors in libvirt which is expecting the reply to be compliant with the schema docs.
BZ#1438735: https://bugzilla.redhat.com/show_bug.cgi?id=1438735
Signed-off-by: Sameeh Jubran <sameeh@daynix.com> Reviewed-by: Eric Blake <eblake@redhat.com> Cc: qemu-stable@nongnu.org Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
f342cc93 | 23-Mar-2017 |
Sameeh Jubran <sameeh@daynix.com> |
qemu-ga: Make QGA VSS provider service run only when needed
Currently the service runs in background on boot even though it is not needed and once it is running it never stops. The service needs to
qemu-ga: Make QGA VSS provider service run only when needed
Currently the service runs in background on boot even though it is not needed and once it is running it never stops. The service needs to be running only during freeze operation and it should be stopped after executing thaw.
Signed-off-by: Sameeh Jubran <sameeh@daynix.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|
4462a530 | 21-Apr-2017 |
Fam Zheng <famz@redhat.com> |
qga: Make errp the last parameter of qga_vss_fsfreeze
Signed-off-by: Fam Zheng <famz@redhat.com> Message-Id: <20170421122710.15373-14-famz@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.c
qga: Make errp the last parameter of qga_vss_fsfreeze
Signed-off-by: Fam Zheng <famz@redhat.com> Message-Id: <20170421122710.15373-14-famz@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
show more ...
|
8251a72f | 23-Mar-2017 |
Michael Roth <mdroth@linux.vnet.ibm.com> |
qga: don't fail if mount doesn't have slave devices
In some cases the slave devices of a virtual block device are tracked by the parent in the corresponding sysfs node. For instance, if we have a lo
qga: don't fail if mount doesn't have slave devices
In some cases the slave devices of a virtual block device are tracked by the parent in the corresponding sysfs node. For instance, if we have a loop-back mount of the form:
/dev/loop3p1 on /home/mdroth/mnt type ext4 (rw,relatime,data=ordered)
this will be reflected in sysfs as:
/sys/devices/virtual/block/loop3/ ... /sys/devices/virtual/block/loop3/slaves /sys/devices/virtual/block/loop3/loop3p1
The current code however assumes the mounted virtual block device, loop3p1 in this case, contains the slaves directory, and reports an error otherwise. This breaks 'make check' in certain environments.
Fix this by simply skipping attempts to generate disk topology information in these cases. Since this information is documented in QAPI as optionally-reported, this should be ok from an API perspective.
In the future, this can possibly be improved upon by collecting topology information from the parent in these cases.
Reported-by: Peter Maydell <peter.maydell@linaro.org> Cc: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> Tested-by: Peter Maydell <peter.maydell@linaro.org>
show more ...
|
53fabd4b | 16-Mar-2017 |
Paolo Bonzini <pbonzini@redhat.com> |
qemu-ga: obey LISTEN_PID when using systemd socket activation
qemu-ga's socket activation support was not obeying the LISTEN_PID environment variable, which avoids that a process uses a socket-activ
qemu-ga: obey LISTEN_PID when using systemd socket activation
qemu-ga's socket activation support was not obeying the LISTEN_PID environment variable, which avoids that a process uses a socket-activation file descriptor meant for its parent.
Mess can for example ensue if a process forks a children before consuming the socket-activation file descriptor and therefore setting O_CLOEXEC on it.
Luckily, qemu-nbd also got socket activation code, and its copy does support LISTEN_PID. Some extra fixups are needed to ensure that the code can be used for both, but that's what this patch does. The main change is to replace get_listen_fds's "consume" argument with the FIRST_SOCKET_ACTIVATION_FD macro from the qemu-nbd code.
Cc: "Richard W.M. Jones" <rjones@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
show more ...
|
1d8bda12 | 15-Mar-2017 |
Markus Armbruster <armbru@redhat.com> |
qapi: The #optional tag is redundant, drop
We traditionally mark optional members #optional in the doc comment. Before commit 3313b61, this was entirely manual.
Commit 3313b61 added some automation
qapi: The #optional tag is redundant, drop
We traditionally mark optional members #optional in the doc comment. Before commit 3313b61, this was entirely manual.
Commit 3313b61 added some automation because its qapi2texi.py relied on #optional to determine whether a member is optional. This is no longer the case since the previous commit: the only thing qapi2texi.py still does with #optional is stripping it out. We still reject bogus qapi-schema.json and six places for qga/qapi-schema.json.
Thus, you can't actually rely on #optional to see whether something is optional. Yet we still make people add it manually. That's just busy-work.
Drop the code to check, fix up and strip out #optional, along with all instances of #optional. To keep it out, add code to reject it, to be dropped again once the dust settles.
No change to generated documentation.
Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <1489582656-31133-18-git-send-email-armbru@redhat.com>
show more ...
|
1554a8fa | 15-Mar-2017 |
Markus Armbruster <armbru@redhat.com> |
qapi: Have each QAPI schema declare its returns white-list
qapi.py has a hardcoded white-list of command names that may violate the rules on permitted return types. Add a new pragma directive 'retu
qapi: Have each QAPI schema declare its returns white-list
qapi.py has a hardcoded white-list of command names that may violate the rules on permitted return types. Add a new pragma directive 'returns-whitelist', and use it to replace the hard-coded white-list.
Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1489582656-31133-6-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
show more ...
|
bc52d03f | 15-Mar-2017 |
Markus Armbruster <armbru@redhat.com> |
qapi: Make doc comments optional where we don't need them
Since we added the documentation generator in commit 3313b61, doc comments are mandatory. That's a very good idea for a schema that needs t
qapi: Make doc comments optional where we don't need them
Since we added the documentation generator in commit 3313b61, doc comments are mandatory. That's a very good idea for a schema that needs to be documented, but has proven to be annoying for testing.
Make doc comments optional again, but add a new directive
{ 'pragma': { 'doc-required': true } }
to let a QAPI schema require them.
Add test cases for the new pragma directive. While there, plug a minor hole in includ directive test coverage.
Require documentation in the schemas we actually want documented: qapi-schema.json and qga/qapi-schema.json.
We could probably make qapi2texi.py cope with incomplete documentation, but for now, simply make it refuse to run unless the schema has 'doc-required': true.
Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1489582656-31133-3-git-send-email-armbru@redhat.com> [qapi-code-gen.txt wording tweaked] Reviewed-by: Eric Blake <eblake@redhat.com>
show more ...
|
7dc3bc7a | 07-Mar-2017 |
Peter Maydell <peter.maydell@linaro.org> |
Merge remote-tracking branch 'remotes/mdroth/tags/qga-pull-2017-03-06-tag' into staging
qemu-ga patch queue for 2.9
* fix fsfreeze for filesystems mounted in multiple locations * fix test failure w
Merge remote-tracking branch 'remotes/mdroth/tags/qga-pull-2017-03-06-tag' into staging
qemu-ga patch queue for 2.9
* fix fsfreeze for filesystems mounted in multiple locations * fix test failure when running in a chroot * support for socket-based activation
# gpg: Signature made Mon 06 Mar 2017 07:54:17 GMT # gpg: using RSA key 0x3353C9CEF108B584 # gpg: Good signature from "Michael Roth <flukshun@gmail.com>" # gpg: aka "Michael Roth <mdroth@utexas.edu>" # gpg: aka "Michael Roth <mdroth@linux.vnet.ibm.com>" # Primary key fingerprint: CEAC C9E1 5534 EBAB B82D 3FA0 3353 C9CE F108 B584
* remotes/mdroth/tags/qga-pull-2017-03-06-tag: tests: check path to avoid a failing qga/get-vcpus test qga: ignore EBUSY when freezing a filesystem qga: add systemd socket activation support
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
show more ...
|
ce2eb6c4 | 31-Jan-2017 |
Peter Lieven <pl@kamp.de> |
qga: ignore EBUSY when freezing a filesystem
the current implementation fails if we try to freeze an already frozen filesystem. This can happen if a filesystem is mounted more than once (e.g. with a
qga: ignore EBUSY when freezing a filesystem
the current implementation fails if we try to freeze an already frozen filesystem. This can happen if a filesystem is mounted more than once (e.g. with a bind mount).
Suggested-by: Christian Theune <ct@flyingcircus.io> Cc: qemu-stable@nongnu.org Signed-off-by: Peter Lieven <pl@kamp.de> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
show more ...
|