[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <472F8A4A-63CF-4286-BD9A-5BE4981D2443@dilger.ca>
Date: Mon, 20 Nov 2017 12:42:34 -0700
From: Andreas Dilger <adilger@...ger.ca>
To: Artem Blagodarenko <artem.blagodarenko@...il.com>
Cc: linux-ext4 <linux-ext4@...r.kernel.org>,
Artem Blagodarenko <artem.blagodarenko@...gate.com>
Subject: Re: [PATCH v2 1/4] ext2fs: opening filesystem code refactoring
On Nov 16, 2017, at 6:55 AM, Artem Blagodarenko <artem.blagodarenko@...il.com> wrote:
>
> From: Artem Blagodarenko <artem.blagodarenko@...gate.com>
>
> There are similar opening filesystem code in different utilities.
>
> The patch moves this code to ext2fs_try_open_fs().
> This function make one of the action based on parameters:
> 1) open filesystem with given superblock, superblock size
> 2) open filesystem with given superblock, but try to
> find right block size
> 3) open filesystem with default superblock and block size
>
> Signed-off-by: Artem Blagodarenko <artem.blagodarenko@...il.com>
> ---
> e2fsck/unix.c | 28 +++-------------------------
> lib/ext2fs/ext2fs.h | 4 ++++
> lib/ext2fs/openfs.c | 36 +++++++++++++++++++++++++++++++++++-
> misc/dumpe2fs.c | 17 +++--------------
> 4 files changed, 45 insertions(+), 40 deletions(-)
>
> diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
> index 6774e32c..c394ec80 100644
> --- a/lib/ext2fs/ext2fs.h
> +++ b/lib/ext2fs/ext2fs.h
> @@ -1588,6 +1588,10 @@ extern errcode_t ext2fs_open2(const char *name, const char *io_options,
> int flags, int superblock,
> unsigned int block_size, io_manager manager,
> ext2_filsys *ret_fs);
> +extern errcode_t ext2fs_try_open_fs(char *filesystem_name, char *io_options,
> + blk64_t superblock, int blocksize, int flags,
> + io_manager io_ptr, ext2_filsys *ret_fs);
This ext2fs_try_open_fs() function is declared here, but isn't added in this
patch. It is removed in the next patch, but should really have been removed
here instead.
> diff --git a/lib/ext2fs/openfs.c b/lib/ext2fs/openfs.c
> index f74cd245..585ad766 100644
> --- a/lib/ext2fs/openfs.c
> +++ b/lib/ext2fs/openfs.c
> @@ -497,6 +497,40 @@ cleanup:
> return retval;
> }
>
> +errcode_t ext2fs_open2(const char *name, const char *io_options,
> + int flags, int superblock,
> + unsigned int block_size, io_manager manager,
> + ext2_filsys *ret_fs)
> +{
> + errcode_t retval;
> +
> + *ret_fs = NULL;
> + if (superblock && block_size) {
> + retval = __ext2fs_open2(name, io_options,
> + flags, superblock, block_size,
> + manager, ret_fs);
> + } else if (superblock) {
> + int block_size;
> +
> + for (block_size = EXT2_MIN_BLOCK_SIZE;
> + block_size <= EXT2_MAX_BLOCK_SIZE; block_size *= 2) {
> + if (*ret_fs) {
> + ext2fs_free(*ret_fs);
> + *ret_fs = NULL;
> + }
> + retval = __ext2fs_open2(name,
> + io_options, flags,
> + superblock, block_size,
> + manager, ret_fs);
> + if (!retval)
> + break;
> + }
> + } else
> + retval = __ext2fs_open2(name, io_options,
> + flags, 0, 0, manager, ret_fs);
I still think it would be useful to automatically try to open the backup
superblocks, if no superblock number is specified. That could be done
in a separate patch.
In general, it looks like a good cleanup of the code.
Cheers, Andreas
Download attachment "signature.asc" of type "application/pgp-signature" (196 bytes)
Powered by blists - more mailing lists