growfs (b68e6569221ecade8899eaab8e1b088947ef2f8a) | growfs (045001075ed18295288176211456dde3df7faf46) |
---|---|
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: --- 34 unchanged lines hidden (view full) --- 43. /etc/rc.subr 44 45name="growfs" 46desc="Grow root partition to fill device" 47start_cmd="growfs_start" 48stop_cmd=":" 49rcvar="growfs_enable" 50 | 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: --- 34 unchanged lines hidden (view full) --- 43. /etc/rc.subr 44 45name="growfs" 46desc="Grow root partition to fill device" 47start_cmd="growfs_start" 48stop_cmd=":" 49rcvar="growfs_enable" 50 |
51growfs_get_diskdev () 52{ 53 local _search=${1} 54 sysctl -b kern.geom.conftxt | 55 while read x1 _type _dev line 56 do 57 if [ "${_type}" = "DISK" -a -n "$(echo ${_search} | grep ${_dev})" ]; then 58 echo -n ${_dev} 59 break 60 fi 61 done 62} 63 |
|
51growfs_start () 52{ 53 echo "Growing root partition to fill device" 54 FSTYPE=$(mount -p | awk '{ if ( $2 == "/") { print $3 }}') 55 FSDEV=$(mount -p | awk '{ if ( $2 == "/") { print $1 }}') 56 case "$FSTYPE" in 57 ufs) 58 rootdev=${FSDEV#/dev/} --- 5 unchanged lines hidden (view full) --- 64 *) 65 echo "Don't know how to grow root filesystem type: $FSTYPE" 66 return 67 esac 68 if [ x"$rootdev" = x"${rootdev%/*}" ]; then 69 # raw device 70 rawdev="$rootdev" 71 else | 64growfs_start () 65{ 66 echo "Growing root partition to fill device" 67 FSTYPE=$(mount -p | awk '{ if ( $2 == "/") { print $3 }}') 68 FSDEV=$(mount -p | awk '{ if ( $2 == "/") { print $1 }}') 69 case "$FSTYPE" in 70 ufs) 71 rootdev=${FSDEV#/dev/} --- 5 unchanged lines hidden (view full) --- 77 *) 78 echo "Don't know how to grow root filesystem type: $FSTYPE" 79 return 80 esac 81 if [ x"$rootdev" = x"${rootdev%/*}" ]; then 82 # raw device 83 rawdev="$rootdev" 84 else |
72 rawdev=$(glabel status | awk '$1 == "'"$rootdev"'" { print $3 }') | 85 rawdev=$(glabel status | awk -v rootdev=$rootdev 'index(rootdev, $1) { print $3; }') |
73 if [ x"$rawdev" = x"" ]; then 74 echo "Can't figure out device for: $rootdev" 75 return 76 fi 77 fi 78 | 86 if [ x"$rawdev" = x"" ]; then 87 echo "Can't figure out device for: $rootdev" 88 return 89 fi 90 fi 91 |
92 if [ x"diskid" = x"${rootdev%/*}" ]; then 93 search=$rootdev 94 else 95 search=$rawdev 96 fi 97 98 diskdev=$(growfs_get_diskdev ${search}) 99 if [ -z "${diskdev}" ]; then 100 diskdev=${rootdev} 101 fi 102 |
|
79 sysctl -b kern.geom.conftxt | awk ' 80{ 81 lvl=$1 82 device[lvl] = $3 83 type[lvl] = $2 84 idx[lvl] = $7 85 parttype[lvl] = $13 86 if (dev == $3) { --- 12 unchanged lines hidden (view full) --- 99 } 100 } 101 for (i = 1; i <= lvl; i++) { 102 if (cmd[i]) 103 system(cmd[i]) 104 } 105 exit 0 106 } | 103 sysctl -b kern.geom.conftxt | awk ' 104{ 105 lvl=$1 106 device[lvl] = $3 107 type[lvl] = $2 108 idx[lvl] = $7 109 parttype[lvl] = $13 110 if (dev == $3) { --- 12 unchanged lines hidden (view full) --- 123 } 124 } 125 for (i = 1; i <= lvl; i++) { 126 if (cmd[i]) 127 system(cmd[i]) 128 } 129 exit 0 130 } |
107}' dev="$rawdev" 108 gpart commit "$rootdev" | 131}' dev="$search" 132 gpart commit "$diskdev" 2> /dev/null |
109 case "$FSTYPE" in 110 ufs) 111 growfs -y /dev/"$rootdev" 112 ;; 113 zfs) 114 zpool online -e $pool $rootdev 115 ;; 116 esac 117} 118 119load_rc_config $name 120run_rc_command "$1" | 133 case "$FSTYPE" in 134 ufs) 135 growfs -y /dev/"$rootdev" 136 ;; 137 zfs) 138 zpool online -e $pool $rootdev 139 ;; 140 esac 141} 142 143load_rc_config $name 144run_rc_command "$1" |