FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu User

 
 
LinkBack Thread Tools
 
Old 01-25-2011, 11:00 PM
"Brian C. Lane"
 
Default Add noeject support to loader (#665094)

When noeject is passed on the kernel command line disable ejecting
the cdrom.

Related: rhbz#665094
---
docs/command-line.txt | 3 +++
loader/cdinstall.c | 20 ++++++++++++++++----
loader/loader.c | 5 +++++
loader/loader.h | 2 ++
4 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/docs/command-line.txt b/docs/command-line.txt
index fbc4b50..4723264 100644
--- a/docs/command-line.txt
+++ b/docs/command-line.txt
@@ -126,6 +126,9 @@
;<code>noipv6</code>
: Disable IPv6 networking during installation.

+;<code>noeject</code>
+: Do not eject install media under any circumstances, including media test and shutdown.
+
;<code>nokill</code>
: A debugging option that prevents anaconda from terminating all running programs when a fatal error occurs.

diff --git a/loader/cdinstall.c b/loader/cdinstall.c
index 3ccc332..74c9b14 100644
--- a/loader/cdinstall.c
+++ b/loader/cdinstall.c
@@ -201,7 +201,10 @@ static void mediaCheckCdrom(char *cddriver) {
free(descr);
}

- ejectCdrom(cddriver);
+ if (!FL_NOEJECT(flags))
+ ejectCdrom(cddriver);
+ else
+ logMessage(INFO, "noeject in effect, not ejecting cdrom");

rc = newtWinChoice(_("Media Check"), _("Test"), _("Continue"),
_("If you would like to test additional media, "
@@ -260,7 +263,10 @@ static void queryCDMediaCheck(char *dev, char *location) {

do {
if (doPwMount(dev, location, "iso9660", "ro", NULL)) {
- ejectCdrom(dev);
+ if (!FL_NOEJECT(flags))
+ ejectCdrom(dev);
+ else
+ logMessage(INFO, "noeject in effect, not ejecting cdrom");
wrongCDMessage();
continue;
}
@@ -271,7 +277,10 @@ static void queryCDMediaCheck(char *dev, char *location) {
if (access(stage2loc, R_OK)) {
free(stage2loc);
umount(location);
- ejectCdrom(dev);
+ if (!FL_NOEJECT(flags))
+ ejectCdrom(dev);
+ else
+ logMessage(INFO, "noeject in effect, not ejecting cdrom");
wrongCDMessage();
continue;
}
@@ -426,7 +435,10 @@ static char *setupCdrom(char *location, struct loaderData_s *loaderData,
"and press %s to retry."),
getProductName(), getProductName(), _("OK"));

- ejectCdrom(cddev);
+ if (!FL_NOEJECT(flags))
+ ejectCdrom(cddev);
+ else
+ logMessage(INFO, "noeject in effect, not ejecting cdrom");
rc = newtWinChoice(_("Disc Not Found"),
_("OK"), _("Back"), buf, _("OK"));
free(buf);
diff --git a/loader/loader.c b/loader/loader.c
index 52458d2..0f9bcb2 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1016,6 +1016,8 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData,
mlAddBlacklist("uhci-hcd");
} else if (!strcasecmp(argv[i], "nofirewire"))
mlAddBlacklist("firewire-ohci");
+ else if (!strcasecmp(argv[i], "noeject"))
+ flags |= LOADER_FLAGS_NOEJECT;
else if (!strncasecmp(argv[i], "loglevel=", 9)) {
if (!strcasecmp(argv[i]+9, "debug")) {
loaderData->logLevel = strdup(argv[i]+9);
@@ -2372,6 +2374,9 @@ int main(int argc, char ** argv) {
*argptr++ = "--noipv6";
#endif

+ if (FL_NOEJECT(flags))
+ *argptr++ = "--noeject";
+
if (FL_KICKSTART(flags)) {
*argptr++ = "--kickstart";
*argptr++ = loaderData.ksFile;
diff --git a/loader/loader.h b/loader/loader.h
index 58c785d..9e0accd 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -71,6 +71,7 @@
#define LOADER_FLAGS_NOKILL (((uint64_t) 1) << 38)
#define LOADER_FLAGS_KICKSTART_SEND_SERIAL (((uint64_t) 1) << 39)
#define LOADER_FLAGS_AUTOMODDISK (((uint64_t) 1) << 40)
+#define LOADER_FLAGS_NOEJECT (((uint64_t) 1) << 41)

#define FL_TEXT(a) ((a) & LOADER_FLAGS_TEXT)
#define FL_RESCUE(a) ((a) & LOADER_FLAGS_RESCUE)
@@ -108,6 +109,7 @@
#define FL_NOKILL(a) ((a) & LOADER_FLAGS_NOKILL)
#define FL_KICKSTART_SEND_SERIAL(a) ((a) & LOADER_FLAGS_KICKSTART_SEND_SERIAL)
#define FL_AUTOMODDISK(a) ((a) & LOADER_FLAGS_AUTOMODDISK)
+#define FL_NOEJECT(a) ((a) & LOADER_FLAGS_NOEJECT)

void startNewt(void);
void stopNewt(void);
--
1.7.3.4

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 11:36 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org