Page MenuHomeFreeBSD

D27161.id80132.diff
No OneTemporary

D27161.id80132.diff

Index: sbin/growfs/growfs.8
===================================================================
--- sbin/growfs/growfs.8
+++ sbin/growfs/growfs.8
@@ -89,6 +89,12 @@
.Nm
will enlarge the file system to the size of the entire partition).
.El
+.Sh EXIT STATUS
+Exit status is 0 on success, and > 1 on errors.
+.Nm
+exits with 1 on harmless errors, for instance, when it has nothing to do.
+Errors recoverable by user action are signalled with 2.
+OS errors, which are usually not recoverable, are signaled with 3, or greater.
.Sh EXAMPLES
Expand root file system to fill up available space:
.Dl growfs /
Index: sbin/growfs/growfs.c
===================================================================
--- sbin/growfs/growfs.c
+++ sbin/growfs/growfs.c
@@ -150,7 +150,7 @@
*/
fscs = (struct csum *)calloc((size_t)1, (size_t)sblock.fs_cssize);
if (fscs == NULL)
- errx(1, "calloc failed");
+ errx(3, "calloc failed");
memcpy(fscs, osblock.fs_csp, osblock.fs_cssize);
free(osblock.fs_csp);
osblock.fs_csp = NULL;
@@ -262,7 +262,7 @@
* and all the alternates back to disk.
*/
if (!Nflag && sbput(fso, &sblock, sblock.fs_ncg) != 0)
- errc(2, EIO, "could not write updated superblock");
+ errc(3, EIO, "could not write updated superblock");
DBG_PRINT0("fscs written\n");
#ifdef FS_DEBUG
@@ -1405,7 +1405,7 @@
size <<= 30;
size <<= 10;
} else
- errx(1, "unknown suffix on -s argument");
+ errx(2, "unknown suffix on -s argument");
break;
case 'v': /* for compatibility to newfs */
break;
@@ -1429,25 +1429,25 @@
*/
device = getdev(*argv);
if (device == NULL)
- errx(1, "cannot find special device for %s", *argv);
+ errx(2, "cannot find special device for %s", *argv);
statfsp = dev_to_statfs(device);
fsi = open(device, O_RDONLY);
if (fsi < 0)
- err(1, "%s", device);
+ err(3, "%s", device);
/*
* Try to guess the slice size if not specified.
*/
if (ioctl(fsi, DIOCGMEDIASIZE, &mediasize) == -1)
- err(1,"DIOCGMEDIASIZE");
+ err(3,"DIOCGMEDIASIZE");
/*
* Check if that partition is suitable for growing a file system.
*/
if (mediasize < 1)
- errx(1, "partition is unavailable");
+ errx(2, "partition is unavailable");
/*
* Read the current superblock, and take a backup.
@@ -1455,9 +1455,9 @@
if ((ret = sbget(fsi, &fs, STDSB)) != 0) {
switch (ret) {
case ENOENT:
- errx(1, "superblock not recognized");
+ errx(2, "superblock not recognized");
default:
- errc(1, ret, "unable to read superblock");
+ errc(3, ret, "unable to read superblock");
}
}
/*
@@ -1465,7 +1465,7 @@
*/
if (fs->fs_clean == 0 ||
(fs->fs_flags & (FS_UNCLEAN | FS_NEEDSFSCK)) != 0)
- errx(1, "%s is not clean - run fsck.\n", *argv);
+ errx(2, "%s is not clean - run fsck.\n", *argv);
memcpy(&osblock, fs, fs->fs_sbsize);
free(fs);
memcpy((void *)&fsun1, (void *)&fsun2, osblock.fs_sbsize);
@@ -1486,7 +1486,7 @@
mediasize,
"B", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
- errx(1, "requested size %s is larger "
+ errx(2, "requested size %s is larger "
"than the available %s", oldsizebuf, newsizebuf);
}
}
@@ -1515,7 +1515,7 @@
* Are we really growing?
*/
if (osblock.fs_size >= sblock.fs_size) {
- errx(1, "we are not growing (%jd->%jd)",
+ errx(3, "we are not growing (%jd->%jd)",
(intmax_t)osblock.fs_size, (intmax_t)sblock.fs_size);
}
@@ -1525,7 +1525,7 @@
if (yflag == 0) {
for (j = 0; j < FSMAXSNAP; j++) {
if (sblock.fs_snapinum[j]) {
- errx(1, "active snapshot found in file system; "
+ errx(2, "active snapshot found in file system; "
"please remove all snapshots before "
"using growfs");
}
@@ -1570,14 +1570,14 @@
if (statfsp != NULL && (statfsp->f_flags & MNT_RDONLY) == 0) {
fso = open(_PATH_UFSSUSPEND, O_RDWR);
if (fso == -1)
- err(1, "unable to open %s", _PATH_UFSSUSPEND);
+ err(3, "unable to open %s", _PATH_UFSSUSPEND);
error = ioctl(fso, UFSSUSPEND, &statfsp->f_fsid);
if (error != 0)
- err(1, "UFSSUSPEND");
+ err(3, "UFSSUSPEND");
} else {
fso = open(device, O_WRONLY);
if (fso < 0)
- err(1, "%s", device);
+ err(3, "%s", device);
}
}
@@ -1586,7 +1586,7 @@
*/
testbuf = malloc(sblock.fs_fsize);
if (testbuf == NULL)
- err(1, "malloc");
+ err(3, "malloc");
rdfs((ufs2_daddr_t)((size - sblock.fs_fsize) / DEV_BSIZE),
sblock.fs_fsize, testbuf, fsi);
wtfs((ufs2_daddr_t)((size - sblock.fs_fsize) / DEV_BSIZE),
@@ -1640,7 +1640,7 @@
fragroundup(&sblock, sblock.fs_ncg * sizeof(struct csum));
if (osblock.fs_size >= sblock.fs_size)
- errx(1, "not enough new space");
+ errx(3, "not enough new space");
DBG_PRINT0("sblock calculated\n");
@@ -1654,11 +1654,11 @@
if (statfsp != NULL && (statfsp->f_flags & MNT_RDONLY) == 0) {
error = ioctl(fso, UFSRESUME);
if (error != 0)
- err(1, "UFSRESUME");
+ err(3, "UFSRESUME");
}
error = close(fso);
if (error != 0)
- err(1, "close");
+ err(3, "close");
if (statfsp != NULL && (statfsp->f_flags & MNT_RDONLY) != 0)
mount_reload(statfsp);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 29, 4:39 PM (12 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28086496
Default Alt Text
D27161.id80132.diff (5 KB)

Event Timeline