aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--initscripts.spec7
-rwxr-xr-xrc.d/init.d/rawdevices80
-rw-r--r--sysconfig/rawdevices8
3 files changed, 91 insertions, 4 deletions
diff --git a/initscripts.spec b/initscripts.spec
index 2371aa4e..ddf13be8 100644
--- a/initscripts.spec
+++ b/initscripts.spec
@@ -76,6 +76,7 @@ chmod 664 /var/log/wtmp /var/run/utmp
/sbin/chkconfig --add netfs
/sbin/chkconfig --add network
+/sbin/chkconfig --add rawdevices
# handle serial installs semi gracefully
if [ $1 = 0 ]; then
@@ -100,16 +101,13 @@ fi
if [ $1 = 0 ]; then
/sbin/chkconfig --del netfs
/sbin/chkconfig --del network
+ /sbin/chkconfig --del rawdevices
fi
%triggerun -- initscripts <= 7.59
/sbin/chkconfig --del random
exit 0
-%triggerun -- initscripts < 7.62
-/sbin/chkconfig --del rawdevices
-exit 0
-
%clean
rm -rf $RPM_BUILD_ROOT
@@ -128,6 +126,7 @@ rm -rf $RPM_BUILD_ROOT
%dir /etc/sysconfig/networking/devices
%dir /etc/sysconfig/networking/profiles
%dir /etc/sysconfig/networking/profiles/default
+%config(noreplace) /etc/sysconfig/rawdevices
%config /etc/sysconfig/network-scripts/network-functions
%config /etc/sysconfig/network-scripts/network-functions-ipv6
%config /etc/sysconfig/network-scripts/init.ipv6-global
diff --git a/rc.d/init.d/rawdevices b/rc.d/init.d/rawdevices
new file mode 100755
index 00000000..67954d17
--- /dev/null
+++ b/rc.d/init.d/rawdevices
@@ -0,0 +1,80 @@
+#!/bin/bash
+#
+# rawdevices This shell script assignes rawdevices to block devices
+#
+# chkconfig: 345 56 44
+# description: This scripts assignes raw devices to block devices \
+# (such as hard drive partitions). This is for the use \
+# of applications such as Oracle. You can set up the \
+# raw device to block device mapping by editing \
+# the file /etc/sysconfig/rawdevices. Note that the use \
+# of raw devices is deprecated, and applications should \
+# open regular block devices with O_DIRECT instead.
+#
+# config: /etc/sysconfig/rawdevices
+
+[ -f /usr/bin/raw ] || exit 0
+[ -f /etc/sysconfig/rawdevices ] || exit 0
+# Exit if the file just has the default comments.
+LC_ALL=C /bin/egrep -q -v "^ *#" /etc/sysconfig/rawdevices 2>/dev/null || exit 0
+
+. /etc/init.d/functions
+
+function assign_raw()
+{
+ LC_ALL=C egrep -v '^ *#' /etc/sysconfig/rawdevices |
+ while read RAW BLOCK; do
+ if [ -n "$RAW" -a -n "$BLOCK" ]; then
+ rawdirname=${RAW%/*}
+ if [ "$rawdirname" = "/dev" -a -d /dev/raw ]; then
+ echo $" Please correct your /etc/sysconfig/rawdevices:"
+ echo $" rawdevices are now located in the directory /dev/raw/ "
+ echo $" If the command 'raw' still refers to /dev/raw as a file."
+ echo $" you'll have to upgrade your util-linux package"
+ exit 0
+ fi
+ if [ "$rawdirname" = "/dev/raw" -a -f /dev/raw ]; then
+ echo $" Please correct your /etc/sysconfig/rawdevices:"
+ echo $" rawdevices are now located in the directory /dev/raw/ "
+ echo $" If the command 'raw' still refers to /dev/raw as a file."
+ echo $" you'll have to upgrade your util-linux package"
+ exit 0
+ fi
+
+ echo " $RAW --> $BLOCK";
+ raw $RAW $BLOCK
+ fi
+ done
+}
+
+# See how we were called.
+case "$1" in
+ start)
+ # Assign devices
+ echo $"Assigning devices: "
+ assign_raw
+ echo $"done"
+ ;;
+ stop)
+ # No action to be taken here
+ ;;
+
+ status)
+ ID=`id -u`
+ if [ $ID -eq 0 ]; then
+ raw -qa
+ else
+ echo $"You need to be root to use this command ! "
+ fi
+ ;;
+
+ restart|reload)
+ $0 start
+ ;;
+
+ *)
+ echo $"Usage: $0 {start|stop|status|restart}"
+ exit 1
+esac
+
+exit 0
diff --git a/sysconfig/rawdevices b/sysconfig/rawdevices
new file mode 100644
index 00000000..69360f0e
--- /dev/null
+++ b/sysconfig/rawdevices
@@ -0,0 +1,8 @@
+# This file and interface are deprecated.
+# Applications needing raw device access should open regular
+# block devices with O_DIRECT.
+# raw device bindings
+# format: <rawdev> <major> <minor>
+# <rawdev> <blockdev>
+# example: /dev/raw/raw1 /dev/sda1
+# /dev/raw/raw2 8 5