[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <201104110146.p3B1kxZZ001742@demeter1.kernel.org>
Date: Mon, 11 Apr 2011 01:46:59 GMT
From: bugzilla-daemon@...zilla.kernel.org
To: linux-ext4@...r.kernel.org
Subject: [Bug 32972] EXT4 causes corrupt BitTorrent downloads
https://bugzilla.kernel.org/show_bug.cgi?id=32972
--- Comment #3 from Theodore Tso <tytso@....edu> 2011-04-11 01:46:57 ---
On Sun, Apr 10, 2011 at 10:30:13PM +0800, Yongqiang Yang wrote:
> So the right code should be:
>
> bh->b_state = (bh->b_state & ~EXT4_MAP_FLAGS) | map.m_flags;
> map_bh(bh, inode->i_sb, map.m_pblk);
> if (buffer_unwritten(bh)) {
> /* A delayed write to unwritten bh should be marked
> * new and mapped. Mapped ensures that we don't do
> * get_block multiple times when we write to the same
> * offset and new ensures that we do proper zero out
> * for partial write.
> */
> set_buffer_new(bh);
> }
Actually, I'm much more comfortable backing out commit 6de9843da
entirely. The above is *not* equivalent to what we had before ---
consider the case where ext4_map_blocks returns !EXT4_MAP_MAPPED &&
!EXT4_MAP_UNWRITTEN.
I don't *think* this should happen in the case where ext4_map_blocks
returns a value > 0, but the fact that it's not obvious, means I'd
much rather keep things the way that they are. It's not like dropping
the set_buffer_mapped(bh) was saving anything measurable anyway....
- Ted
--
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists