2014-05-21 17:35:29

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH] mke2fs: use ext2fs_open_file() in check_plausibility()

The commit:

802146c mke2fs: create a regular file if necessary

caused a regression on 32-bit machines; the open() fails if
the file size is > 4G.

Using ext2fs_open_file() fixes it.

Resolves: Red Hat Bugzilla #1099892

Signed-off-by: Eric Sandeen <[email protected]>
---

TBH I don't know if this should be using ext2fs_open_file(),
or some other magic like O_LARGEFILE, but this works for me,
and we use the stat/fstat wrapper here too, so ...

diff --git a/misc/util.c b/misc/util.c
index f85942e..d638625 100644
--- a/misc/util.c
+++ b/misc/util.c
@@ -94,7 +94,7 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
if (flags & CREATE_FILE)
fl |= O_CREAT;

- fd = open(device, fl, 0666);
+ fd = ext2fs_open_file(device, fl, 0666);
if (fd < 0) {
fprintf(stderr, _("Could not open %s: %s\n"),
device, error_message(errno));




2014-05-21 17:47:44

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH V2] mke2fs: use ext2fs_open_file() in check_plausibility()

The commit:

802146c mke2fs: create a regular file if necessary

caused a regression on 32-bit machines; the open() fails if
the file size is > 4G.

Using ext2fs_open_file() fixes it.

Resolves: Red Hat Bugzilla #1099892

Signed-off-by: Eric Sandeen <[email protected]>
---

V2: against master! Sorry, first patch was against the
bisection point.

TBH I don't know if this should be using ext2fs_open_file(),
or some other magic like O_LARGEFILE, but this works for me,
and we use the stat/fstat wrapper here too, so ...



diff --git a/misc/util.c b/misc/util.c
index 1c0818f..7e91509 100644
--- a/misc/util.c
+++ b/misc/util.c
@@ -194,10 +194,10 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
char *fs_type = NULL;
char *fs_label = NULL;

- fd = open(device, fl, 0666);
+ fd = ext2fs_open_file(device, fl, 0666);
if ((fd < 0) && (errno == ENOENT) && (flags & CREATE_FILE)) {
fl |= O_CREAT;
- fd = open(device, fl, 0666);
+ fd = ext2fs_open_file(device, fl, 0666);
if (fd >= 0 && (flags & VERBOSE_CREATE))
printf(_("Creating regular file %s\n"), device);
}



2014-05-21 18:00:39

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCH V2] mke2fs: use ext2fs_open_file() in check_plausibility()

On Wed, May 21, 2014 at 12:47:44PM -0500, Eric Sandeen wrote:
> The commit:
>
> 802146c mke2fs: create a regular file if necessary
>
> caused a regression on 32-bit machines; the open() fails if
> the file size is > 4G.
>
> Using ext2fs_open_file() fixes it.
>
> Resolves: Red Hat Bugzilla #1099892
>
> Signed-off-by: Eric Sandeen <[email protected]>
> ---
>
> V2: against master! Sorry, first patch was against the
> bisection point.
>
> TBH I don't know if this should be using ext2fs_open_file(),
> or some other magic like O_LARGEFILE, but this works for me,
> and we use the stat/fstat wrapper here too, so ...

/me suspects do_write_internal() in create_inode.c should use this too.

As for the patch itself, looks good, so
Reviewed-by: Darrick J. Wong <[email protected]>

--D
>
>
>
> diff --git a/misc/util.c b/misc/util.c
> index 1c0818f..7e91509 100644
> --- a/misc/util.c
> +++ b/misc/util.c
> @@ -194,10 +194,10 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
> char *fs_type = NULL;
> char *fs_label = NULL;
>
> - fd = open(device, fl, 0666);
> + fd = ext2fs_open_file(device, fl, 0666);
> if ((fd < 0) && (errno == ENOENT) && (flags & CREATE_FILE)) {
> fl |= O_CREAT;
> - fd = open(device, fl, 0666);
> + fd = ext2fs_open_file(device, fl, 0666);
> if (fd >= 0 && (flags & VERBOSE_CREATE))
> printf(_("Creating regular file %s\n"), device);
> }
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2014-05-22 17:56:26

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH V2] mke2fs: use ext2fs_open_file() in check_plausibility()

On Wed, May 21, 2014 at 12:47:44PM -0500, Eric Sandeen wrote:
> The commit:
>
> 802146c mke2fs: create a regular file if necessary
>
> caused a regression on 32-bit machines; the open() fails if
> the file size is > 4G.
>
> Using ext2fs_open_file() fixes it.
>
> Resolves: Red Hat Bugzilla #1099892
>
> Signed-off-by: Eric Sandeen <[email protected]>

Applied, thanks.

- Ted