Richard W.M. Jones
2011-Mar-22 11:23 UTC
[Libguestfs] [PATCH] inspect: Don't fail for Windows guests with multiple disks (RHBZ#674130).
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones New in Fedora 11: Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 70 libraries supprt'd http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw -------------- next part -------------->From f7806322c5173d392e1f22b99ea00d45083f3f42 Mon Sep 17 00:00:00 2001From: Richard W.M. Jones <rjones at redhat.com> Date: Tue, 22 Mar 2011 11:20:38 +0000 Subject: [PATCH 3/3] inspect: Don't fail for Windows guests with multiple disks (RHBZ#674130). --- src/guestfs-internal.h | 1 + src/inspect.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h index ccc5bb5..300f1aa 100644 --- a/src/guestfs-internal.h +++ b/src/guestfs-internal.h @@ -173,6 +173,7 @@ enum inspect_fs_content { FS_CONTENT_UNKNOWN = 0, FS_CONTENT_LINUX_ROOT, FS_CONTENT_WINDOWS_ROOT, + FS_CONTENT_WINDOWS_VOLUME, FS_CONTENT_LINUX_BOOT, FS_CONTENT_LINUX_USR, FS_CONTENT_LINUX_USR_LOCAL, diff --git a/src/inspect.c b/src/inspect.c index 20e8806..716d592 100644 --- a/src/inspect.c +++ b/src/inspect.c @@ -366,9 +366,13 @@ check_filesystem (guestfs_h *g, const char *device, guestfs_is_dir (g, "/run") > 0 && guestfs_is_dir (g, "/spool") > 0) fs->content = FS_CONTENT_LINUX_VAR; - /* Windows root? */ + /* Windows root? + * Note that if a Windows guest has multiple disks and applications + * are installed on those other disks, then those other disks will + * contain "/Program Files" and "/System Volume Information". Those + * would *not* be Windows root disks. (RHBZ#674130) + */ else if (is_file_nocase (g, "/AUTOEXEC.BAT") > 0 || - is_dir_nocase (g, "/Program Files") > 0 || is_dir_nocase (g, "/WINDOWS") > 0 || is_dir_nocase (g, "/WIN32") > 0 || is_dir_nocase (g, "/WINNT") > 0 || @@ -380,6 +384,9 @@ check_filesystem (guestfs_h *g, const char *device, if (check_windows_root (g, fs) == -1) return -1; } + /* Windows volume (but not root)? */ + else if (is_dir_nocase (g, "/System Volume Information") > 0) + fs->content = FS_CONTENT_WINDOWS_VOLUME; /* Install CD/disk? Skip these checks if it's not a whole device * (eg. CD) or the first partition (eg. bootable USB key). */ -- 1.7.4.1
Matthew Booth
2011-Mar-22 16:16 UTC
[Libguestfs] [PATCH] inspect: Don't fail for Windows guests with multiple disks (RHBZ#674130).
On 22/03/11 11:23, Richard W.M. Jones wrote:>> From f7806322c5173d392e1f22b99ea00d45083f3f42 Mon Sep 17 00:00:00 2001 > From: Richard W.M. Jones<rjones at redhat.com> > Date: Tue, 22 Mar 2011 11:20:38 +0000 > Subject: [PATCH 3/3] inspect: Don't fail for Windows guests with multiple disks (RHBZ#674130). > > --- > src/guestfs-internal.h | 1 + > src/inspect.c | 11 +++++++++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h > index ccc5bb5..300f1aa 100644 > --- a/src/guestfs-internal.h > +++ b/src/guestfs-internal.h > @@ -173,6 +173,7 @@ enum inspect_fs_content { > FS_CONTENT_UNKNOWN = 0, > FS_CONTENT_LINUX_ROOT, > FS_CONTENT_WINDOWS_ROOT, > + FS_CONTENT_WINDOWS_VOLUME, > FS_CONTENT_LINUX_BOOT, > FS_CONTENT_LINUX_USR, > FS_CONTENT_LINUX_USR_LOCAL, > diff --git a/src/inspect.c b/src/inspect.c > index 20e8806..716d592 100644 > --- a/src/inspect.c > +++ b/src/inspect.c > @@ -366,9 +366,13 @@ check_filesystem (guestfs_h *g, const char *device, > guestfs_is_dir (g, "/run")> 0&& > guestfs_is_dir (g, "/spool")> 0) > fs->content = FS_CONTENT_LINUX_VAR; > - /* Windows root? */ > + /* Windows root? > + * Note that if a Windows guest has multiple disks and applications > + * are installed on those other disks, then those other disks will > + * contain "/Program Files" and "/System Volume Information". Those > + * would*not* be Windows root disks. (RHBZ#674130) > + */ > else if (is_file_nocase (g, "/AUTOEXEC.BAT")> 0 || > - is_dir_nocase (g, "/Program Files")> 0 || > is_dir_nocase (g, "/WINDOWS")> 0 || > is_dir_nocase (g, "/WIN32")> 0 || > is_dir_nocase (g, "/WINNT")> 0 || > @@ -380,6 +384,9 @@ check_filesystem (guestfs_h *g, const char *device, > if (check_windows_root (g, fs) == -1) > return -1; > } > + /* Windows volume (but not root)? */ > + else if (is_dir_nocase (g, "/System Volume Information")> 0) > + fs->content = FS_CONTENT_WINDOWS_VOLUME; > /* Install CD/disk? Skip these checks if it's not a whole device > * (eg. CD) or the first partition (eg. bootable USB key). > */ > -- 1.7.4.1Ah... previous patch makes more sense in this context. ACK to both. Matt -- Matthew Booth, RHCA, RHCSS Red Hat Engineering, Virtualisation Team GPG ID: D33C3490 GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490