From: girish Date: Wed, 23 Jul 2008 18:48:23 +0000 (+0000) Subject: ext3/ext4: orphan list corruption due bad inode (Patch from Q-leap) X-Git-Tag: v1_9_50~1^3~10 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=3b81b30a31c240494a75a13a196aa851c485c0c6;p=fs%2Flustre-release.git ext3/ext4: orphan list corruption due bad inode (Patch from Q-leap) b=16360 i=adilger i=johann CV: ---------------------------------------------------------------------- --- diff --git a/ldiskfs/kernel_patches/patches/ext3-check-bad-inode.patch b/ldiskfs/kernel_patches/patches/ext3-check-bad-inode.patch new file mode 100644 index 0000000..7b0b046 --- /dev/null +++ b/ldiskfs/kernel_patches/patches/ext3-check-bad-inode.patch @@ -0,0 +1,28 @@ +Index: linux-2.6.22/fs/ext3/namei.c +=================================================================== +--- linux-2.6.22.orig/fs/ext3/namei.c 2007-11-15 13:41:18.000000000 +0100 ++++ linux-2.6.22/fs/ext3/namei.c 2007-11-15 13:44:28.000000000 +0100 +@@ -1019,6 +1019,11 @@ static struct dentry *ext3_lookup(struct + + if (!inode) + return ERR_PTR(-EACCES); ++ ++ if (is_bad_inode(inode)) { ++ iput(inode); ++ return ERR_PTR(-ENOENT); ++ } + } + return d_splice_alias(inode, dentry); + } +@@ -1054,6 +1059,11 @@ struct dentry *ext3_get_parent(struct de + if (!inode) + return ERR_PTR(-EACCES); + ++ if (is_bad_inode(inode)) { ++ iput(inode); ++ return ERR_PTR(-ENOENT); ++ } ++ + parent = d_alloc_anon(inode); + if (!parent) { + iput(inode); diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series index ba84f2f..4f05670 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series @@ -26,3 +26,4 @@ ext3-lookup-dotdot-2.6.9.patch ext3-max-dir-size.patch ext3-block-bitmap-validation-2.6-rhel5.patch ext3-xattr-no-update-ctime-2.6-sles10.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series index c1b45d8..27e07ef 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series @@ -31,3 +31,4 @@ ext3-lookup-dotdot-2.6.9.patch ext3-max-dir-size.patch ext3-block-bitmap-validation-2.6-sles10.patch ext3-xattr-no-update-ctime-2.6-sles10.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series index 3572a42..cd6aad8 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series @@ -24,3 +24,4 @@ ext3-orphans-delay.patch ext3-lookup-dotdot-2.6.9.patch ext3-max-dir-size.patch ext3-xattr-no-update-ctime-2.6.22-vanilla.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series index 22d17b5..f11dc47 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series @@ -15,14 +15,15 @@ ext3-nanosecond-2.6.22-vanilla.patch ext3-inode-version-2.6.18-vanilla.patch ext3-ea-expand-lose-block.patch ext3-mmp-2.6.22-vanilla.patch -#ext3-fiemap-2.6.22-vanilla.patch +ext3-fiemap-2.6.22-vanilla.patch ext3-statfs-2.6.22.patch ext3-dynlocks-common.patch ext3-dynlocks-2.6.22-vanilla.patch ext3-iam-common.patch -ext3-iam-2.6.22-vanilla.patch +#ext3-iam-2.6.22-vanilla.patch ext3-lookup-dotdot-2.6.9.patch ext3-orphans-delay.patch ext3-export-journal-api.patch ext3-max-dir-size.patch ext3-xattr-no-update-ctime-2.6-sles10.patch +ext3-check-bad-inode.patch