summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sbin/disklabel/disklabel.87
-rw-r--r--sbin/disklabel/editor.c32
2 files changed, 25 insertions, 14 deletions
diff --git a/sbin/disklabel/disklabel.8 b/sbin/disklabel/disklabel.8
index 2575f643170..2864073d2c7 100644
--- a/sbin/disklabel/disklabel.8
+++ b/sbin/disklabel/disklabel.8
@@ -1,4 +1,4 @@
-.\" $OpenBSD: disklabel.8,v 1.64 2007/12/16 14:58:27 sobrado Exp $
+.\" $OpenBSD: disklabel.8,v 1.65 2008/01/08 23:46:54 krw Exp $
.\" $NetBSD: disklabel.8,v 1.9 1995/03/18 14:54:38 cgd Exp $
.\"
.\" Copyright (c) 1987, 1988, 1991, 1993
@@ -33,7 +33,7 @@
.\"
.\" @(#)disklabel.8 8.2 (Berkeley) 4/19/94
.\"
-.Dd $Mdocdate: December 16 2007 $
+.Dd $Mdocdate: January 8 2008 $
.Dt DISKLABEL 8
.Os
.Sh NAME
@@ -425,7 +425,8 @@ If any changes have been made, the user will be
asked whether or not to save the changes to the on-disk label.
.It Cm r
Recalculate free space.
-This option should really not be necessary under normal circumstances.
+This command displays all the free areas on the disk and the total
+number of free sectors.
.It Cm s Op Ar path
Save the label to a file in
.Tn ASCII
diff --git a/sbin/disklabel/editor.c b/sbin/disklabel/editor.c
index ff93512fee8..d75f33e8f14 100644
--- a/sbin/disklabel/editor.c
+++ b/sbin/disklabel/editor.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: editor.c,v 1.148 2008/01/08 13:12:26 krw Exp $ */
+/* $OpenBSD: editor.c,v 1.149 2008/01/08 23:46:54 krw Exp $ */
/*
* Copyright (c) 1997-2000 Todd C. Miller <Todd.Miller@courtesan.com>
@@ -17,7 +17,7 @@
*/
#ifndef lint
-static char rcsid[] = "$OpenBSD: editor.c,v 1.148 2008/01/08 13:12:26 krw Exp $";
+static char rcsid[] = "$OpenBSD: editor.c,v 1.149 2008/01/08 23:46:54 krw Exp $";
#endif /* not lint */
#include <sys/types.h>
@@ -344,11 +344,22 @@ editor(struct disklabel *lp, int f, char *dev, char *fstabfile)
/* NOTREACHED */
break;
- case 'r':
- /* Recalculate free space */
- editor_countfree(&label, &freesectors);
- puts("Recalculated free space.");
- break;
+ case 'r': {
+ struct diskchunk *chunks;
+ int i;
+ /* Recalculate & display free space. */
+ editor_countfree(&label, &freesectors);
+ chunks = free_chunks(&label);
+ for (i = 0; chunks[i].start != 0 || chunks[i].stop != 0;
+ i++)
+ fprintf(stderr, "Free sectors: %16llu - %16llu "
+ "(%16llu)\n",
+ chunks[i].start, chunks[i].stop - 1,
+ chunks[i].stop - chunks[i].start);
+ fprintf(stderr, "Total free sectors: %llu.\n",
+ freesectors);
+ break;
+ }
case 's':
if (arg == NULL) {
@@ -1579,9 +1590,8 @@ editor_help(char *arg)
break;
case 'r':
puts(
-"The 'r' command is used to recalculate the free space available. This option\n"
-"should really not be necessary under normal circumstances but can be useful if\n"
-"disklabel gets confused.\n");
+"The 'r' command is used to recalculate and display details about\n"
+"the available free space.\n");
break;
case 'u':
puts(
@@ -1636,7 +1646,7 @@ editor_help(char *arg)
puts("\tn [part] - set the mount point for a partition.");
puts("\tp [unit] - print label.");
puts("\tq - quit and save changes.");
- puts("\tr - recalculate free space.");
+ puts("\tr - recalculate & display free space details.");
puts("\ts [path] - save label to file.");
puts("\tu - undo last change.");
puts("\tw - write label to disk.");