From 3b36ad93151ac5e60f14069e81fa78e4b26d3eee Mon Sep 17 00:00:00 2001
From: bwzhou <bwzhou>
Date: Thu, 29 Nov 2007 05:39:20 +0000
Subject: [PATCH] Branch b1_6 b=14326 r=johann,bwzhou

Use old size assignment to avoid deadlock caused by ll_inode_size_lock calls down semaphore under spinlock held.
---
 lustre/llite/llite_lib.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c
index e36bf757fe..fdaf011332 100644
--- a/lustre/llite/llite_lib.c
+++ b/lustre/llite/llite_lib.c
@@ -1739,9 +1739,13 @@ void ll_update_inode(struct inode *inode, struct lustre_md *md)
                 inode->i_rdev = old_decode_dev(body->rdev);
 #endif
         if (body->valid & OBD_MD_FLSIZE) {
+#if 0           /* Can't block ll_test_inode->ll_update_inode, b=14326*/
                 ll_inode_size_lock(inode, 0);
                 i_size_write(inode, body->size);
                 ll_inode_size_unlock(inode, 0);
+#else
+                inode->i_size = body->size;
+#endif
         }
         if (body->valid & OBD_MD_FLBLOCKS)
                 inode->i_blocks = body->blocks;
-- 
GitLab