[dm-devel] [PATCH] dm-mpath: Change _mpath_lock to a semaphore

Kevin Corry kevcorry at us.ibm.com
Fri Feb 13 10:41:06 UTC 2004


Change _mpath_lock from a spinlock to a semaphore.

--- diff/drivers/md/dm-mpath.c	2004-02-12 13:58:08.000000000 -0600
+++ source/drivers/md/dm-mpath.c	2004-02-12 13:55:30.000000000 -0600
@@ -304,7 +304,7 @@
 static struct dm_daemon _kmpathd;
 
 static LIST_HEAD(_mpaths);
-static spinlock_t _mpath_lock = SPIN_LOCK_UNLOCKED;
+static DECLARE_MUTEX(_mpath_lock);
 
 static void submit_ios(struct bio *bio)
 {
@@ -409,7 +409,7 @@
 	struct multipath *m;
 	unsigned interval = 0;
 
-	spin_lock(&_mpath_lock);
+	down(&_mpath_lock);
 	list_for_each_entry (m, &_mpaths, list) {
 		dispatch_failed_ios(m);
 		iterate_paths(m, test_path);
@@ -424,7 +424,7 @@
 
 		interval = min_not_zero(interval, m->test_interval);
 	}
-	spin_unlock(&_mpath_lock);
+	up(&_mpath_lock);
 
 	blk_run_queues();
 
@@ -689,9 +689,9 @@
 	ti->private = m;
 	m->ti = ti;
 
-	spin_lock(&_mpath_lock);
+	down(&_mpath_lock);
 	list_add(&m->list, &_mpaths);
-	spin_unlock(&_mpath_lock);
+	up(&_mpath_lock);
 
 	return 0;
 
@@ -704,9 +704,9 @@
 {
 	struct multipath *m = (struct multipath *) ti->private;
 
-	spin_lock(&_mpath_lock);
+	down(&_mpath_lock);
 	list_del(&m->list);
-	spin_unlock(&_mpath_lock);
+	up(&_mpath_lock);
 
 	free_multipath(m);
 }




More information about the dm-devel mailing list