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 > Redhat > Fedora Development

 
 
LinkBack Thread Tools
 
Old 11-30-2010, 07:09 PM
David Lehman
 
Default Move handling of /proc/bus/usb and /selinux into storage.

---
pyanaconda/livecd.py | 22 ----------------------
pyanaconda/rescue.py | 6 ------
pyanaconda/storage/__init__.py | 27 ++++++++++++++++++++++++---
pyanaconda/storage/formats/fs.py | 15 +++++++++++++++
pyanaconda/yuminstall.py | 25 -------------------------
5 files changed, 39 insertions(+), 56 deletions(-)

diff --git a/pyanaconda/livecd.py b/pyanaconda/livecd.py
index 0f6dc3e..54fb7c3 100644
--- a/pyanaconda/livecd.py
+++ b/pyanaconda/livecd.py
@@ -148,19 +148,7 @@ class LiveCDCopyBackend(backend.AnacondaBackend):
def _getLiveSizeMB(self):
return self._getLiveSize() / 1048576

- def _unmountNonFstabDirs(self, anaconda):
- # unmount things that aren't listed in /etc/fstab. *sigh*
- dirs = []
- if flags.selinux:
- dirs.append("/selinux")
- for dir in dirs:
- try:
- isys.umount("%s/%s" %(anaconda.rootPath,dir), removeDir = False)
- except Exception, e:
- log.error("unable to unmount %s: %s" %(dir, e))
-
def postAction(self, anaconda):
- self._unmountNonFstabDirs(anaconda)
try:
anaconda.storage.umountFilesystems(swapoff = False)
os.rmdir(anaconda.rootPath)
@@ -168,9 +156,6 @@ class LiveCDCopyBackend(backend.AnacondaBackend):
log.error("Unable to unmount filesystems: %s" % e)

def doPreInstall(self, anaconda):
- if anaconda.dir == DISPATCH_BACK:
- self._unmountNonFstabDirs(anaconda)
- return
anaconda.storage.umountFilesystems(swapoff = False)

def doInstall(self, anaconda):
@@ -350,13 +335,6 @@ class LiveCDCopyBackend(backend.AnacondaBackend):
os.chown(dest, st.st_uid, st.st_gid)
os.chmod(dest, stat.S_IMODE(st.st_mode))

- # ensure that non-fstab filesystems are mounted in the chroot
- if flags.selinux:
- try:
- isys.mount("/selinux", anaconda.rootPath + "/selinux", "selinuxfs")
- except Exception, e:
- log.error("error mounting selinuxfs: %s" %(e,))
-
wait.pop()

def _resizeRootfs(self, anaconda, win = None):
diff --git a/pyanaconda/rescue.py b/pyanaconda/rescue.py
index aea3c94..ee023a0 100644
--- a/pyanaconda/rescue.py
+++ b/pyanaconda/rescue.py
@@ -415,12 +415,6 @@ def runRescue(anaconda):

# and /selinux too
if flags.selinux and os.path.isdir("%s/selinux" %(anaconda.rootPath,)):
- try:
- isys.mount("/selinux", "%s/selinux" %(anaconda.rootPath,),
- "selinuxfs")
- except Exception, e:
- log.error("error mounting selinuxfs: %s" %(e,))
-
# we have to catch the possible exception
# because we support read-only mounting
try:
diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py
index ae700c8..e815c20 100644
--- a/pyanaconda/storage/__init__.py
+++ b/pyanaconda/storage/__init__.py
@@ -1542,6 +1542,8 @@ class FSSet(object):
self._sysfs = None
self._proc = None
self._devshm = None
+ self._usb = None
+ self._selinux = None
self.preserveLines = [] # lines we just ignore and preserve

@property
@@ -1588,6 +1590,22 @@ class FSSet(object):
return self._devshm

@property
+ def usb(self):
+ if not self._usb:
+ self._usb = NoDevice(format=getFormat("usbfs",
+ device="usbfs",
+ mountpoint="/proc/bus/usb"))
+ return self._usb
+
+ @property
+ def selinux(self):
+ if not self._selinux:
+ self._selinux = NoDevice(format=getFormat("selinuxfs",
+ device="selinuxfs",
+ mountpoint="/selinux"))
+ return self._selinux
+
+ @property
def devices(self):
return sorted(self.devicetree.devices, key=lambda d: d.path)

