19717555dSYuri Pankov#!/bin/sh 29717555dSYuri Pankov# 39717555dSYuri Pankov# CDDL HEADER START 49717555dSYuri Pankov# 59717555dSYuri Pankov# The contents of this file are subject to the terms of the 69717555dSYuri Pankov# Common Development and Distribution License, Version 1.0 only 79717555dSYuri Pankov# (the "License"). You may not use this file except in compliance 89717555dSYuri Pankov# with the License. 99717555dSYuri Pankov# 109717555dSYuri Pankov# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 119717555dSYuri Pankov# or http://www.opensolaris.org/os/licensing. 129717555dSYuri Pankov# See the License for the specific language governing permissions 139717555dSYuri Pankov# and limitations under the License. 149717555dSYuri Pankov# 159717555dSYuri Pankov# When distributing Covered Code, include this CDDL HEADER in each 169717555dSYuri Pankov# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 179717555dSYuri Pankov# If applicable, add the following below this CDDL HEADER, with the 189717555dSYuri Pankov# fields enclosed by brackets "[]" replaced with your own identifying 199717555dSYuri Pankov# information: Portions Copyright [yyyy] [name of copyright owner] 209717555dSYuri Pankov# 219717555dSYuri Pankov# CDDL HEADER END 229717555dSYuri Pankov# 239717555dSYuri Pankov 249717555dSYuri Pankov# 259717555dSYuri Pankov# Copyright 2003 Sun Microsystems, Inc. All rights reserved. 269717555dSYuri Pankov# Use is subject to license terms. 279717555dSYuri Pankov# 289717555dSYuri Pankov 299717555dSYuri Pankov#exec newfs -G "$@" 309717555dSYuri Pankov 319717555dSYuri Pankovmyname=`basename $0` 329717555dSYuri PankovUSAGE="usage: $myname [ -M mount-point ] [ newfs-options ] raw-special-device" 339717555dSYuri Pankovif [ ! "$UFS_MKFS" ]; then 349717555dSYuri Pankov UFS_MKFS="/usr/lib/fs/ufs/mkfs" 359717555dSYuri Pankovfi 369717555dSYuri Pankovverbose="" 379717555dSYuri Pankovmkfs_opts="-G" 389717555dSYuri Pankovmkfs_subopts="" 399717555dSYuri Pankovsize="" 409717555dSYuri Pankovnewsize=0 419717555dSYuri Pankovmount_pt= 429717555dSYuri PankovUFS_MKFS_NOTENOUGHSPACE=33 439717555dSYuri Pankov 449717555dSYuri Pankovadd_opt() { 459717555dSYuri Pankov mkfs_opts="$mkfs_opts $1" 469717555dSYuri Pankov} 479717555dSYuri Pankov 489717555dSYuri Pankovadd_subopt() { 499717555dSYuri Pankov if [ ! "$mkfs_subopts" ]; then 509717555dSYuri Pankov mkfs_subopts="-o $1" 519717555dSYuri Pankov else 529717555dSYuri Pankov mkfs_subopts="$mkfs_subopts,$1" 539717555dSYuri Pankov fi 549717555dSYuri Pankov} 559717555dSYuri Pankov 569717555dSYuri Pankovwhile getopts "GM:Nva:b:c:d:f:i:m:n:o:r:s:t:C:" c ; do 579717555dSYuri Pankov save=$OPTIND 589717555dSYuri Pankov 599717555dSYuri Pankov case $c in 609717555dSYuri Pankov G) ;; 619717555dSYuri Pankov M) add_opt "-M $OPTARG"; mount_pt="$OPTARG" ;; 629717555dSYuri Pankov N) add_subopt "N" ;; 639717555dSYuri Pankov v) verbose="1" ;; 649717555dSYuri Pankov a) add_subopt "apc=$OPTARG" ;; 659717555dSYuri Pankov b) add_subopt "bsize=$OPTARG" ;; 669717555dSYuri Pankov c) add_subopt "cgsize=$OPTARG" ;; 679717555dSYuri Pankov d) add_subopt "gap=$OPTARG" ;; 689717555dSYuri Pankov f) add_subopt "fragsize=$OPTARG" ;; 699717555dSYuri Pankov i) add_subopt "nbpi=$OPTARG" ;; 709717555dSYuri Pankov m) add_subopt "free=$OPTARG" ;; 719717555dSYuri Pankov n) add_subopt "nrpos=$OPTARG" ;; 729717555dSYuri Pankov o) add_subopt "opt=$OPTARG" ;; 739717555dSYuri Pankov r) add_subopt "rps=`expr $OPTARG / 60`" ;; 749717555dSYuri Pankov s) size=$OPTARG ;; 759717555dSYuri Pankov t) add_subopt "ntrack=$OPTARG" ;; 769717555dSYuri Pankov C) add_subopt "maxcontig=$OPTARG" ;; 779717555dSYuri Pankov \?) echo $USAGE; exit 1 ;; 789717555dSYuri Pankov esac 799717555dSYuri Pankov 809717555dSYuri Pankov OPTIND=$save 819717555dSYuri Pankovdone 829717555dSYuri Pankov 839717555dSYuri Pankovshift `expr $OPTIND - 1` 849717555dSYuri Pankovif [ $# -ne 1 ]; then 859717555dSYuri Pankov echo $USAGE 869717555dSYuri Pankov exit 1 879717555dSYuri Pankovfi 889717555dSYuri Pankovraw_special=$1 899717555dSYuri Pankov 909717555dSYuri Pankovif [ ! "$size" ]; then 919717555dSYuri Pankov size=`devinfo -p $raw_special | awk '{ print $5 }'` 929717555dSYuri Pankov if [ $? -ne 0 -o ! "$size" ]; then 939717555dSYuri Pankov echo "$myname: cannot get partition size" 949717555dSYuri Pankov exit 2 959717555dSYuri Pankov fi 969717555dSYuri Pankovfi 979717555dSYuri Pankov 989717555dSYuri Pankovcmd="$UFS_MKFS $mkfs_opts $mkfs_subopts $raw_special $size" 999717555dSYuri Pankovif [ -n "$verbose" ]; then 1009717555dSYuri Pankov echo $cmd 1019717555dSYuri Pankovfi 1029717555dSYuri Pankov$cmd; retv=$? 1039717555dSYuri Pankov 1049717555dSYuri Pankovif [ $retv -eq $UFS_MKFS_NOTENOUGHSPACE ]; then 1059717555dSYuri Pankov echo "Growing filesystem in increments due to limited available space." 1069717555dSYuri Pankov 1079717555dSYuri Pankov while [ "$newsize" -lt "$size" ]; do 1089717555dSYuri Pankov cmd="$UFS_MKFS $mkfs_opts $mkfs_subopts -P $raw_special $size" 1099717555dSYuri Pankov if [ -n "$verbose" ]; then 1109717555dSYuri Pankov echo $cmd 1119717555dSYuri Pankov fi 1129717555dSYuri Pankov newsize=`$cmd`; retv=$? 1139717555dSYuri Pankov if [ 0 -ne $retv -o -z "$newsize" ]; then 1149717555dSYuri Pankov echo "$myname: cannot probe the possible file system size" 1159717555dSYuri Pankov exit 2 1169717555dSYuri Pankov fi 1179717555dSYuri Pankov if [ 0 -eq "$newsize" ]; then 1189717555dSYuri Pankov echo "$myname: the file system is full and cannot be grown, please delete some files" 1199717555dSYuri Pankov exit 2 1209717555dSYuri Pankov fi 1219717555dSYuri Pankov 1229717555dSYuri Pankov cmd="$UFS_MKFS $mkfs_opts $mkfs_subopts $raw_special $newsize"; retv=$? 1239717555dSYuri Pankov if [ -n "$verbose" ]; then 1249717555dSYuri Pankov echo $cmd 1259717555dSYuri Pankov fi 1269717555dSYuri Pankov $cmd; retv=$? 1279717555dSYuri Pankov if [ 0 -ne $retv ]; then 1289717555dSYuri Pankov echo "$myname: cannot grow file system to $newsize sectors" 1299717555dSYuri Pankov exit $retv 1309717555dSYuri Pankov fi 1319717555dSYuri Pankov done 1329717555dSYuri Pankov echo \ 1339717555dSYuri Pankov"\nThe incremental grow has successfully completed, but since the first growth \ 134*bbf21555SRichard Loweattempt failed (see output from first mkfs(8) run), the filesystem is still \ 135*bbf21555SRichard Lowelocked and needs to be checked with fsck(8).\n\ 1369717555dSYuri PankovPlease run \`fsck -F ufs $raw_special' and then unlock the filesystem \ 1379717555dSYuri Pankovwith \`lockfs -u $mount_pt'." | fmt; 1389717555dSYuri Pankov 1399717555dSYuri Pankovfi 1409717555dSYuri Pankov 1419717555dSYuri Pankovexit $retv 142