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@xxxxxxx> --- misc/mke2fs.c | 2 ++ misc/util.c | 5 +++++ misc/util.h | 1 + 3 files changed, 8 insertions(+) diff --git a/misc/mke2fs.c b/misc/mke2fs.c index da77e3a..550e886 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 1fcae1d..2898830 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 476164b..f3827dd 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); -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html