Whamcloud - gitweb
Branch b1_4
authoradilger <adilger>
Tue, 25 Oct 2005 19:57:43 +0000 (19:57 +0000)
committeradilger <adilger>
Tue, 25 Oct 2005 19:57:43 +0000 (19:57 +0000)
commit18f2a63128eacce338efe61adb7ef69d3342791d
tree9c736ddf3b761d2801daa8f1e58fce3a32d3f264
parent5448234022e80c3a9eb81825314b5e0b34f2a9cc
Branch b1_4
Don't get ll_inode_size_lock() in ll_update_inode() as this can be called
with inode_lock (spinlock) held and deadlock.  This was protecting the
setting of lli_smd to prevent ll_inode_size_unlock() from inconsistently
calling lov_stripe_unlock() when it was never locked because lli_smd changed
since ll_inode_size_lock() was called.

We now avoid this race by only ever calling ll_inode_size_lock() with
lli_smd already set, or with "lock_lsm = 0" so we don't care if it changes
between lock and unlock.  This makes sense in any case, because if there is
no lli_smd we shouldn't be doing glimpse/enqueue on the OSTs anyways.
b=9547
r=nikita
lustre/llite/file.c
lustre/llite/llite_internal.h
lustre/llite/llite_lib.c
lustre/llite/llite_mmap.c