@@ -1637,7 +1655,8 @@ class FSSet(object):
device.format = getFormat("bind",
device=device.path,
exists=True)
- elif mountpoint in ("/proc", "/sys", "/dev/shm", "/dev/pts"):
+ elif mountpoint in ("/proc", "/sys", "/dev/shm", "/dev/pts",
+ "/selinux", "/proc/bus/usb"):
# drop these now -- we'll recreate later
return None
else:
@@ -1889,7 +1908,8 @@ class FSSet(object):
skipRoot=False):
intf = anaconda.intf
devices = self.mountpoints.values() + self.swapDevices
- devices.extend([self.dev, self.devshm, self.devpts, self.sysfs, self.proc])
+ devices.extend([self.dev, self.devshm, self.devpts, self.sysfs,
+ self.proc, self.selinux, self.usb])
devices.sort(key=lambda d: getattr(d.format, "mountpoint", None))

for device in devices:
@@ -2004,7 +2024,8 @@ class FSSet(object):

def umountFilesystems(self, ignoreErrors=True, swapoff=True):
devices = self.mountpoints.values() + self.swapDevices
- devices.extend([self.dev, self.devshm, self.devpts, self.sysfs, self.proc])
+ devices.extend([self.dev, self.devshm, self.devpts, self.sysfs,
+ self.proc, self.usb, self.selinux])
devices.sort(key=lambda d: getattr(d.format, "mountpoint", None))
devices.reverse()
for device in devices:
diff --git a/pyanaconda/storage/formats/fs.py b/pyanaconda/storage/formats/fs.py
index 7887bd2..f055ce2 100644
--- a/pyanaconda/storage/formats/fs.py
+++ b/pyanaconda/storage/formats/fs.py
@@ -1480,3 +1480,18 @@ class BindFS(FS):
register_device_format(BindFS)


+class SELinuxFS(NoDevFS):
+ _type = "selinuxfs"
+
+ @property
+ def mountable(self):
+ return flags.selinux and super(FS, self).mountable
+
+register_device_format(SELinuxFS)
+
+
+class USBFS(NoDevFS):
+ _type = "usbfs"
+
+register_device_format(USBFS)
+
diff --git a/pyanaconda/yuminstall.py b/pyanaconda/yuminstall.py
index 47a5762..5438d66 100644
--- a/pyanaconda/yuminstall.py
+++ b/pyanaconda/yuminstall.py
@@ -1535,14 +1535,6 @@ reposdir=/etc/anaconda.repos.d,/tmp/updates/anaconda.repos.d,/tmp/product/anacon
self.ayum.dsCallback = None

def doPreInstall(self, anaconda):
- if anaconda.dir == DISPATCH_BACK:
- for d in ("/selinux", "/dev", "/proc/bus/usb"):
- try:
- isys.umount(anaconda.rootPath + d, removeDir = False)
- except Exception, e:
- log.error("unable to unmount %s: %s" %(d, e))
- return
-
if anaconda.upgrade:
# An old mtab can cause confusion (esp if loop devices are
# in it). Be extra special careful and delete any mtab first,
@@ -1574,23 +1566,6 @@ reposdir=/etc/anaconda.repos.d,/tmp/updates/anaconda.repos.d,/tmp/product/anacon

self.initLog(anaconda.rootPath)

- # SELinux hackery (#121369)
- if flags.selinux:
- try:
- os.mkdir(anaconda.rootPath + "/selinux")
- except Exception, e:
- pass
- try:
- isys.mount("/selinux", anaconda.rootPath + "/selinux", "selinuxfs")
- except Exception, e:
- log.error("error mounting selinuxfs: %s" %(e,))
-
- # For usbfs
- try:
- isys.mount("/proc/bus/usb", anaconda.rootPath + "/proc/bus/usb", "usbfs")
- except Exception, e:
- log.error("error mounting usbfs: %s" %(e,))
-
# write out the fstab
if not anaconda.upgrade:
anaconda.storage.fsset.write(anaconda.rootPath)
--
1.7.3.2

_______________________________________________
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 01:24 AM.

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