Deleted Added
full compact
growfs (273955) growfs (284009)
1#!/bin/sh
2#
3# Copyright 2014 John-Mark Gurney
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:

--- 10 unchanged lines hidden (view full) ---

19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25# SUCH DAMAGE.
26#
1#!/bin/sh
2#
3# Copyright 2014 John-Mark Gurney
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:

--- 10 unchanged lines hidden (view full) ---

19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25# SUCH DAMAGE.
26#
27# $FreeBSD: head/etc/rc.d/growfs 273955 2014-11-02 00:11:25Z jmg $
27# $FreeBSD: stable/10/etc/rc.d/growfs 284009 2015-06-05 00:46:49Z cperciva $
28#
29
30# PROVIDE: growfs
31# BEFORE: sysctl
32# KEYWORD: firstboot
33
34# This allows us to distribute a image
35# and have it work on essentially any size drive.
36#
37# TODO: Figure out where this should really be ordered.
28#
29
30# PROVIDE: growfs
31# BEFORE: sysctl
32# KEYWORD: firstboot
33
34# This allows us to distribute a image
35# and have it work on essentially any size drive.
36#
37# TODO: Figure out where this should really be ordered.
38# I suspect it should go just after fsck but before mountcritlocal
39# but it's hard to tell for sure because of the bug described
40# below.
38# I suspect it should go just after fsck but before mountcritlocal.
41#
42
43. /etc/rc.subr
44
45name="growfs"
46start_cmd="growfs_start"
47stop_cmd=":"
48rcvar="growfs_enable"
49
50growfs_start ()
51{
39#
40
41. /etc/rc.subr
42
43name="growfs"
44start_cmd="growfs_start"
45stop_cmd=":"
46rcvar="growfs_enable"
47
48growfs_start ()
49{
52 echo "Growing root partition to fill device"
53 rootdev=$(df / | tail -n 1 | awk '{ sub("/dev/", "", $1); print $1 }')
54 if [ x"$rootdev" = x"${rootdev%/*}" ]; then
55 # raw device
56 rawdev="$rootdev"
57 else
58 rawdev=$(glabel status | awk '$1 == "'"$rootdev"'" { print $3 }')
59 if [ x"$rawdev" = x"" ]; then
60 echo "Can't figure out device for: $rootdev"
61 return
50 echo "Growing root partition to fill device"
51 rootdev=$(df / | tail -n 1 | awk '{ sub("/dev/", "", $1); print $1 }')
52 if [ x"$rootdev" = x"${rootdev%/*}" ]; then
53 # raw device
54 rawdev="$rootdev"
55 else
56 rawdev=$(glabel status | awk '$1 == "'"$rootdev"'" { print $3 }')
57 if [ x"$rawdev" = x"" ]; then
58 echo "Can't figure out device for: $rootdev"
59 return
60 fi
62 fi
61 fi
63 fi
64
62
65 sysctl -b kern.geom.conftxt | awk '
63 sysctl -b kern.geom.conftxt | awk '
66{
67 lvl=$1
68 device[lvl] = $3
69 type[lvl] = $2
70 idx[lvl] = $7
71 parttype[lvl] = $13
72 if (dev == $3) {
73 for (i = 1; i <= lvl; i++) {

--- 12 unchanged lines hidden (view full) ---

86 }
87 for (i = 1; i <= lvl; i++) {
88 if (cmd[i])
89 system(cmd[i])
90 }
91 exit 0
92 }
93}' dev="$rawdev"
64{
65 lvl=$1
66 device[lvl] = $3
67 type[lvl] = $2
68 idx[lvl] = $7
69 parttype[lvl] = $13
70 if (dev == $3) {
71 for (i = 1; i <= lvl; i++) {

--- 12 unchanged lines hidden (view full) ---

84 }
85 for (i = 1; i <= lvl; i++) {
86 if (cmd[i])
87 system(cmd[i])
88 }
89 exit 0
90 }
91}' dev="$rawdev"
94 growfs -y /dev/"$rootdev"
92 growfs -y /dev/"$rootdev"
95}
96
97load_rc_config $name
98run_rc_command "$1"
93}
94
95load_rc_config $name
96run_rc_command "$1"