From: Zheng Liu <gnehzuil.liu@gmail.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: tytso@mit.edu, linux-ext4@vger.kernel.org
Subject: Re: [PATCH 06/25] libext2fs: fix tests that set LARGE_FILE
Date: Mon, 25 Nov 2013 15:09:02 +0800 [thread overview]
Message-ID: <20131125070902.GA5964@gmail.com> (raw)
In-Reply-To: <20131018044935.7339.68127.stgit@birch.djwong.org>
On Thu, Oct 17, 2013 at 09:49:35PM -0700, Darrick J. Wong wrote:
> For each site where we test for a large file (> 2GB) and set the
> LARGE_FILE feature, use a helper function to make the size test
> consistent with the test that's in e2fsck. This fixes the fsck
> complaints when we try to create a 2GB journal (not so hard with 64k
> block size) and fixes the incorrect test in fileio.c.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
In e2fsck/pass2.c there is also a place that needs to be fixed.
Otherwise the patch looks good to me.
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
- Zheng
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index 3c0bf49..66ed665 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -1318,7 +1318,8 @@ static void deallocate_inode(e2fsck_t ctx, ext2_ino_t ino, char* block_buf)
if (!ext2fs_inode_has_valid_blocks2(fs, &inode))
goto clear_inode;
- if (LINUX_S_ISREG(inode.i_mode) && EXT2_I_SIZE(&inode) >= 0x80000000UL)
+ if (LINUX_S_ISREG(inode.i_mode) &&
+ ext2fs_needs_large_file_feature(EXT2_I_SIZE(&inode)))
ctx->large_files--;
del_block.ctx = ctx;
> ---
> e2fsck/pass1.c | 3 ++-
> lib/ext2fs/ext2fs.h | 6 ++++++
> lib/ext2fs/fileio.c | 2 +-
> lib/ext2fs/mkjournal.c | 2 +-
> 4 files changed, 10 insertions(+), 3 deletions(-)
>
>
> diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
> index ab23e42..8c18a93 100644
> --- a/e2fsck/pass1.c
> +++ b/e2fsck/pass1.c
> @@ -2281,7 +2281,8 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
> }
> pctx->num = 0;
> }
> - if (LINUX_S_ISREG(inode->i_mode) && EXT2_I_SIZE(inode) >= 0x80000000UL)
> + if (LINUX_S_ISREG(inode->i_mode) &&
> + ext2fs_needs_large_file_feature(EXT2_I_SIZE(inode)))
> ctx->large_files++;
> if ((pb.num_blocks != ext2fs_inode_i_blocks(fs, inode)) ||
> ((fs->super->s_feature_ro_compat &
> diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
> index 1ef4d67..8f82dae 100644
> --- a/lib/ext2fs/ext2fs.h
> +++ b/lib/ext2fs/ext2fs.h
> @@ -646,6 +646,12 @@ static inline int ext2fs_has_group_desc_csum(ext2_filsys fs)
> EXT4_FEATURE_RO_COMPAT_METADATA_CSUM);
> }
>
> +/* The LARGE_FILE feature should be set if we have stored files 2GB+ in size */
> +static inline int ext2fs_needs_large_file_feature(unsigned long long file_size)
> +{
> + return file_size >= 0x80000000ULL;
> +}
> +
> /* alloc.c */
> extern errcode_t ext2fs_new_inode(ext2_filsys fs, ext2_ino_t dir, int mode,
> ext2fs_inode_bitmap map, ext2_ino_t *ret);
> diff --git a/lib/ext2fs/fileio.c b/lib/ext2fs/fileio.c
> index 02e6263..6b213b5 100644
> --- a/lib/ext2fs/fileio.c
> +++ b/lib/ext2fs/fileio.c
> @@ -400,7 +400,7 @@ errcode_t ext2fs_file_set_size2(ext2_file_t file, ext2_off64_t size)
>
> /* If we're writing a large file, set the large_file flag */
> if (LINUX_S_ISREG(file->inode.i_mode) &&
> - EXT2_I_SIZE(&file->inode) > 0x7FFFFFFULL &&
> + ext2fs_needs_large_file_feature(EXT2_I_SIZE(&file->inode)) &&
> (!EXT2_HAS_RO_COMPAT_FEATURE(file->fs->super,
> EXT2_FEATURE_RO_COMPAT_LARGE_FILE) ||
> file->fs->super->s_rev_level == EXT2_GOOD_OLD_REV)) {
> diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c
> index c636a97..2afd3b7 100644
> --- a/lib/ext2fs/mkjournal.c
> +++ b/lib/ext2fs/mkjournal.c
> @@ -378,7 +378,7 @@ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
> inode_size = (unsigned long long)fs->blocksize * num_blocks;
> inode.i_size = inode_size & 0xFFFFFFFF;
> inode.i_size_high = (inode_size >> 32) & 0xFFFFFFFF;
> - if (inode.i_size_high)
> + if (ext2fs_needs_large_file_feature(inode_size))
> fs->super->s_feature_ro_compat |=
> EXT2_FEATURE_RO_COMPAT_LARGE_FILE;
> ext2fs_iblk_add_blocks(fs, &inode, es.newblocks);
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-11-25 7:06 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-18 4:48 [PATCH v2 00/25] e2fsprogs patchbomb 10/2013 Darrick J. Wong
2013-10-18 4:49 ` [PATCH 01/25] libext2fs: stop iterating dirents when done linking Darrick J. Wong
2013-10-23 23:39 ` Theodore Ts'o
2013-10-18 4:49 ` [PATCH 02/25] libext2fs: fix ext2fs_open2() truncation of the superblock parameter Darrick J. Wong
2013-10-18 18:32 ` Darrick J. Wong
2013-10-23 14:49 ` Lukáš Czerner
2013-10-18 4:49 ` [PATCH 03/25] mke2fs: don't let resize= turn on resize_inode when meta_bg is set Darrick J. Wong
2013-10-23 15:08 ` Lukáš Czerner
2013-10-23 23:40 ` Theodore Ts'o
2013-10-18 4:49 ` [PATCH 04/25] libext2fs: reject 64bit badblocks numbers Darrick J. Wong
2013-10-23 15:24 ` Lukáš Czerner
2013-10-23 23:58 ` Theodore Ts'o
2013-10-24 11:40 ` Lukáš Czerner
2013-10-18 4:49 ` [PATCH 05/25] libext2fs: don't overflow when punching indirect blocks with large blocks Darrick J. Wong
2013-10-24 0:08 ` Theodore Ts'o
2013-12-04 4:40 ` Darrick J. Wong
2013-10-18 4:49 ` [PATCH 06/25] libext2fs: fix tests that set LARGE_FILE Darrick J. Wong
2013-11-25 7:09 ` Zheng Liu [this message]
2013-11-25 17:57 ` Darrick J. Wong
2013-10-18 4:49 ` [PATCH 07/25] mke2fs: load configfile blocksize setting before 64bit checks Darrick J. Wong
2013-11-25 8:01 ` Zheng Liu
2013-10-18 4:49 ` [PATCH 08/25] debugfs: fix various minor bogosity Darrick J. Wong
2013-11-25 8:08 ` Zheng Liu
2013-11-25 18:05 ` Darrick J. Wong
2013-10-18 4:49 ` [PATCH 09/25] e2fsck: teach EA refcounting code to handle 64bit block addresses Darrick J. Wong
2013-10-18 18:37 ` Darrick J. Wong
2013-11-25 8:18 ` Zheng Liu
2013-10-18 4:50 ` [PATCH 10/25] debugfs: handle 64bit block numbers Darrick J. Wong
2013-10-18 18:47 ` Darrick J. Wong
2013-11-25 8:33 ` Zheng Liu
2013-11-25 17:49 ` Darrick J. Wong
2013-10-18 4:50 ` [PATCH 11/25] libext2fs: only punch complete clusters Darrick J. Wong
2013-10-18 18:55 ` Darrick J. Wong
2013-11-25 8:51 ` Zheng Liu
2013-10-18 4:50 ` [PATCH 12/25] libext2fs: don't update the summary counts when doing implied cluster allocation Darrick J. Wong
2013-11-25 9:03 ` Zheng Liu
2013-10-18 4:50 ` [PATCH 13/25] libext2fs: use ext2fs_punch() to truncate quota file Darrick J. Wong
2013-11-25 9:08 ` Zheng Liu
2013-10-18 4:50 ` [PATCH 14/25] e2fsck: only release clusters when shortening a directory during a rehash Darrick J. Wong
2013-11-25 11:09 ` Zheng Liu
2013-10-18 4:50 ` [PATCH 15/25] e2fsck: print cluster ranges when encountering bitmap errors Darrick J. Wong
2013-11-25 11:56 ` Zheng Liu
2013-10-18 4:50 ` [PATCH 16/25] resize2fs: convert fs to and from 64bit mode Darrick J. Wong
2013-10-18 18:59 ` Darrick J. Wong
2013-11-26 6:44 ` Zheng Liu
2013-11-26 18:39 ` Darrick J. Wong
2013-11-27 2:21 ` Zheng Liu
2013-10-18 4:50 ` [PATCH 17/25] resize2fs: when toggling 64bit, don't free in-use bg data clusters Darrick J. Wong
2013-10-18 4:50 ` [PATCH 18/25] resize2fs: adjust reserved_gdt_blocks when changing group descriptor size Darrick J. Wong
2013-10-18 4:51 ` [PATCH 19/25] resize2fs: during shrink, don't free in-use bg data clusters Darrick J. Wong
2013-10-18 4:51 ` [PATCH 20/25] resize2fs: don't free in-use clusters when moving blocks Darrick J. Wong
2013-10-18 4:51 ` [PATCH 21/25] misc: use the checksum predicate function, not raw flag tests Darrick J. Wong
2013-10-18 4:51 ` [PATCH 22/25] resize2fs: rewrite extent/dir/ea block checksums when migrating Darrick J. Wong
2013-10-18 4:51 ` [PATCH 23/25] libext2fs: support modifying arbitrary extended attributes Darrick J. Wong
2013-10-18 19:25 ` Darrick J. Wong
2013-10-22 1:13 ` Darrick J. Wong
2013-11-26 7:21 ` Zheng Liu
2013-11-26 19:55 ` Darrick J. Wong
2013-11-27 2:52 ` Zheng Liu
2013-11-27 3:13 ` Darrick J. Wong
2013-11-27 11:36 ` Zheng Liu
2013-11-27 1:56 ` Darrick J. Wong
2013-11-29 5:30 ` Zheng Liu
2013-11-29 8:17 ` Jan Kara
2013-11-30 20:24 ` Darrick J. Wong
2013-12-02 8:38 ` Jan Kara
2013-10-18 4:51 ` [PATCH 24/25] misc: add fuse2fs, a FUSE server for e2fsprogs Darrick J. Wong
2013-10-18 19:36 ` Darrick J. Wong
2013-10-22 1:20 ` Darrick J. Wong
2013-10-18 13:13 ` [PATCH v2 00/25] e2fsprogs patchbomb 10/2013 Lukáš Czerner
2013-10-18 18:13 ` Darrick J. Wong
2013-10-18 20:37 ` Darrick J. Wong
2013-10-18 18:39 ` Theodore Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131125070902.GA5964@gmail.com \
--to=gnehzuil.liu@gmail.com \
--cc=darrick.wong@oracle.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.