# TESTED w/ Taroon-re0926.RC1.1 on i386 Appears to be a bug in the cdrom switching code for anaconda. I've gone through several manual installs with multiple cdrom drives (ide, and usb). It appears that if the cdrom's that anaconda needs are in drives already (doesn't matter which drives), anaconda will use those drives no questions asked (good, this is the expected behavior). However, let's say I only have 3 cd drives w/ discs 1-3 in use. Anaconda will prompt for disc4. Here's where I think a problem may lie... When I insert disc4 and click "Okay", anaconda only seems to search the cdrom whose mount point is /mnt/source (so which ever drive booted disc1 probably). I can put disc4 in any of the other 2+ drives, but anaconda will not look there. Seems to be a bug in the code below in image.py. Seems to me like the following for loop over the cdlist list in image.py should be used also after the prompt for the next disk to scan through all the kudzu probed cdrom drives attached to the system. ------- Suspect code ------- image.py:167 ============= cdlist = [] for (dev, something, descript) in \ kudzu.probe(kudzu.CLASS_CDROM, kudzu.BUS_UNSPEC, 0): cdlist.append(dev) ... # code below should use cdlist when trying to find the next cdrom, instead of just self.device ... if not done: isys.ejectCdrom(self.device) while not done: self.messageWindow(_("Change CDROM"), _("Please insert disc %d to continue.") % needed) try: if isys.mount(self.device, "/mnt/source", fstype = "iso9660", readOnly = 1): time.sleep(3) isys.mount(self.device, "/mnt/source", fstype = "iso9660", readOnly = 1) if os.access("/mnt/source/.discinfo", os.R_OK): f = open("/mnt/source/.discinfo") newStamp = f.readline().strip() try: descr = f.readline().strip() except: descr = None try: arch = f.readline().strip() except: arch = None try: discNum = getDiscNums(f.readline().strip()) except: discNum = [ 0 ] f.close() if (newStamp == timestamp and arch == _arch and needed in discNum): done = 1 self.currentDisc = discNum # make /tmp/cdrom again so cd gets ejected isys.makeDevInode(self.device, "/tmp/cdrom") if not done: self.messageWindow(_("Wrong CDROM"), _("That's not the correct %s CDROM.") % (productName,)) isys.umount("/mnt/source") isys.ejectCdrom(self.device) except: self.messageWindow(_("Error"), _("The CDROM could not be mounted.")) ------- Additional Comments From msf 2003-09-30 16:23 ------- This is a 'by design' behavior. We eject the CD drive #1, so we expect you to put it in the CD tray we ejected. Worth fixing but not a real problem.
This isn't really a new behavior, and I've touched this code late one too many times and had to then deal with a release full of bad cd bugs. So, targeting to fix for FC2.
Committed something that should fix this to CVS. Could definitely do with some testing as it's kind of uber-scary code.
Sorry, this has been fixed for some time...thanks