reiserfs-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [FIXED?] reiser4: problem with key inconsistency
@ 2012-10-28 21:56 Edward Shishkin
  2012-10-31 17:24 ` Ivan Shapovalov
  0 siblings, 1 reply; 8+ messages in thread
From: Edward Shishkin @ 2012-10-28 21:56 UTC (permalink / raw)
  To: reiserfs-devel
  Cc: Luciano, I put the Who? in Mishehu, Jonáš Vidra,
	dimas000, Bringfried Stecklum, Dušan Čolić,
	Alexey Shvetsov

[-- Attachment #1: Type: text/plain, Size: 689 bytes --]

Hi all.
It seems I do have the long-awaited fix.

The symptoms of the problem: kernel starts to issue complaints
about key inconsistency with the suggestions to check the partition
with fsck. Fsck sometimes finds corruptions, but sometimes reports
that file system is consistent.

Please apply the attached patch to reiser4 stuff for 3.6.2, or
download reiser4-for-3.6.4 (which already contains this patch), and
let me know if the problem has not gone:
http://sourceforge.net/projects/reiser4/files/reiser4-for-linux-3.x/

Please, don't rush to deploy production systems on reiser4: it can
take up to 80 hours to reproduce the problem with high workload.

Thank you for your help.
Edward.

[-- Attachment #2: reiser4-update-dkeys-in-squeeze_right_twig.patch --]
[-- Type: text/x-patch, Size: 1451 bytes --]

Update dkeys of the pair of nodes, which took participation
in the "implicit shift" during squalloc on the twig level in
flush time.

Signed-off-by: Edward Shishkin <edward.shishkin@gmail.com>
---
 fs/reiser4/flush.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

--- linux-3.6.2_.orig/fs/reiser4/flush.c
+++ linux-3.6.2_/fs/reiser4/flush.c
@@ -450,6 +450,7 @@ static int znode_check_flushprepped(znod
 {
 	return jnode_check_flushprepped(ZJNODE(node));
 }
+static void update_znode_dkeys(znode * left, znode * right);
 
 /* Flush position functions */
 static void pos_init(flush_pos_t *pos);
@@ -1525,6 +1526,7 @@ static int squeeze_right_twig(znode * le
 	int ret = SUBTREE_MOVED;
 	coord_t coord;		/* used to iterate over items */
 	reiser4_key stop_key;
+	reiser4_tree *tree;
 
 	assert("jmacd-2008", !node_is_empty(right));
 	coord_init_first_unit(&coord, right);
@@ -1552,6 +1554,18 @@ static int squeeze_right_twig(znode * le
 
 		ON_DEBUG(shift_check(vp, left, coord.node));
 	}
+	/*
+	 * @left and @right nodes participated in the
+	 * implicit shift, determined by the pair of
+	 * functions:
+	 * . squalloc_extent() - append units to the @left
+	 * . squalloc_right_twig_cut() - cut the units from @right
+	 * so update their delimiting keys
+	 */
+	tree = znode_get_tree(left);
+	write_lock_dk(tree);
+	update_znode_dkeys(left, right);
+	write_unlock_dk(tree);
 
 	if (node_is_empty(coord.node))
 		ret = SQUEEZE_SOURCE_EMPTY;

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-01-17 18:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-28 21:56 [FIXED?] reiser4: problem with key inconsistency Edward Shishkin
2012-10-31 17:24 ` Ivan Shapovalov
2012-10-31 18:43   ` Edward Shishkin
2012-11-04 12:14     ` Ivan Shapovalov
2012-11-03 16:02   ` Edward Shishkin
2012-11-04 12:09     ` Ivan Shapovalov
2013-01-07 11:05     ` Dušan Čolić
2013-01-17 18:40       ` Edward Shishkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).