[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] [PATCH] unlock page lock before doing a dq



Hello,

There is a lockup condition where we get an error while perparing to write (such
as ENOSPC) and we go to do the gfs2_glock_dq_m and the glock has been marked
dirty.  Since we are already holding the page lock, we will deadlock because we
will try to flush all the pages back to disk and try to take the pagelock again.
Wendy you said I would be doing this in a transaction, but if there as error
inside where we started the transaction, we goto out, where we stop the
transaction first and then go on and unlock the page.  This fixes RH bz 280791.
Thank you,

Josef

--- 18.34/fs/gfs2/ops_address.c.josef	2007-09-07 15:07:03.000000000 -0400
+++ 18.34/fs/gfs2/ops_address.c	2007-09-07 15:12:45.000000000 -0400
@@ -457,8 +457,10 @@ out_alloc_put:
 			gfs2_alloc_put(ip);
 		}
 out_unlock:
+		unlock_page(page);
 		gfs2_glock_dq_m(1, &ip->i_gh);
 		gfs2_holder_uninit(&ip->i_gh);
+		lock_page(page);
 	}
 
 	return error;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]