From: Zheng Liu <gnehzuil.liu@gmail.com>
To: "Theodore Ts'o" <tytso@mit.edu>,
Linus Torvalds <torvalds@linux-foundation.org>,
Markus Trippelsdorf <markus@trippelsdorf.de>,
Zheng Liu <wenqing.lz@taobao.com>, Dave Jones <davej@redhat.com>,
Borislav Petkov <bp@alien8.de>,
"linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [GIT PULL] ext4 updates for 3.9
Date: Thu, 28 Feb 2013 02:59:00 +0800 [thread overview]
Message-ID: <512E5774.2090403@gmail.com> (raw)
In-Reply-To: <20130227184912.GA19624@thunk.org>
Hi Ted,
On 02/28/2013 02:49 AM, Theodore Ts'o wrote:
> Markus, Dave, can you confirm that this fixes your problem?
>
> Thanks!!
>
> (Sigh, this is a real brown paper bug; I'm embarassed I missed this in
> my code review.)
Sorry, I don't have a big disk in my hand now. So I could reproduce it.
But the patch looks good. Thanks for fixing it.
Regards,
- Zheng
>
> - Ted
>
> From f47f0d11096ca5d9e1965d8a9f266aa13fe2b73b Mon Sep 17 00:00:00 2001
> From: Theodore Ts'o <tytso@mit.edu>
> Date: Wed, 27 Feb 2013 13:47:52 -0500
> Subject: [PATCH] ext4: fix extent status tree regression for file systems >
> 512GB
>
> This fixes a regression introduced by commit f7fec032aa782. The
> problem was that the extents status flags caused us to mask out block
> numbers smaller than 2**28 blocks. Since we didn't test with file
> systems smaller than 512GB, we didn't notice this during the
> development cycle.
>
> A typical failure looks like this:
>
> EXT4-fs error (device sdb1): htree_dirblock_to_tree:919: inode #172235804: block
> 152052301: comm ls: bad entry in directory: rec_len is smaller than minimal -
> offset=0(0), inode=0, rec_len=0, name_len=0
>
> ... where 'debugfs -R "stat <172235804>" /dev/sdb1' reports that the
> inode has block number 688923213. When viewed in hex, block number
> 152052301 (from the syslog) is 0x910224D, while block number 688923213
> is 0x2910224D. Note the missing "0x20000000" in the block number.
>
> Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
> Reported-by: Dave Jones <davej@redhat.com>
> Cc: Zheng Liu <gnehzuil.liu@gmail.com>
> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
> ---
> fs/ext4/extents_status.h | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/fs/ext4/extents_status.h b/fs/ext4/extents_status.h
> index cf83e77..c795ff6 100644
> --- a/fs/ext4/extents_status.h
> +++ b/fs/ext4/extents_status.h
> @@ -20,10 +20,10 @@
> #define es_debug(fmt, ...) no_printk(fmt, ##__VA_ARGS__)
> #endif
>
> -#define EXTENT_STATUS_WRITTEN 0x80000000 /* written extent */
> -#define EXTENT_STATUS_UNWRITTEN 0x40000000 /* unwritten extent */
> -#define EXTENT_STATUS_DELAYED 0x20000000 /* delayed extent */
> -#define EXTENT_STATUS_HOLE 0x10000000 /* hole */
> +#define EXTENT_STATUS_WRITTEN (((unsigned long long) 1) << 63)
> +#define EXTENT_STATUS_UNWRITTEN (((unsigned long long) 1) << 62)
> +#define EXTENT_STATUS_DELAYED (((unsigned long long) 1) << 61)
> +#define EXTENT_STATUS_HOLE (((unsigned long long) 1) << 60)
>
> #define EXTENT_STATUS_FLAGS (EXTENT_STATUS_WRITTEN | \
> EXTENT_STATUS_UNWRITTEN | \
> @@ -58,22 +58,22 @@ extern int ext4_es_lookup_extent(struct inode *inode, ext4_lblk_t lblk,
>
> static inline int ext4_es_is_written(struct extent_status *es)
> {
> - return (es->es_pblk & EXTENT_STATUS_WRITTEN);
> + return (es->es_pblk & EXTENT_STATUS_WRITTEN) != 0;
> }
>
> static inline int ext4_es_is_unwritten(struct extent_status *es)
> {
> - return (es->es_pblk & EXTENT_STATUS_UNWRITTEN);
> + return (es->es_pblk & EXTENT_STATUS_UNWRITTEN) != 0;
> }
>
> static inline int ext4_es_is_delayed(struct extent_status *es)
> {
> - return (es->es_pblk & EXTENT_STATUS_DELAYED);
> + return (es->es_pblk & EXTENT_STATUS_DELAYED) != 0;
> }
>
> static inline int ext4_es_is_hole(struct extent_status *es)
> {
> - return (es->es_pblk & EXTENT_STATUS_HOLE);
> + return (es->es_pblk & EXTENT_STATUS_HOLE) != 0;
> }
>
> static inline ext4_fsblk_t ext4_es_status(struct extent_status *es)
>
next prev parent reply other threads:[~2013-02-27 18:59 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-26 20:39 [GIT PULL] ext4 updates for 3.9 Theodore Ts'o
2013-02-27 12:47 ` Markus Trippelsdorf
2013-02-27 15:34 ` Theodore Ts'o
2013-02-27 15:44 ` Markus Trippelsdorf
2013-02-27 17:01 ` Markus Trippelsdorf
2013-02-27 17:10 ` gnehzuil.liu
2013-02-27 17:22 ` Markus Trippelsdorf
2013-02-27 17:38 ` gnehzuil.liu
2013-02-27 17:45 ` Markus Trippelsdorf
2013-02-27 17:52 ` Linus Torvalds
2013-02-27 18:49 ` Theodore Ts'o
2013-02-27 18:56 ` Markus Trippelsdorf
2013-02-27 19:19 ` Dave Jones
2013-02-27 19:27 ` Zheng Liu
2013-02-27 19:29 ` Theodore Ts'o
2013-02-27 20:12 ` [GIT PULL URGENT] ext4 regression fix " Linus Torvalds
2013-02-27 20:15 ` Theodore Ts'o
2013-02-27 20:23 ` Linus Torvalds
2013-02-27 20:41 ` Borislav Petkov
2013-03-01 3:30 ` Dave Jones
2013-03-01 4:00 ` Theodore Ts'o
2013-03-02 19:54 ` Linus Torvalds
2013-03-02 23:15 ` Theodore Ts'o
2013-02-27 20:14 ` Theodore Ts'o
2013-02-27 20:58 ` [GIT PULL] ext4 updates " Dmitry Monakhov
2013-02-27 21:30 ` Theodore Ts'o
2013-03-01 15:41 ` Eric Sandeen
2013-02-28 13:18 ` Dave Chinner
2013-02-27 18:57 ` Dave Jones
2013-02-27 19:04 ` Theodore Ts'o
2013-02-27 19:11 ` Dave Jones
2013-02-27 19:19 ` Theodore Ts'o
2013-02-27 18:59 ` Zheng Liu [this message]
2013-02-27 19:06 ` Borislav Petkov
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=512E5774.2090403@gmail.com \
--to=gnehzuil.liu@gmail.com \
--cc=bp@alien8.de \
--cc=davej@redhat.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=markus@trippelsdorf.de \
--cc=torvalds@linux-foundation.org \
--cc=tytso@mit.edu \
--cc=wenqing.lz@taobao.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox