# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.685   -> 1.686
#        fs/reiserfs/inode.c    1.33    -> 1.34
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/08/06      [email protected]       1.686
# inode.c:
#   Clear private reiserfs struct parts in inode as part
#   of make_bad_inode(), this should prevent messages about races between knfsd
# --------------------------------------------
#
diff -Nru a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
--- a/fs/reiserfs/inode.c       Tue Aug  6 10:38:13 2002
+++ b/fs/reiserfs/inode.c       Tue Aug  6 10:38:13 2002
@@ -1128,8 +1128,15 @@
    return;
}

+/* We need to clear inode key in private part of inode to avoid races between
+   blocking iput, knfsd and file deletion with creating of safelinks.*/
+static void reiserfs_make_bad_inode(struct inode *inode) {
+    memset(INODE_PKEY(inode), 0, KEY_SIZE);
+    make_bad_inode(inode);
+}
+
void reiserfs_read_inode(struct inode *inode) {
-    make_bad_inode(inode) ;
+    reiserfs_make_bad_inode(inode) ;
}


@@ -1144,7 +1151,7 @@
    int retval;

    if (!p) {
-       make_bad_inode(inode) ;
+       reiserfs_make_bad_inode(inode) ;
       return;
    }

@@ -1164,13 +1171,13 @@
       reiserfs_warning ("vs-13070: reiserfs_read_inode2: "
                    "i/o failure occurred trying to find stat data of %K\n",
                    &key);
-       make_bad_inode(inode) ;
+       reiserfs_make_bad_inode(inode) ;
       return;
    }
    if (retval != ITEM_FOUND) {
       /* a stale NFS handle can trigger this without it being an error */
       pathrelse (&path_to_sd);
-       make_bad_inode(inode) ;
+       reiserfs_make_bad_inode(inode) ;
       inode->i_nlink = 0;
       return;
    }
@@ -1197,7 +1204,7 @@
                             "dead inode read from disk %K. "
                             "This is likely to be race with knfsd. Ignore\n",
                             &key );
-           make_bad_inode( inode );
+           reiserfs_make_bad_inode( inode );
    }

    reiserfs_check_path(&path_to_sd) ; /* init inode should be relsing */