Re: mdmfs(8) not right?

From: Wes Peters <wes_at_softweyr.com>
Date: Thu, 11 Mar 2004 23:47:57 -0800
Alexander Leidinger wrote:
> On Thu, 11 Mar 2004 00:55:39 -0500
> Michael Johnson <ahze_at_ahze.net> wrote:
> 
> 
>>it tries to mount it and it comes up to the screen "hit enter for 
>>shell" and i hit enter and ctrl+d and everything works if md /tmp mfs 
>>rw,-s32m 2 0 in in /etc/fstab
>>
>>if  md /tmp mfs rw,-s32m 0 0 is in /etc/fstab everything works fine.
> 
> 
> As a datapoint:
> 
> I get the same error since a while, but I have "0 0" in the fstab. I
> hadn't time to investigate this further, but just continuing the boot
> like you do, mounts the mfs just fine.


OK, I tried to post this last night but apparently kmail 3.2.0 decided
I don't need to SEND email anymore.  This lovely little rc.d script
will create, newfs, and potentially chown and chmod md's for you, just
early enough in the boot process you can put the md devices in fstab
and mount them just like any other filesystem.

This is configured from /etc/rc.conf, as in:

ramdisk_units="10 11 12"
ramdisk_10_config="-t swap -s 128m"
ramdisk_10_owner="wes:staff"
ramdisk_10_perms="1755"
ramdisk_11_config="-t malloc -s 32m"
ramdisk_11_newfs="-b 4096 -f 1024"

This results in /dev/md10 (with ownership and permissions as specified)
and /dev/md11 (with default ownership and permissions, 4K/1K block/frag
size), but not a /dev/md12 as its type has not been specified.

Here is the script:

---- ramdisk

#!/bin/sh -
#
# Copyright (c) 2004  The FreeBSD Project
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#

# PROVIDE: ramdisk
# REQUIRE: localswap
# BEFORE: mountcritlocal
# KEYWORD: FreeBSD

. /etc/rc.subr

name="ramdisk"
stop_cmd="ramdisk_stop"
start_cmd="ramdisk_start"

ramdisk_start()
{
        for unit in $ramdisk_units
        do
                eval mdoptions=\$ramdisk_${unit}_config
                if [ "$mdoptions" = "${mdoptions##-t}" ]
                then
                        echo "Type not specified for md$unit"
                        continue
                fi
                eval fsoptions=\$ramdisk_${unit}_newfs
                eval owner=\$ramdisk_${unit}_owner
                eval perms=\$ramdisk_${unit}_perms

                echo Configuring ramdisk /dev/md$unit

                mdconfig -a $mdoptions -u $unit
                newfs $fsoptions /dev/md$unit
                [ "X$owner" != "X" ] && chown $owner /dev/md$unit
                [ "X$perms" != "X" ] && chmod $perms /dev/md$unit
        done
}

ramdisk_stop()
{
        for unit in $ramdisk_units
        do
                if [ -c /dev/md$unit ] ; then
                        umount -f /dev/md$unit > /dev/null 2>&1
                        mdconfig -d -u $unit
                        echo Recovered ramdisk /dev/md$unit
                fi
        done
}

load_rc_config $name
run_rc_command "$1"

---- ramdisk

So as long as nobody pitches a fit/paints the bikeshed black/has valid
concerns about some aspect of the design or operation of this script,
I'll commit it this weekend and we can be done with trying to make mds
look like mfssen.

-- 

         Where am I, and what am I doing in this handbasket?

Wes Peters                                               wes_at_softweyr.com
Received on Thu Mar 11 2004 - 22:48:03 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:47 UTC