summaryrefslogtreecommitdiffstats
path: root/isys/isys.py
diff options
context:
space:
mode:
Diffstat (limited to 'isys/isys.py')
-rw-r--r--isys/isys.py169
1 files changed, 5 insertions, 164 deletions
diff --git a/isys/isys.py b/isys/isys.py
index eb0b4cbd3..691c1d579 100644
--- a/isys/isys.py
+++ b/isys/isys.py
@@ -769,176 +769,17 @@ def dhcpNetDevice(device):
return _isys.dhcpnetdevice(devname, v4, v4method, v6, v6method, klass)
-def _readXFSLabel_int(device):
- try:
- fd = os.open(device, os.O_RDONLY)
- except:
- return None
-
- try:
- buf = os.read(fd, 128)
- os.close(fd)
- except OSError, e:
- log.debug("error reading xfs label on %s: %s" %(device, e))
- try:
- os.close(fd)
- except:
- pass
- return None
-
- xfslabel = None
- if len(buf) == 128 and buf[0:4] == "XFSB":
- xfslabel = string.rstrip(buf[108:120],"\0x00")
-
- return xfslabel
-
-def readXFSLabel(device, makeDevNode = 1):
- if makeDevNode:
- makeDevInode(device, "/tmp/disk")
- label = _readXFSLabel_int("/tmp/disk")
- os.unlink("/tmp/disk")
- else:
- label = _readXFSLabel_int(device)
- return label
-
-def _readJFSLabel_int(device):
- jfslabel = None
- try:
- fd = os.open(device, os.O_RDONLY)
- except:
- return jfslabel
-
- try:
- os.lseek(fd, 32768, 0)
- buf = os.read(fd, 180)
- os.close(fd)
- except OSError, e:
- log.debug("error reading jfs label on %s: %s" %(device, e))
- try:
- os.close(fd)
- except:
- pass
- return jfslabel
-
- if (len(buf) == 180 and buf[0:4] == "JFS1"):
- jfslabel = string.rstrip(buf[152:168],"\0x00")
-
- return jfslabel
-
-def readJFSLabel(device, makeDevNode = 1):
- if makeDevNode:
- makeDevInode(device, "/tmp/disk")
- label = _readJFSLabel_int("/tmp/disk")
- os.unlink("/tmp/disk")
- else:
- label = _readJFSLabel_int(device)
- return label
-
-def _readSwapLabel_int(device):
- label = None
- try:
- fd = os.open(device, os.O_RDONLY)
- except:
- return label
-
- pagesize = resource.getpagesize()
- try:
- buf = os.read(fd, pagesize)
- os.close(fd)
- except OSError, e:
- log.debug("error reading swap label on %s: %s" %(device, e))
- try:
- os.close(fd)
- except:
- pass
- return label
-
- if ((len(buf) == pagesize) and (buf[pagesize - 10:] == "SWAPSPACE2")):
- label = string.rstrip(buf[1052:1068], "\0x00")
- return label
-
-def readSwapLabel(device, makeDevNode = 1):
+def readFSLabel(device, makeDevNode = 1):
if makeDevNode:
makeDevInode(device, "/tmp/disk")
- label = _readSwapLabel_int("/tmp/disk")
- os.unlink("/tmp/disk")
- else:
- label = _readSwapLabel_int(device)
- return label
-
-def readExt2Label(device, makeDevNode = 1):
+ device = "/tmp/disk"
+ label = _isys.getblkid(device, "LABEL")
if makeDevNode:
- makeDevInode(device, "/tmp/disk")
- label = _isys.e2fslabel("/tmp/disk");
os.unlink("/tmp/disk")
- else:
- label = _isys.e2fslabel(device)
return label
-def _readReiserFSLabel_int(device):
- label = None
-
- try:
- fd = os.open(device, os.O_RDONLY)
- except OSError, e:
- log.debug("error opening device %s: %s" % (device, e))
- return label
-
- # valid block sizes in reiserfs are 512 - 8192, powers of 2
- # we put 4096 first, since it's the default
- # reiserfs superblock occupies either the 2nd or 16th block
- for blksize in (4096, 512, 1024, 2048, 8192):
- for start in (blksize, (blksize*16)):
- try:
- os.lseek(fd, start, 0)
- # read 120 bytes to get s_magic and s_label
- buf = os.read(fd, 120)
-
- # see if this block is the superblock
- # this reads reiserfs_super_block_v1.s_magic as defined
- # in include/reiserfs_fs.h in the reiserfsprogs source
- m = string.rstrip(buf[52:61], "\0x00")
- if m == "ReIsErFs" or m == "ReIsEr2Fs" or m == "ReIsEr3Fs":
- # this reads reiserfs_super_block.s_label as
- # defined in include/reiserfs_fs.h
- label = string.rstrip(buf[100:116], "\0x00")
- os.close(fd)
- return label
- except OSError, e:
- # [Error 22] probably means we're trying to read an
- # extended partition.
- log.debug("error reading reiserfs label on %s: %s" %(device, e))
-
- try:
- os.close(fd)
- except:
- pass
-
- return label
-
- os.close(fd)
- return label
-
-def readReiserFSLabel(device, makeDevNode = 1):
- if makeDevNode:
- makeDevInode(device, "/tmp/disk")
- label = _readReiserFSLabel_int("/tmp/disk")
- os.unlink("/tmp/disk")
- else:
- label = _readReiserFSLabel_int(device)
- return label
-
-def readFSLabel(device, makeDevNode = 1):
- label = readExt2Label(device, makeDevNode)
- if label is None:
- label = readSwapLabel(device, makeDevNode)
- if label is None:
- label = readXFSLabel(device, makeDevNode)
- if label is None:
- label = readJFSLabel(device, makeDevNode)
- if label is None:
- label = readReiserFSLabel(device, makeDevNode)
- return label
+def readFSType(device):
+ return _isys.getblkid(device, "TYPE")
def ext2Clobber(device, makeDevNode = 1):
_isys.e2fsclobber(device)