From cebffc9680e6a581fca7f26afe223347f46f77c3 Mon Sep 17 00:00:00 2001 From: nikita Date: Wed, 31 May 2006 16:35:20 +0000 Subject: [PATCH] iam: fix defects found by UT --- .../kernel_patches/patches/ext3-iam-separate.patch | 34 +++++++++++---------- lustre/tests/iam_ut | Bin 56203 -> 56447 bytes 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/lustre/kernel_patches/patches/ext3-iam-separate.patch b/lustre/kernel_patches/patches/ext3-iam-separate.patch index bd76f6c..669e8a7 100644 --- a/lustre/kernel_patches/patches/ext3-iam-separate.patch +++ b/lustre/kernel_patches/patches/ext3-iam-separate.patch @@ -1,7 +1,7 @@ Index: iam/fs/ext3/Makefile =================================================================== ---- iam.orig/fs/ext3/Makefile 2006-05-27 19:58:43.000000000 +0400 -+++ iam/fs/ext3/Makefile 2006-05-30 23:07:25.000000000 +0400 +--- iam.orig/fs/ext3/Makefile 2006-05-31 20:24:32.000000000 +0400 ++++ iam/fs/ext3/Makefile 2006-05-31 20:28:15.000000000 +0400 @@ -6,7 +6,7 @@ obj-$(CONFIG_EXT3_FS) += ext3.o ext3-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ @@ -14,8 +14,8 @@ Index: iam/fs/ext3/Makefile Index: iam/fs/ext3/iam.c =================================================================== --- iam.orig/fs/ext3/iam.c 2004-04-06 17:27:52.000000000 +0400 -+++ iam/fs/ext3/iam.c 2006-05-30 18:26:37.000000000 +0400 -@@ -0,0 +1,1021 @@ ++++ iam/fs/ext3/iam.c 2006-05-31 20:28:37.000000000 +0400 +@@ -0,0 +1,1023 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + * @@ -356,11 +356,13 @@ Index: iam/fs/ext3/iam.c + +static void iam_leaf_fini(struct iam_leaf *leaf) +{ -+ iam_leaf_ops(leaf)->fini(leaf); -+ if (leaf->il_bh) { -+ brelse(leaf->il_bh); -+ leaf->il_bh = NULL; -+ } ++ if (leaf->il_path != NULL) { ++ iam_leaf_ops(leaf)->fini(leaf); ++ if (leaf->il_bh) { ++ brelse(leaf->il_bh); ++ leaf->il_bh = NULL; ++ } ++ } +} + +static void iam_leaf_start(struct iam_leaf *folio) @@ -1040,7 +1042,7 @@ Index: iam/fs/ext3/iam.c Index: iam/fs/ext3/iam_lfix.c =================================================================== --- iam.orig/fs/ext3/iam_lfix.c 2004-04-06 17:27:52.000000000 +0400 -+++ iam/fs/ext3/iam_lfix.c 2006-05-30 23:08:00.000000000 +0400 ++++ iam/fs/ext3/iam_lfix.c 2006-05-31 20:26:49.000000000 +0400 @@ -0,0 +1,448 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: @@ -1179,7 +1181,7 @@ Index: iam/fs/ext3/iam_lfix.c + obj = iam_leaf_container(l)->ic_object; + ext3_error(obj->i_sb, __FUNCTION__, + "Wrong magic in node %llu (#%lu): %#x != %#x\n", -+ l->il_bh->b_blocknr, obj->i_ino, ++ (unsigned long long)l->il_bh->b_blocknr, obj->i_ino, + ill->ill_magic, le16_to_cpu(IAM_LEAF_HEADER_MAGIC)); + result = -EIO; + } @@ -1492,8 +1494,8 @@ Index: iam/fs/ext3/iam_lfix.c +} Index: iam/fs/ext3/namei.c =================================================================== ---- iam.orig/fs/ext3/namei.c 2006-05-27 19:58:44.000000000 +0400 -+++ iam/fs/ext3/namei.c 2006-05-30 19:01:04.000000000 +0400 +--- iam.orig/fs/ext3/namei.c 2006-05-31 20:24:32.000000000 +0400 ++++ iam/fs/ext3/namei.c 2006-05-31 20:26:49.000000000 +0400 @@ -24,81 +24,6 @@ * Theodore Ts'o, 2002 */ @@ -2207,7 +2209,7 @@ Index: iam/fs/ext3/namei.c + * key in the node. + */ + if (iam_keycmp(c, -+ iam_key_at(path, p), path->ip_key_target) < 0) { ++ iam_key_at(path, p), path->ip_key_target) > 0) { + struct inode *obj; + + obj = c->ic_object; @@ -3002,8 +3004,8 @@ Index: iam/fs/ext3/namei.c Index: iam/include/linux/lustre_iam.h =================================================================== ---- iam.orig/include/linux/lustre_iam.h 2006-05-27 19:58:44.000000000 +0400 -+++ iam/include/linux/lustre_iam.h 2006-05-30 23:07:25.000000000 +0400 +--- iam.orig/include/linux/lustre_iam.h 2006-05-31 20:24:32.000000000 +0400 ++++ iam/include/linux/lustre_iam.h 2006-05-31 20:28:15.000000000 +0400 @@ -1,9 +1,68 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: diff --git a/lustre/tests/iam_ut b/lustre/tests/iam_ut index 9126980f2d38479921e7e3ae7b1fa99941b9b595..6105504e7e4aea909bdd6718f36ec5c86548aa38 100755 GIT binary patch delta 20503 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 -- 1.8.3.1