summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2014-08-24 23:54:37 -0400
committerTheodore Ts'o <tytso@mit.edu>2014-08-24 23:54:37 -0400
commitce2e295d7bccb30dfce212d7d694df41c8980e2e (patch)
tree457985b565099ea90e45e74faac62f62ecc37252
parent9ac2930cc9abb0ddca55afead3929e6816c8f353 (diff)
downloade2fsprogs-ce2e295d7bccb30dfce212d7d694df41c8980e2e.tar.gz
mke2fs: improve the error message when a non-existent file is specified
If the user does not specify the file system size, and the file does not exist, give an error message like this: The file /tmp/foo.img does not exist and no size was specified. instead of this: Creating regular file /tmp/foo.img mke2fs: Device size reported to be zero. Invalid partition specified, or partition table wasn't reread after running fdisk, due to a modified partition being busy and in use. You may need to reboot to re-read your partition table. Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r--misc/mke2fs.c2
-rw-r--r--misc/util.c5
-rw-r--r--misc/util.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index da77e3ac..550e8868 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -1796,6 +1796,8 @@ profile_error:
flags |= CHECK_FS_EXIST;
if (!quiet)
flags |= VERBOSE_CREATE;
+ if (fs_blocks_count == 0)
+ flags |= NO_SIZE;
if (!check_plausibility(device_name, flags, &is_device) && !force)
proceed_question(proceed_delay);
diff --git a/misc/util.c b/misc/util.c
index 1fcae1d5..28988306 100644
--- a/misc/util.c
+++ b/misc/util.c
@@ -198,6 +198,11 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
char *fs_label = NULL;
fd = ext2fs_open_file(device, fl, 0666);
+ if ((fd < 0) && (errno == ENOENT) && (flags & NO_SIZE)) {
+ fprintf(stderr, _("The file %s does not exist and no "
+ "size was specified.\n"), device);
+ exit(1);
+ }
if ((fd < 0) && (errno == ENOENT) && (flags & CREATE_FILE)) {
fl |= O_CREAT;
fd = ext2fs_open_file(device, fl, 0666);
diff --git a/misc/util.h b/misc/util.h
index 476164bb..f3827dd4 100644
--- a/misc/util.h
+++ b/misc/util.h
@@ -22,6 +22,7 @@ extern char *journal_location_string;
#define CREATE_FILE 0x0002
#define CHECK_FS_EXIST 0x0004
#define VERBOSE_CREATE 0x0008
+#define NO_SIZE 0x0010
#ifndef HAVE_STRCASECMP
extern int strcasecmp (char *s1, char *s2);