From 75c83c4ac0645ed84374c074bf50d5eef6c7c67a Mon Sep 17 00:00:00 2001 From: phil Date: Fri, 5 Dec 2003 03:18:46 +0000 Subject: [PATCH] b=2313 r=shaver This bug happens when a file is opened twice for write, then both close it at the same time. If they both drop the writecount, then race to compare it against 0, one will free the fsdata and the other will assert. This looks like a big patch, but it's mostly plumbing. I had to do some different argument passing, in order to keep everything protected under the same lock. I removed the writecount spinlock, and use the epoch semaphore for all three things: management of the epoch, protection of the writecount, and atomicity of writecount modifications which result in allocation or freeing of the fsdata. --- lustre/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 95d6dd9..1264aa7 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -17,6 +17,8 @@ tbd Cluster File Systems, Inc. - fix gateway LMC keyword conflict (2318) - fix MDS lock inversions in getattr/reint paths (1844) - fix a rare lock re-ordering bug, which caused deadlock (2322) + - fix i_sem/journal inversion in fsfilt_ext3_write_record (2306) + - protect MDS inode fsdata with stronger locking (2313) * miscellania - allow configurable automake binary, for testing new versions - small update to the lfs documentation -- 1.8.3.1