Re: [libvirt] [PATCH 03/12] storage: Extract error reporting for broken chains

2017-10-26 Thread John Ferlan


On 10/20/2017 09:47 AM, Peter Krempa wrote:
> Simplify reporting the error if backing chain is broken for further
> callers by extracting it into a separate function.
> ---
>  src/storage/storage_source.c | 47 
> +++-
>  src/storage/storage_source.h |  4 
>  2 files changed, 37 insertions(+), 14 deletions(-)
> 

Reviewed-by: John Ferlan 

John

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 03/12] storage: Extract error reporting for broken chains

2017-10-20 Thread Peter Krempa
Simplify reporting the error if backing chain is broken for further
callers by extracting it into a separate function.
---
 src/storage/storage_source.c | 47 +++-
 src/storage/storage_source.h |  4 
 2 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/src/storage/storage_source.c b/src/storage/storage_source.c
index cced5308c..4586ef4ad 100644
--- a/src/storage/storage_source.c
+++ b/src/storage/storage_source.c
@@ -404,6 +404,38 @@ virStorageFileChown(const virStorageSource *src,
 }


+/**
+ * virStorageFileReportBrokenChain:
+ *
+ * @errcode: errno when accessing @src
+ * @src: inaccessible file in the backing chain of @parent
+ * @parent: root virStorageSource being checked
+ *
+ * Reports the correct error message if @src is missing in the backing chain
+ * for @parent.
+ */
+void
+virStorageFileReportBrokenChain(int errcode,
+virStorageSourcePtr src,
+virStorageSourcePtr parent)
+{
+unsigned int access_user = src->drv->uid;
+unsigned int access_group = src->drv->gid;
+
+if (src == parent) {
+virReportSystemError(errcode,
+ _("Cannot access storage file '%s' "
+   "(as uid:%u, gid:%u)"),
+ src->path, access_user, access_group);
+} else {
+virReportSystemError(errcode,
+ _("Cannot access backing file '%s' "
+   "of storage file '%s' (as uid:%u, gid:%u)"),
+ src->path, parent->path, access_user, 
access_group);
+}
+}
+
+
 /* Recursive workhorse for virStorageFileGetMetadata.  */
 static int
 virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
@@ -433,20 +465,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
 return -1;

 if (virStorageFileAccess(src, F_OK) < 0) {
-if (src == parent) {
-virReportSystemError(errno,
- _("Cannot access storage file '%s' "
-   "(as uid:%u, gid:%u)"),
- src->path, (unsigned int)uid,
- (unsigned int)gid);
-} else {
-virReportSystemError(errno,
- _("Cannot access backing file '%s' "
-   "of storage file '%s' (as uid:%u, gid:%u)"),
- src->path, parent->path,
- (unsigned int)uid, (unsigned int)gid);
-}
-
+virStorageFileReportBrokenChain(errno, src, parent);
 goto cleanup;
 }

diff --git a/src/storage/storage_source.h b/src/storage/storage_source.h
index 320ea3cab..0640c138e 100644
--- a/src/storage/storage_source.h
+++ b/src/storage/storage_source.h
@@ -52,4 +52,8 @@ int virStorageFileGetMetadata(virStorageSourcePtr src,
 char *virStorageFileGetBackingStoreStr(virStorageSourcePtr src)
 ATTRIBUTE_NONNULL(1);

+void virStorageFileReportBrokenChain(int errcode,
+ virStorageSourcePtr src,
+ virStorageSourcePtr parent);
+
 #endif /* __VIR_STORAGE_SOURCE_H__ */
-- 
2.14.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list