32e0cc2
Path: news.gmane.org!not-for-mail
32e0cc2
From: Eric Sandeen <sandeen@redhat.com>
32e0cc2
Newsgroups: gmane.comp.file-systems.ext4
32e0cc2
Subject: [PATCH] jbd2: clear BH_Delay & BH_Unwritten in journal_unmap_buffer
32e0cc2
Date: Tue, 07 Feb 2012 16:07:20 -0600
32e0cc2
Lines: 42
32e0cc2
Approved: news@gmane.org
32e0cc2
Message-ID: <4F31A098.4050601@redhat.com>
32e0cc2
NNTP-Posting-Host: plane.gmane.org
32e0cc2
Mime-Version: 1.0
32e0cc2
Content-Type: text/plain; charset=ISO-8859-1
32e0cc2
Content-Transfer-Encoding: 7bit
32e0cc2
X-Trace: dough.gmane.org 1328656072 12026 80.91.229.3 (7 Feb 2012 23:07:52 GMT)
32e0cc2
X-Complaints-To: usenet@dough.gmane.org
32e0cc2
NNTP-Posting-Date: Tue, 7 Feb 2012 23:07:52 +0000 (UTC)
32e0cc2
To: ext4 development <linux-ext4@vger.kernel.org>
32e0cc2
Original-X-From: linux-ext4-owner@vger.kernel.org Wed Feb 08 00:07:52 2012
32e0cc2
Return-path: <linux-ext4-owner@vger.kernel.org>
32e0cc2
Envelope-to: gcfe-linux-ext4@plane.gmane.org
32e0cc2
Original-Received: from vger.kernel.org ([209.132.180.67])
32e0cc2
	by plane.gmane.org with esmtp (Exim 4.69)
32e0cc2
	(envelope-from <linux-ext4-owner@vger.kernel.org>)
32e0cc2
	id 1Ruu8d-0000lK-5P
32e0cc2
	for gcfe-linux-ext4@plane.gmane.org; Wed, 08 Feb 2012 00:07:51 +0100
32e0cc2
Original-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
32e0cc2
	id S1756187Ab2BGXHt (ORCPT <rfc822;gcfe-linux-ext4@m.gmane.org>);
32e0cc2
	Tue, 7 Feb 2012 18:07:49 -0500
32e0cc2
Original-Received: from mx1.redhat.com ([209.132.183.28]:19432 "EHLO mx1.redhat.com"
32e0cc2
	rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP
32e0cc2
	id S1753992Ab2BGXHs (ORCPT <rfc822;linux-ext4@vger.kernel.org>);
32e0cc2
	Tue, 7 Feb 2012 18:07:48 -0500
32e0cc2
Original-Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])
32e0cc2
	by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q17N7dj0027622
32e0cc2
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
32e0cc2
	for <linux-ext4@vger.kernel.org>; Tue, 7 Feb 2012 18:07:48 -0500
32e0cc2
Original-Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1])
32e0cc2
	by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q17M7Kgt001990
32e0cc2
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
32e0cc2
	for <linux-ext4@vger.kernel.org>; Tue, 7 Feb 2012 17:07:21 -0500
32e0cc2
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0) Gecko/20120129 Thunderbird/10.0
32e0cc2
X-Enigmail-Version: 1.3.5
32e0cc2
X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11
32e0cc2
Original-Sender: linux-ext4-owner@vger.kernel.org
32e0cc2
Precedence: bulk
32e0cc2
List-ID: <linux-ext4.vger.kernel.org>
32e0cc2
X-Mailing-List: linux-ext4@vger.kernel.org
32e0cc2
Xref: news.gmane.org gmane.comp.file-systems.ext4:30623
32e0cc2
Archived-At: <http://permalink.gmane.org/gmane.comp.file-systems.ext4/30623>
32e0cc2
32e0cc2
journal_unmap_buffer()'s zap_buffer: code clears a lot of buffer head
32e0cc2
state ala discard_buffer(), but does not touch _Delay or _Unwritten
32e0cc2
as discard_buffer() does.
32e0cc2
32e0cc2
This can be problematic in some areas of the ext4 code which assume
32e0cc2
that if they have found a buffer marked unwritten or delay, then it's
32e0cc2
a live one.  Perhaps those spots should check whether it is mapped
32e0cc2
as well, but if jbd2 is going to tear down a buffer, let's really
32e0cc2
tear it down completely.
32e0cc2
32e0cc2
Without this I get some fsx failures on sub-page-block filesystems
32e0cc2
up until v3.2, at which point 4e96b2dbbf1d7e81f22047a50f862555a6cb87cb
32e0cc2
and 189e868fa8fdca702eb9db9d8afc46b5cb9144c9 make the failures go
32e0cc2
away, because buried within that large change is some more flag
32e0cc2
clearing.  I still think it's worth doing in jbd2, since
32e0cc2
->invalidatepage leads here directly, and it's the right place
32e0cc2
to clear away these flags.
32e0cc2
32e0cc2
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
32e0cc2
Cc: stable@vger.kernel.org
32e0cc2
---
32e0cc2
32e0cc2
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
32e0cc2
index 35ae096..52653306 100644
32e0cc2
--- a/fs/jbd2/transaction.c
32e0cc2
+++ b/fs/jbd2/transaction.c
32e0cc2
@@ -1949,6 +1949,8 @@ zap_buffer_unlocked:
32e0cc2
 	clear_buffer_mapped(bh);
32e0cc2
 	clear_buffer_req(bh);
32e0cc2
 	clear_buffer_new(bh);
32e0cc2
+	clear_buffer_delay(bh);
32e0cc2
+	clear_buffer_unwritten(bh);
32e0cc2
 	bh->b_bdev = NULL;
32e0cc2
 	return may_free;
32e0cc2
 }
32e0cc2
32e0cc2
32e0cc2
--
32e0cc2
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
32e0cc2
the body of a message to majordomo@vger.kernel.org
32e0cc2
More majordomo info at  http://vger.kernel.org/majordomo-info.html
32e0cc2