Author: locilka
Date: Fri Sep 21 10:03:19 2007
New Revision: 41008
URL: http://svn.opensuse.org/viewcvs/yast?rev=41008&view=rev
Log:
- When normal umount at the end of the installation fails, try
at least: sync, remount read-only, umount --force.
- Report all services running in the installation directory
(both #326478).
- 2.15.52
Modified:
trunk/installation/VERSION
trunk/installation/package/yast2-installation.changes
trunk/installation/src/clients/pre_umount_finish.ycp
trunk/installation/src/clients/umount_finish.ycp
Modified: trunk/installation/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/installation/VERSION?rev=41008&r1=41007&r2=41008&view=diff
==============================================================================
--- trunk/installation/VERSION (original)
+++ trunk/installation/VERSION Fri Sep 21 10:03:19 2007
@@ -1 +1 @@
-2.15.51
+2.15.52
Modified: trunk/installation/package/yast2-installation.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/installation/package/yast2-installation.changes?rev=41008&r1=41007&r2=41008&view=diff
==============================================================================
--- trunk/installation/package/yast2-installation.changes (original)
+++ trunk/installation/package/yast2-installation.changes Fri Sep 21 10:03:19 2007
@@ -1,4 +1,13 @@
-------------------------------------------------------------------
+Fri Sep 21 09:53:37 CEST 2007 - locilka@suse.cz
+
+- When normal umount at the end of the installation fails, try
+ at least: sync, remount read-only, umount --force.
+- Report all services running in the installation directory
+ (both #326478).
+- 2.15.52
+
+-------------------------------------------------------------------
Thu Sep 20 12:23:01 CEST 2007 - locilka@suse.cz
- Changed inst_upgrade_urls to add sources not enabled during the
Modified: trunk/installation/src/clients/pre_umount_finish.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/installation/src/clients/pre_umount_finish.ycp?rev=41008&r1=41007&r2=41008&view=diff
==============================================================================
--- trunk/installation/src/clients/pre_umount_finish.ycp (original)
+++ trunk/installation/src/clients/pre_umount_finish.ycp Fri Sep 21 10:03:19 2007
@@ -12,6 +12,8 @@
{
import "Misc";
+import "Installation";
+import "String";
textdomain "installation";
@@ -42,6 +44,13 @@
}
else if (func == "Write")
{
+ // bugzilla #326478
+ // some processes might be still running...
+ string cmd = sformat ("fuser -v '%1' 2>&1", String::Quote (Installation::destdir));
+ map cmd_run = (map) WFM::Execute (.local.bash_output, cmd);
+
+ y2milestone ("These processes are still running at %1 -> %2", Installation::destdir, cmd_run);
+
if (size (Misc::boot_msg) > 0) {
// just a beep
SCR::Execute (.target.bash, "/bin/echo -e '\a'");
Modified: trunk/installation/src/clients/umount_finish.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/installation/src/clients/umount_finish.ycp?rev=41008&r1=41007&r2=41008&view=diff
==============================================================================
--- trunk/installation/src/clients/umount_finish.ycp (original)
+++ trunk/installation/src/clients/umount_finish.ycp Fri Sep 21 10:03:19 2007
@@ -20,6 +20,7 @@
import "Storage";
import "Hotplug";
import "Vendor";
+import "String";
any ret = nil;
string func = "";
@@ -78,14 +79,21 @@
// /proc/bus/usb
// /proc
- if (Hotplug::haveUSB)
- {
- WFM::Execute(.local.umount, Installation::destdir + "/proc/bus/usb");
+ list <string> umount_these = [ "/proc", "/sys", "/dev" ];
+ if (Hotplug::haveUSB) {
+ umount_these = (list <string>) union (["/proc/bus/usb"], umount_these);
}
- // inst_prepdisk mounts them unconditionally, they keep destdir busy
- WFM::Execute(.local.umount, Installation::destdir + "/proc");
- WFM::Execute(.local.umount, Installation::destdir + "/sys");
- WFM::Execute(.local.umount, Installation::destdir + "/dev");
+
+ foreach (string umount_this, umount_these, {
+ umount_this = sformat ("%1%2", Installation::destdir, umount_this);
+ boolean umount_result = (boolean) WFM::Execute (.local.umount, umount_this);
+
+ if (umount_result != true) {
+ y2warning ("Umount failed, trying to remount read only...");
+ string cmd = sformat ("sync; mount -o remount,ro '%1'; umount --force '%1';", String::Quote (umount_this));
+ y2milestone ("Cmd: '%1' Ret: %2", cmd, WFM::Execute (.local.bash_output, cmd));
+ }
+ });
map