Author: jsuchome Date: Thu May 22 15:09:40 2008 New Revision: 47796 URL: http://svn.opensuse.org/viewcvs/yast?rev=47796&view=rev Log: - more checks if partitions are mounted (bnc#372238) - 2.16.11 Modified: trunk/repair/VERSION trunk/repair/package/yast2-repair.changes trunk/repair/src/OSRFstab.ycp trunk/repair/src/osr_module_partition.ycp trunk/repair/testsuite/tests/OSRDetect.out trunk/repair/testsuite/tests/OSRDetectFstab.out Modified: trunk/repair/VERSION URL: http://svn.opensuse.org/viewcvs/yast/trunk/repair/VERSION?rev=47796&r1=47795&r2=47796&view=diff ============================================================================== --- trunk/repair/VERSION (original) +++ trunk/repair/VERSION Thu May 22 15:09:40 2008 @@ -1 +1 @@ -2.16.10 +2.16.11 Modified: trunk/repair/package/yast2-repair.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/repair/package/yast2-repair.changes?rev=47796&r1=47795&r2=47796&view=diff ============================================================================== --- trunk/repair/package/yast2-repair.changes (original) +++ trunk/repair/package/yast2-repair.changes Thu May 22 15:09:40 2008 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Thu May 22 14:53:04 CEST 2008 - jsuchome@suse.cz + +- more checks if partitions are mounted (bnc#372238) +- 2.16.11 + +------------------------------------------------------------------- Fri May 16 16:40:22 CEST 2008 - jsrain@suse.cz - added categories Settings and System into desktop file Modified: trunk/repair/src/OSRFstab.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/repair/src/OSRFstab.ycp?rev=47796&r1=47795&r2=47796&view=diff ============================================================================== --- trunk/repair/src/OSRFstab.ycp (original) +++ trunk/repair/src/OSRFstab.ycp Thu May 22 15:09:40 2008 @@ -224,7 +224,24 @@ return (list<string>) maplist (string type, map d, existing, ``(d[key]:"")); } + /** + * Check if given partition is already mounted + * workaround; this should be done via Storage API (bnc#372238) + */ + global define boolean partition_mounted (string part, string mp) { + boolean ret = false; + list<map> mtab = (list<map>) SCR::Read (.etc.mtab); + if (mtab == nil) return ret; + foreach (map line, mtab, { + if (line["spec"]:"" == part && (mp == "" || line["file"]:"" == mp)) + { + y2milestone ("partition %1 already mounted: %2", part, line); + ret = true; + } + }); + return ret; +} /** * e.g.: transform a fstab list to a fstab map. * list: ["/dev/hda6", "/", "reiserfs", "defaults", "1", "1"] @@ -318,10 +335,10 @@ integer i = 0; foreach (string partition_item, linux_partition_list, ``{ -// FIXME check if already mounted? -y2internal ("partition to check: %1", partition_item); + y2milestone ("partition to check: %1", partition_item); if ((boolean) WFM::Execute (.local.mount, - [ partition_item, m_point, OSRExecute::OutputFile() ])) + [ partition_item, m_point, OSRExecute::OutputFile() ]) || + partition_mounted (partition_item, "")) { mount_possible_list = add (mount_possible_list, partition_item); if (!(boolean) WFM::Execute(.local.umount, m_point)) @@ -367,7 +384,8 @@ foreach (string partition_item, mount_possible_list, ``{ if (! (boolean) WFM::Execute(.local.mount, - [ partition_item, mount_p , OSRExecute::OutputFile() ])) + [ partition_item, mount_p , OSRExecute::OutputFile() ]) && + ! partition_mounted (partition_item, "")) { y2error("Partition: %1; not possible to mount to /mnt", partition_item); @@ -2261,7 +2279,8 @@ y2milestone("selected root_partition %1" ,root_partition); boolean mount = OSRExecute::Command (.local.bash, - sformat ("/bin/mount %1 %2", root_partition, root_mountpoint)); + sformat ("/bin/mount %1 %2", root_partition, root_mountpoint)) || + partition_mounted (root_partition, root_mountpoint);; mounted = add (mounted, $[ "partition" : root_partition, Modified: trunk/repair/src/osr_module_partition.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/repair/src/osr_module_partition.ycp?rev=47796&r1=47795&r2=47796&view=diff ============================================================================== --- trunk/repair/src/osr_module_partition.ycp (original) +++ trunk/repair/src/osr_module_partition.ycp Thu May 22 15:09:40 2008 @@ -701,7 +701,8 @@ // check if the specified partition is already mounted to "/mnt", // mount only if it is not already done. - if ( OSRSystem::TargetRoot() != Storage::DeviceMounted (root_partition)) + if (OSRSystem::TargetRoot() != Storage::DeviceMounted (root_partition) && + !OSRFstab::partition_mounted (root_partition, OSRSystem::TargetRoot ())) { // Mount selected partition to /mnt if ((boolean) WFM::Execute (.local.mount, Modified: trunk/repair/testsuite/tests/OSRDetect.out URL: http://svn.opensuse.org/viewcvs/yast/trunk/repair/testsuite/tests/OSRDetect.out?rev=47796&r1=47795&r2=47796&view=diff ============================================================================== --- trunk/repair/testsuite/tests/OSRDetect.out (original) +++ trunk/repair/testsuite/tests/OSRDetect.out Thu May 22 15:09:40 2008 @@ -10,6 +10,7 @@ Dump --- status: detect_error Dump --- failed in module: osr_module_partition Dump ----------------- start detection [hard disks now ok]: -------- +Read .etc.mtab [$["file":"/"]] Log Skip detection method (requires not solved ) mount_all Log Skip detection method (requires not solved ) find_package_db Log Skip detection method (requires not solved ) find_minimal_selection Modified: trunk/repair/testsuite/tests/OSRDetectFstab.out URL: http://svn.opensuse.org/viewcvs/yast/trunk/repair/testsuite/tests/OSRDetectFstab.out?rev=47796&r1=47795&r2=47796&view=diff ============================================================================== --- trunk/repair/testsuite/tests/OSRDetectFstab.out (original) +++ trunk/repair/testsuite/tests/OSRDetectFstab.out Thu May 22 15:09:40 2008 @@ -4,4 +4,5 @@ Return ["fs_check", "swap_check"] Dump detect group: ["fstab_check", "fs_check", "swap_check"] Log The required value "swap_partition_list" is not yet set. +Read .etc.mtab [$["file":"/"]] Return `detectok -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org