diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | anaconda.spec | 3 | ||||
-rw-r--r-- | isys/Makefile | 2 | ||||
-rw-r--r-- | isys/devnodes.c | 41 |
4 files changed, 44 insertions, 8 deletions
@@ -1,3 +1,9 @@ +2005-11-14 Peter Jones <pjones@redhat.com> + + * anaconda.spec: add requirements for device-mapper + * isys/Makefile: link against libdevmapper + * isys/devnodes.c: add support for making device-mapper nodes + 2005-11-14 Jeremy Katz <katzj@redhat.com> * loader2/net.c (wait_for_link): Log warning if no network link detected diff --git a/anaconda.spec b/anaconda.spec index 4ebbca784..65e761a86 100644 --- a/anaconda.spec +++ b/anaconda.spec @@ -5,10 +5,11 @@ License: GPL Summary: Graphical system installer Group: Applications/System Source: anaconda-%{PACKAGE_VERSION}.tar.bz2 -BuildPreReq: pump-devel >= 0.8.20, kudzu-devel >= 1.2.0, pciutils-devel, bzip2-devel, e2fsprogs-devel, python-devel gtk2-devel rpm-python >= 4.2-0.61, newt-devel, rpm-devel, gettext >= 0.11, rhpl, booty, libxml2-python, zlib-devel, bogl-devel >= 0:0.1.9-17, bogl-bterm >= 0:0.1.9-17, elfutils-devel, beecrypt-devel, libselinux-devel >= 1.6, xorg-x11-devel, intltool >= 0.31.2-3, python-urlgrabber, pykickstart, yum +BuildPreReq: pump-devel >= 0.8.20, kudzu-devel >= 1.2.0, pciutils-devel, bzip2-devel, e2fsprogs-devel, python-devel gtk2-devel rpm-python >= 4.2-0.61, newt-devel, rpm-devel, gettext >= 0.11, rhpl, booty, libxml2-python, zlib-devel, bogl-devel >= 0:0.1.9-17, bogl-bterm >= 0:0.1.9-17, elfutils-devel, beecrypt-devel, libselinux-devel >= 1.6, xorg-x11-devel, intltool >= 0.31.2-3, python-urlgrabber, pykickstart, yum, device-mapper Requires: rpm-python >= 4.2-0.61, rhpl >= 0.170, parted >= 1.6.3-7, booty, kudzu > 1.2.0, yum >= 2.4.0 Requires: pyparted, libxml2-python, python-urlgrabber Requires: anaconda-help, system-logos, pykickstart +Requires: device-mapper %ifnarch s390 s390x ppc64 Requires: rhpxl %endif diff --git a/isys/Makefile b/isys/Makefile index 4f305f3b8..d179c8969 100644 --- a/isys/Makefile +++ b/isys/Makefile @@ -8,7 +8,7 @@ OBJECTS = nfsmount.o nfsmount_clnt.o nfsmount_xdr.o imount.o getmacaddr.o \ ethtool.o getipaddr.o wireless.o eddsupport.o SOBJECTS = $(patsubst %.o,%.lo,$(OBJECTS)) SOURCES = $(patsubst %.o,%.c,$(OBJECTS)) isys.c -LOADLIBES = -lresolv -lpci -lpopt -lpump -lext2fs -lz -lbterm -lbogl -lwlite -lkudzu -lpci -lselinux +LOADLIBES = -lresolv -lpci -lpopt -lpump -lext2fs -lz -lbterm -lbogl -lwlite -lkudzu -lpci -lselinux -ldevmapper PYMODULES = _isys.so SUBDIRS = gzlib DIET = diet diff --git a/isys/devnodes.c b/isys/devnodes.c index 7e268157e..8409fe907 100644 --- a/isys/devnodes.c +++ b/isys/devnodes.c @@ -3,8 +3,9 @@ * * Erik Troan <ewt@redhat.com> * Matt Wilson <msw@redhat.com> + * Peter Jones <pjones@redhat.com> * - * Copyright 1998-2001 Red Hat, Inc. + * Copyright 1998-2005 Red Hat, Inc. * Copyright 1996-1998 Red Hat Software, Inc. * * This software may be freely redistributed under the terms of the GNU @@ -25,6 +26,7 @@ #include <unistd.h> #include <ctype.h> #include <string.h> +#include <libdevmapper.h> struct devnum { char * name; @@ -92,11 +94,38 @@ int devMakeInode(char * devName, char * path) { char *ptr; char *dir; - /* scsi devices sda - sdp: major 8, minor 0 - 255 */ - /* scsi devices sdq - sdaf: major 65, minor 0 - 255 */ - /* scsi devices sdqg - sdav: major 66, minor 0 - 255 */ - /* etc... */ - if (devName[0] == 's' && devName[1] == 'd') { + if (!strncmp(devName, "mapper/", 7)) { + struct dm_task *task; + struct dm_info *info = alloca(sizeof *info); + char *realName = devName + 7; + + if (!info || !*realName) + return -3; + memset(info, '\0', sizeof (*info)); + task = dm_task_create(DM_DEVICE_INFO); + if (!task) + return -3; + + dm_task_set_name(task, realName); + i = dm_task_run(task); + if (i < 0) { + dm_task_destroy(task); + return -3; + } + i = dm_task_get_info(task, info); + dm_task_destroy(task); + if (i < 0) { + return -3; + } + + type = S_IFBLK; + major = info->major; + minor = info->minor; + } else if (devName[0] == 's' && devName[1] == 'd') { + /* scsi devices sda - sdp: major 8, minor 0 - 255 */ + /* scsi devices sdq - sdaf: major 65, minor 0 - 255 */ + /* scsi devices sdqg - sdav: major 66, minor 0 - 255 */ + /* etc... */ int drive = 0; char *num = NULL; type = S_IFBLK; |