On Tue, May 10, 2011 at 04:07:54PM -0400, Cole Robinson wrote:
Some clients overwrite the error from the regex helper, or do
half-baked
error reporting with the exitstatus.
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
src/storage/storage_backend.c | 11 +++++------
src/storage/storage_backend.h | 3 +--
src/storage/storage_backend_fs.c | 5 ++---
src/storage/storage_backend_iscsi.c | 16 ++--------------
src/storage/storage_backend_logical.c | 30 +++++-------------------------
5 files changed, 15 insertions(+), 50 deletions(-)
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index 5f9ff8f..2da1a15 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -1360,8 +1360,7 @@ virStorageBackendRunProgRegex(virStoragePoolObjPtr pool,
const char **regex,
int *nvars,
virStorageBackendListVolRegexFunc func,
- void *data,
- int *outexit)
+ void *data)
{
int fd = -1, err, ret = -1;
FILE *list = NULL;
@@ -1468,7 +1467,7 @@ virStorageBackendRunProgRegex(virStoragePoolObjPtr pool,
ret = 0;
cleanup:
- if (pid > 0 && virCommandWait(cmd, outexit) < 0)
+ if (pid > 0 && virCommandWait(cmd, NULL) < 0)
ret = -1;
if (groups) {
@@ -1600,10 +1599,10 @@ virStorageBackendRunProgRegex(virConnectPtr conn,
const char **regex ATTRIBUTE_UNUSED,
int *nvars ATTRIBUTE_UNUSED,
virStorageBackendListVolRegexFunc func ATTRIBUTE_UNUSED,
- void *data ATTRIBUTE_UNUSED,
- int *outexit ATTRIBUTE_UNUSED)
+ void *data ATTRIBUTE_UNUSED)
{
- virStorageReportError(VIR_ERR_INTERNAL_ERROR, _("%s not implemented on
Win32"), __FUNCTION__);
+ virStorageReportError(VIR_ERR_INTERNAL_ERROR,
+ _("%s not implemented on Win32"), __FUNCTION__);
return -1;
}
diff --git a/src/storage/storage_backend.h b/src/storage/storage_backend.h
index 65cbd7e..fcfbed0 100644
--- a/src/storage/storage_backend.h
+++ b/src/storage/storage_backend.h
@@ -135,8 +135,7 @@ int virStorageBackendRunProgRegex(virStoragePoolObjPtr pool,
const char **regex,
int *nvars,
virStorageBackendListVolRegexFunc func,
- void *data,
- int *exitstatus);
+ void *data);
int virStorageBackendRunProgNul(virStoragePoolObjPtr pool,
const char **prog,
diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index d940055..88f5b87 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -233,7 +233,6 @@ virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn
ATTRIBUTE_UNUSE
};
const char *prog[] = { SHOWMOUNT, "--no-headers", "--exports",
NULL, NULL };
virStoragePoolSourcePtr source = NULL;
- int exitstatus;
char *retval = NULL;
unsigned int i;
@@ -246,8 +245,8 @@ virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn
ATTRIBUTE_UNUSE
prog[3] = source->host.name;
if (virStorageBackendRunProgRegex(NULL, prog, 1, regexes, vars,
-
virStorageBackendFileSystemNetFindPoolSourcesFunc,
- &state, &exitstatus) < 0)
+ virStorageBackendFileSystemNetFindPoolSourcesFunc,
+ &state) < 0)
goto cleanup;
retval = virStoragePoolSourceListFormat(&state.list);
diff --git a/src/storage/storage_backend_iscsi.c b/src/storage/storage_backend_iscsi.c
index b489394..f5da8d8 100644
--- a/src/storage/storage_backend_iscsi.c
+++ b/src/storage/storage_backend_iscsi.c
@@ -160,8 +160,7 @@ virStorageBackendISCSISession(virStoragePoolObjPtr pool,
regexes,
vars,
virStorageBackendISCSIExtractSession,
- &session,
- NULL) < 0)
+ &session) < 0)
return NULL;
if (session == NULL &&
@@ -504,7 +503,6 @@ virStorageBackendISCSIScanTargets(const char *portal,
};
struct virStorageBackendISCSITargetList list;
int i;
- int exitstatus;
memset(&list, 0, sizeof(list));
@@ -514,17 +512,7 @@ virStorageBackendISCSIScanTargets(const char *portal,
regexes,
vars,
virStorageBackendISCSIGetTargets,
- &list,
- &exitstatus) < 0) {
- virStorageReportError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("iscsiadm command failed"));
- return -1;
- }
-
- if (exitstatus != 0) {
- virStorageReportError(VIR_ERR_INTERNAL_ERROR,
- _("iscsiadm sendtargets command failed with
exitstatus %d"),
- exitstatus);
+ &list) < 0) {
return -1;
}
diff --git a/src/storage/storage_backend_logical.c
b/src/storage/storage_backend_logical.c
index c18cd57..fdee2bd 100644
--- a/src/storage/storage_backend_logical.c
+++ b/src/storage/storage_backend_logical.c
@@ -205,25 +205,13 @@ virStorageBackendLogicalFindLVs(virStoragePoolObjPtr pool,
pool->def->source.name, NULL
};
- int exitstatus;
-
if (virStorageBackendRunProgRegex(pool,
prog,
1,
regexes,
vars,
virStorageBackendLogicalMakeVol,
- vol,
- &exitstatus) < 0) {
- virStorageReportError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("lvs command failed"));
- return -1;
- }
-
- if (exitstatus != 0) {
- virStorageReportError(VIR_ERR_INTERNAL_ERROR,
- _("lvs command failed with exitstatus %d"),
- exitstatus);
+ vol) < 0) {
return -1;
}
@@ -321,7 +309,6 @@ virStorageBackendLogicalFindPoolSources(virConnectPtr conn
ATTRIBUTE_UNUSED,
};
const char *const prog[] = { PVS, "--noheadings", "-o",
"pv_name,vg_name", NULL };
const char *const scanprog[] = { VGSCAN, NULL };
- int exitstatus;
char *retval = NULL;
virStoragePoolSourceList sourceList;
int i;
@@ -331,7 +318,7 @@ virStorageBackendLogicalFindPoolSources(virConnectPtr conn
ATTRIBUTE_UNUSED,
* that might be hanging around, so if this fails for some reason, the
* worst that happens is that scanning doesn't pick everything up
*/
- if (virRun(scanprog, &exitstatus) < 0) {
+ if (virRun(scanprog, NULL) < 0) {
VIR_WARN0("Failure when running vgscan to refresh physical volumes");
}
@@ -339,8 +326,8 @@ virStorageBackendLogicalFindPoolSources(virConnectPtr conn
ATTRIBUTE_UNUSED,
sourceList.type = VIR_STORAGE_POOL_LOGICAL;
if (virStorageBackendRunProgRegex(NULL, prog, 1, regexes, vars,
- virStorageBackendLogicalFindPoolSourcesFunc,
- &sourceList, &exitstatus) < 0)
+ virStorageBackendLogicalFindPoolSourcesFunc,
+ &sourceList) < 0)
return NULL;
retval = virStoragePoolSourceListFormat(&sourceList);
@@ -489,7 +476,6 @@ virStorageBackendLogicalRefreshPool(virConnectPtr conn
ATTRIBUTE_UNUSED,
"--nosuffix", "--options", "vg_size,vg_free",
pool->def->source.name, NULL
};
- int exitstatus;
virFileWaitForDevices();
@@ -506,13 +492,7 @@ virStorageBackendLogicalRefreshPool(virConnectPtr conn
ATTRIBUTE_UNUSED,
regexes,
vars,
virStorageBackendLogicalRefreshPoolFunc,
- NULL,
- &exitstatus) < 0) {
- virStoragePoolObjClearVols(pool);
- return -1;
- }
-
- if (exitstatus != 0) {
+ NULL) < 0) {
virStoragePoolObjClearVols(pool);
return -1;
}
ACK
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|