summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2002-08-23 04:02:45 +0000
committerJeremy Katz <katzj@redhat.com>2002-08-23 04:02:45 +0000
commite5ce17bbf42ecebde570d7a34247003055b465d8 (patch)
treea1ce6bd252528e53c396db5c1a7ad6fd6d96a094
parent3844e138ffd7b440495aefe377bca30fda65fc7d (diff)
downloadanaconda-e5ce17bbf42ecebde570d7a34247003055b465d8.tar.gz
anaconda-e5ce17bbf42ecebde570d7a34247003055b465d8.tar.xz
anaconda-e5ce17bbf42ecebde570d7a34247003055b465d8.zip
make sure we successfully unmount the driver disk/pcmciadd. if not, sleep and try again. it's a bad hack, but I can't see anything holding the device busy and get -EBUSY on umount.
-rw-r--r--loader/modules.c11
-rw-r--r--loader/pcmcia.c12
2 files changed, 17 insertions, 6 deletions
diff --git a/loader/modules.c b/loader/modules.c
index 58671ca47..5ed349984 100644
--- a/loader/modules.c
+++ b/loader/modules.c
@@ -425,11 +425,16 @@ static char * filterDriverModules(struct driverDiskInfo * ddi,
myCpioFilterArchive(from, to, pattern);
- newtPopWindow();
-
gunzip_close(from);
gunzip_close(to);
- umount("/tmp/drivers");
+ while(1) {
+ int rc;
+ rc = umount("/tmp/drivers");
+ if (rc != -1)
+ break;
+ }
+
+ newtPopWindow();
return toPath;
}
diff --git a/loader/pcmcia.c b/loader/pcmcia.c
index 0baa3c9b5..f26caac33 100644
--- a/loader/pcmcia.c
+++ b/loader/pcmcia.c
@@ -162,14 +162,20 @@ int startPcmcia(char * floppyDevice, moduleList modLoaded, moduleDeps modDeps,
logMessage("cardmgr running as pid %d", child);
waitpid(child, &status, 0);
-
logMessage("cardmgr returned 0x%x", status);
busProbe(modInfo, modLoaded, modDeps, 0, kd, flags);
- newtPopWindow();
- umount("/modules");
+ while(1) {
+ sleep(2);
+ rc = umount("/modules");
+ if (rc != -1) {
+ break;
+ }
+ logMessage("return code of /modules unmount is %d", rc);
+ }
+ newtPopWindow();
strcpy(pcicPtr, pcic);
return 0;