diff --git a/dasdfmt/dasdfmt.8 b/dasdfmt/dasdfmt.8 index e41f289c..eb004756 100644 --- a/dasdfmt/dasdfmt.8 +++ b/dasdfmt/dasdfmt.8 @@ -118,16 +118,16 @@ Specify the \fImode\fR to be used to format the device. Valid modes are: .IP full Format the entire disk with the specified blocksize. (default) .IP quick -Format the first two tracks and write label and partition information. Use this -option only if you are sure that the target DASD already contains a regular -format with the specified blocksize. A blocksize can optionally be specified -using \fB-b\fR (\fB--blocksize\fR). +Format the first two tracks and write label and partition information. .br -For thin-provisioned DASD ESE volumes, quick is the default mode. A full space -release then precedes the formatting step. If this space release fails, dasdfmt -falls back to a full-format mode. Formatting stops if the space release fails -and quick mode was specified explicitly using \fB-M\fR. Specify the -\fB--no-discard\fR option to omit the space release. +Use this option for DASD ESE volumes to take the benefits of thin provisioning. +In this case, a full space release precedes the formatting step. If this space +release fails, then the formatting also fails. Specify the \fB--no-discard\fR +option to omit the space release. +.br +For non-ESE volumes use this option only if you are sure that the target DASD +already contains a regular format with the specified blocksize. A blocksize can +optionally be specified using \fB-b\fR (\fB--blocksize\fR). .IP expand Format all unformatted tracks at the end of the target DASD. This mode assumes diff --git a/dasdfmt/dasdfmt.c b/dasdfmt/dasdfmt.c index 2065e12e..a49e41c0 100644 --- a/dasdfmt/dasdfmt.c +++ b/dasdfmt/dasdfmt.c @@ -1230,7 +1230,7 @@ static void dasdfmt_find_start(unsigned int cylinders, unsigned int heads, format_params->start_unit = first; } -static int dasdfmt_release_space(void) +static void dasdfmt_release_space(void) { format_data_t r = { .start_unit = 0, @@ -1240,21 +1240,12 @@ static int dasdfmt_release_space(void) int err = 0; if (!g.ese || g.no_discard) - return 0; + return; printf("Releasing space for the entire device...\n"); err = dasd_release_space(g.dev_node, &r); - /* - * Warn or Error on failing RAS depending on QUICK mode set explicitly or automatically - */ - if (err && !g.mode_specified) { - warnx("Could not release space. Falling back to full format."); - return 1; - } else if (err && g.mode_specified) { + if (err) error("Could not release space: %s", strerror(err)); - } - - return 0; } static void dasdfmt_prepare_and_format(unsigned int cylinders, unsigned int heads, @@ -1454,12 +1445,8 @@ static void do_format_dasd(volume_label_t *vlabel, format_data_t *p, dasdfmt_prepare_and_format(cylinders, heads, p); break; case QUICK: - if (dasdfmt_release_space()) { - p->stop_unit = (cylinders * heads) - 1; - dasdfmt_prepare_and_format(cylinders, heads, p); - } else { - dasdfmt_quick_format(cylinders, heads, p); - } + dasdfmt_release_space(); + dasdfmt_quick_format(cylinders, heads, p); break; case EXPAND: dasdfmt_expand_format(cylinders, heads, p); @@ -1491,7 +1478,7 @@ static void eval_format_mode(void) } if (!g.mode_specified) - mode = g.ese ? QUICK : FULL; + mode = FULL; } /*