diff -urN drbd-8.2.5/drbd/drbd_actlog.c drbd-8.2.5-lio/drbd/drbd_actlog.c
--- drbd-8.2.5/drbd/drbd_actlog.c	2008-02-08 06:58:38.000000000 -0800
+++ drbd-8.2.5-lio/drbd/drbd_actlog.c	2008-05-05 20:13:57.000000000 -0700
@@ -294,12 +294,12 @@
 		    (int)BM_SECT_TO_EXT(sector));
 	       );
 
-	spin_lock_irqsave(&mdev->al_lock, flags);
+	spin_lock_irq(&mdev->al_lock);
 
 	extent = lc_find(mdev->act_log, enr);
 
 	if (!extent) {
-		spin_unlock_irqrestore(&mdev->al_lock, flags);
+		spin_unlock_irq(&mdev->al_lock);
 		ERR("al_complete_io() called on inactive extent %u\n", enr);
 		return;
 	}
@@ -307,7 +307,7 @@
 	if (lc_put(mdev->act_log, extent) == 0)
 		wake_up(&mdev->al_wait);
 
-	spin_unlock_irqrestore(&mdev->al_lock, flags);
+	spin_unlock_irq(&mdev->al_lock);
 }
 
 int
@@ -998,7 +998,7 @@
 	 * ok, (capacity & 7) != 0 sometimes, but who cares...
 	 * we count rs_{total,left} in bits, not sectors.
 	 */
-	spin_lock_irqsave(&mdev->al_lock, flags);
+	spin_lock_irq(&mdev->al_lock);
 	count = drbd_bm_clear_bits(mdev, sbnr, ebnr);
 	if (count) {
 		/* we need the lock for drbd_try_clear_on_disk_bm */
@@ -1020,7 +1020,7 @@
 		 * lc_put() in drbd_try_clear_on_disk_bm(). */
 		wake_up = 1;
 	}
-	spin_unlock_irqrestore(&mdev->al_lock, flags);
+	spin_unlock_irq(&mdev->al_lock);
 	if (wake_up)
 		wake_up(&mdev->al_wait);
 }
@@ -1073,14 +1073,14 @@
 
 	/* ok, (capacity & 7) != 0 sometimes, but who cares...
 	 * we count rs_{total,left} in bits, not sectors.  */
-	spin_lock_irqsave(&mdev->al_lock, flags);
+	spin_lock_irq(&mdev->al_lock);
 	count = drbd_bm_set_bits(mdev, sbnr, ebnr);
 
 	enr = BM_SECT_TO_EXT(sector);
 	ext = (struct bm_extent *) lc_find(mdev->resync, enr);
 	if (ext)
 		ext->rs_left += count;
-	spin_unlock_irqrestore(&mdev->al_lock, flags);
+	spin_unlock_irq(&mdev->al_lock);
 
 out:
 	dec_local(mdev);
@@ -1330,16 +1330,16 @@
 		    (long long)sector, enr);
 	    );
 
-	spin_lock_irqsave(&mdev->al_lock, flags);
+	spin_lock_irq(&mdev->al_lock);
 	bm_ext = (struct bm_extent *) lc_find(mdev->resync, enr);
 	if (!bm_ext) {
-		spin_unlock_irqrestore(&mdev->al_lock, flags);
+		spin_unlock_irq(&mdev->al_lock);
 		ERR("drbd_rs_complete_io() called, but extent not found\n");
 		return;
 	}
 
 	if (bm_ext->lce.refcnt == 0) {
-		spin_unlock_irqrestore(&mdev->al_lock, flags);
+		spin_unlock_irq(&mdev->al_lock);
 		ERR("drbd_rs_complete_io(,%llu [=%u]) called, "
 		    "but refcnt is 0!?\n",
 		    (unsigned long long)sector, enr);
@@ -1353,7 +1353,7 @@
 		wake_up(&mdev->al_wait);
 	}
 
-	spin_unlock_irqrestore(&mdev->al_lock, flags);
+	spin_unlock_irq(&mdev->al_lock);
 }
 
 /**
diff -urN drbd-8.2.5/drbd/drbd_bitmap.c drbd-8.2.5-lio/drbd/drbd_bitmap.c
--- drbd-8.2.5/drbd/drbd_bitmap.c	2008-02-08 06:56:09.000000000 -0800
+++ drbd-8.2.5-lio/drbd/drbd_bitmap.c	2008-05-05 20:21:31.000000000 -0700
@@ -288,14 +288,14 @@
 
 	ERR_IF(!b) return;
 
-	spin_lock_irqsave(&b->bm_lock, flags);
+	spin_lock_irq(&b->bm_lock);
 	bits = bm_count_bits(b);
 	if (bits != b->bm_set) {
 		ERR("bm_set was %lu, corrected to %lu. %s:%d\n",
 		    b->bm_set, bits, file, line);
 		b->bm_set = bits;
 	}
-	spin_unlock_irqrestore(&b->bm_lock, flags);
+	spin_unlock_irq(&b->bm_lock);
 }
 
 #define BM_SECTORS_PER_BIT (BM_BLOCK_SIZE/512)
@@ -428,9 +428,9 @@
 
 	ERR_IF(!b) return 0;
 
-	spin_lock_irqsave(&b->bm_lock, flags);
+	spin_lock_irq(&b->bm_lock);
 	s = b->bm_set;
-	spin_unlock_irqrestore(&b->bm_lock, flags);
+	spin_unlock_irq(&b->bm_lock);
 
 	return s;
 }
@@ -845,7 +845,7 @@
 	ERR_IF(!b) return 1;
 	ERR_IF(!b->bm) return 1;
 
-	spin_lock_irqsave(&b->bm_lock,flags);
+	spin_lock_irq(&b->bm_lock);
 	for (bitnr = s; bitnr <= e; bitnr++) {
 		ERR_IF (bitnr >= b->bm_bits) {
 			ERR("bitnr=%lu bm_bits=%lu\n", bitnr, b->bm_bits);
@@ -857,7 +857,7 @@
 		}
 	}
 	b->bm_set += c;
-	spin_unlock_irqrestore(&b->bm_lock, flags);
+	spin_unlock_irq(&b->bm_lock);
 	return c;
 }
 
@@ -888,7 +888,7 @@
 	ERR_IF(!b) return 0;
 	ERR_IF(!b->bm) return 0;
 
-	spin_lock_irqsave(&b->bm_lock, flags);
+	spin_lock_irq(&b->bm_lock);
 	if (bitnr < b->bm_bits) {
 		i = test_bit(bitnr, b->bm) ? 1 : 0;
 	} else if (bitnr == b->bm_bits) {
@@ -898,7 +898,7 @@
 		i = 0;
 	}
 
-	spin_unlock_irqrestore(&b->bm_lock, flags);
+	spin_unlock_irq(&b->bm_lock);
 	return i;
 }
 
@@ -917,7 +917,7 @@
 	ERR_IF(!b) return 1;
 	ERR_IF(!b->bm) return 1;
 
-	spin_lock_irqsave(&b->bm_lock,flags);
+	spin_lock_irq(&b->bm_lock);
 	for (bitnr = s; bitnr <=e; bitnr++) {
 		ERR_IF (bitnr >= b->bm_bits) {
 			ERR("bitnr=%lu bm_bits=%lu\n",bitnr, b->bm_bits);
@@ -925,7 +925,7 @@
 			c += (0 != test_bit(bitnr, b->bm));
 		}
 	}
-	spin_unlock_irqrestore(&b->bm_lock,flags);
+	spin_unlock_irq(&b->bm_lock);
 	return c;
 }
 
@@ -952,7 +952,7 @@
 
 	ERR_IF(!b) return 0;
 	ERR_IF(!b->bm) return 0;
-	spin_lock_irqsave(&b->bm_lock, flags);
+	spin_lock_irq(&b->bm_lock);
 
 	s = S2W(enr);
 	e = min((size_t)S2W(enr+1), b->bm_words);
@@ -964,7 +964,7 @@
 	} else {
 		ERR("start offset (%d) too large in drbd_bm_e_weight\n", s);
 	}
-	spin_unlock_irqrestore(&b->bm_lock, flags);
+	spin_unlock_irq(&b->bm_lock);
 #if DUMP_MD >= 3
 	INFO("enr=%lu weight=%d e=%d s=%d\n", enr, count, e, s);
 #endif
diff -urN drbd-8.2.5/drbd/drbd_buildtag.c drbd-8.2.5-lio/drbd/drbd_buildtag.c
--- drbd-8.2.5/drbd/drbd_buildtag.c	2008-02-18 06:10:31.000000000 -0800
+++ drbd-8.2.5-lio/drbd/drbd_buildtag.c	2008-05-05 20:21:32.000000000 -0700
@@ -2,5 +2,5 @@
 const char * drbd_buildtag(void)
 {
 	return "GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c"
-		" build by phil@mescal, 2008-02-18 15:10:31";
+		" build by root@ubuntu-drbd-viking, 2008-05-05 20:21:32";
 }
diff -urN drbd-8.2.5/drbd/drbd_int.h drbd-8.2.5-lio/drbd/drbd_int.h
--- drbd-8.2.5/drbd/drbd_int.h	2008-02-15 00:57:53.000000000 -0800
+++ drbd-8.2.5-lio/drbd/drbd_int.h	2008-05-05 20:12:15.000000000 -0700
@@ -230,8 +230,8 @@
  * Compatibility Section
  *************************/
 
-#define LOCK_SIGMASK(task, flags)   spin_lock_irqsave(&task->sighand->siglock, flags)
-#define UNLOCK_SIGMASK(task, flags) spin_unlock_irqrestore(&task->sighand->siglock, flags)
+#define LOCK_SIGMASK(task, flags)   spin_lock_irq(&task->sighand->siglock)
+#define UNLOCK_SIGMASK(task, flags) spin_unlock_irq(&task->sighand->siglock)
 #define RECALC_SIGPENDING()	    recalc_sigpending();
 
 #if defined(DBG_SPINLOCKS) && defined(__SMP__)
@@ -1606,9 +1606,9 @@
 {
 	if (error) {
 		unsigned long flags;
-		spin_lock_irqsave(&mdev->req_lock, flags);
+		spin_lock_irq(&mdev->req_lock);
 		__drbd_chk_io_error(mdev, forcedetach);
-		spin_unlock_irqrestore(&mdev->req_lock, flags);
+		spin_unlock_irq(&mdev->req_lock);
 	}
 }
 
@@ -1703,22 +1703,22 @@
 drbd_queue_work_front(struct drbd_work_queue *q, struct drbd_work *w)
 {
 	unsigned long flags;
-	spin_lock_irqsave(&q->q_lock, flags);
+	spin_lock_irq(&q->q_lock);
 	list_add(&w->list, &q->q);
 	up(&q->s); /* within the spinlock,
 		      see comment near end of drbd_worker() */
-	spin_unlock_irqrestore(&q->q_lock, flags);
+	spin_unlock_irq(&q->q_lock);
 }
 
 static inline void
 drbd_queue_work(struct drbd_work_queue *q, struct drbd_work *w)
 {
 	unsigned long flags;
-	spin_lock_irqsave(&q->q_lock, flags);
+	spin_lock_irq(&q->q_lock);
 	list_add_tail(&w->list, &q->q);
 	up(&q->s); /* within the spinlock,
 		      see comment near end of drbd_worker() */
-	spin_unlock_irqrestore(&q->q_lock, flags);
+	spin_unlock_irq(&q->q_lock);
 }
 
 static inline void wake_asender(struct drbd_conf *mdev)
diff -urN drbd-8.2.5/drbd/drbd_main.c drbd-8.2.5-lio/drbd/drbd_main.c
--- drbd-8.2.5/drbd/drbd_main.c	2008-02-13 02:20:10.000000000 -0800
+++ drbd-8.2.5-lio/drbd/drbd_main.c	2008-05-05 20:10:41.000000000 -0700
@@ -348,11 +348,11 @@
 	if (!forcedetach && eh == PassOn)
 		return 1;
 
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	send = (mdev->state.disk == Failed);
 	if (send)
 		_drbd_set_state(_NS(mdev, disk, Diskless), ChgStateHard);
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	if (!send)
 		return ok;
@@ -402,12 +402,12 @@
 	union drbd_state_t os, ns;
 	int rv;
 
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	os = mdev->state;
 	ns.i = (os.i & ~mask.i) | val.i;
 	rv = _drbd_set_state(mdev, ns, f);
 	ns = mdev->state;
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	return rv;
 }
@@ -438,7 +438,7 @@
 		return SS_CW_FailedByPeer;
 
 	rv = 0;
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	os = mdev->state;
 	ns.i = (os.i & ~mask.i) | val.i;
 	if ( !cl_wide_st_chg(mdev, os, ns) ) rv = SS_CW_NoNeed;
@@ -450,7 +450,7 @@
 				rv = 0; /* cont waiting, otherwise fail. */
 		}
 	}
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	return rv;
 }
@@ -469,7 +469,7 @@
 	union drbd_state_t os, ns;
 	int rv;
 
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	os = mdev->state;
 	ns.i = (os.i & ~mask.i) | val.i;
 
@@ -477,7 +477,7 @@
 		rv = is_valid_state(mdev, ns);
 		if (rv == SS_Success)
 			rv = is_valid_state_transition(mdev, ns, os);
-		spin_unlock_irqrestore(&mdev->req_lock, flags);
+		spin_unlock_irq(&mdev->req_lock);
 
 		if (rv < SS_Success) {
 			if (f & ChgStateVerbose)
@@ -504,7 +504,7 @@
 				print_st_err(mdev, os, ns, rv);
 			return rv;
 		}
-		spin_lock_irqsave(&mdev->req_lock, flags);
+		spin_lock_irq(&mdev->req_lock);
 		os = mdev->state;
 		ns.i = (os.i & ~mask.i) | val.i;
 		drbd_state_unlock(mdev);
@@ -512,7 +512,7 @@
 
 	rv = _drbd_set_state(mdev, ns, f);
 	ns = mdev->state;
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	return rv;
 }
@@ -2175,7 +2175,7 @@
 	if (!mdev)
 		return -ENODEV;
 
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	/* to have a stable mdev->state.role
 	 * and no race with updating open_cnt */
 
@@ -2188,7 +2188,7 @@
 
 	if (!rv)
 		mdev->open_cnt++;
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	return rv;
 }
diff -urN drbd-8.2.5/drbd/drbd_receiver.c drbd-8.2.5-lio/drbd/drbd_receiver.c
--- drbd-8.2.5/drbd/drbd_receiver.c	2008-02-15 02:56:05.000000000 -0800
+++ drbd-8.2.5-lio/drbd/drbd_receiver.c	2008-05-05 20:19:12.000000000 -0700
@@ -76,7 +76,7 @@
 	 * not make sense.
 	 */
 
-	spin_lock_irqsave(&drbd_pp_lock, flags);
+	spin_lock_irq(&drbd_pp_lock);
 	/* This lock needs to lock out irq because we might call drbd_pp_free()
 	   from IRQ context.
 	   FIXME but why irq _save_ ?
@@ -88,7 +88,7 @@
 		set_page_private(page, 0); /* just to be polite */
 		drbd_pp_vacant--;
 	}
-	spin_unlock_irqrestore(&drbd_pp_lock, flags);
+	spin_unlock_irq(&drbd_pp_lock);
 	if (page)
 		goto got_page;
 
@@ -98,13 +98,13 @@
 		prepare_to_wait(&drbd_pp_wait, &wait, TASK_INTERRUPTIBLE);
 
 		/* try the pool again, maybe the drbd_kick_lo set some free */
-		spin_lock_irqsave(&drbd_pp_lock, flags);
+		spin_lock_irq(&drbd_pp_lock);
 		page = drbd_pp_pool;
 		if (page) {
 			drbd_pp_pool = (struct page *)page_private(page);
 			drbd_pp_vacant--;
 		}
-		spin_unlock_irqrestore(&drbd_pp_lock, flags);
+		spin_unlock_irq(&drbd_pp_lock);
 
 		if (page)
 			break;
@@ -145,7 +145,7 @@
 	unsigned long flags = 0;
 	int free_it;
 
-	spin_lock_irqsave(&drbd_pp_lock, flags);
+	spin_lock_irq(&drbd_pp_lock);
 	if (drbd_pp_vacant > (DRBD_MAX_SEGMENT_SIZE/PAGE_SIZE)*minor_count) {
 		free_it = 1;
 	} else {
@@ -154,7 +154,7 @@
 		drbd_pp_vacant++;
 		free_it = 0;
 	}
-	spin_unlock_irqrestore(&drbd_pp_lock, flags);
+	spin_unlock_irq(&drbd_pp_lock);
 
 	atomic_dec(&mdev->pp_in_use);
 
diff -urN drbd-8.2.5/drbd/drbd_worker.c drbd-8.2.5-lio/drbd/drbd_worker.c
--- drbd-8.2.5/drbd/drbd_worker.c	2008-02-18 06:06:58.000000000 -0800
+++ drbd-8.2.5-lio/drbd/drbd_worker.c	2008-05-05 20:20:04.000000000 -0700
@@ -111,11 +111,11 @@
 
 	dump_internal_bio("Sec", mdev, bio, 1);
 
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	mdev->read_cnt += e->size >> 9;
 	list_del(&e->w.list);
 	if (list_empty(&mdev->read_ee)) wake_up(&mdev->ee_wait);
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	drbd_chk_io_error(mdev, error, FALSE);
 	drbd_queue_work(&mdev->data.work, &e->w);
@@ -158,7 +158,7 @@
 
 	dump_internal_bio("Sec", mdev, bio, 1);
 
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	mdev->writ_cnt += e->size >> 9;
 	is_syncer_req = is_syncer_block_id(e->block_id);
 
@@ -191,7 +191,7 @@
 
 	if (error)
 		__drbd_chk_io_error(mdev, FALSE);
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	if (is_syncer_req)
 		drbd_rs_complete_io(mdev, e_sector);
@@ -235,9 +235,9 @@
 		 ? write_completed_with_error
 		 : read_completed_with_error
 	       : completed_ok;
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 	_req_mod(req, what, error);
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	BIO_ENDIO_FN_RETURN;
 }
@@ -325,7 +325,7 @@
 	struct drbd_conf *mdev = (struct drbd_conf *) data;
 	int queue;
 
-	spin_lock_irqsave(&mdev->req_lock, flags);
+	spin_lock_irq(&mdev->req_lock);
 
 	if (likely(!test_and_clear_bit(STOP_SYNC_TIMER, &mdev->flags))) {
 		queue = 1;
@@ -337,7 +337,7 @@
 		mdev->resync_work.cb = w_resync_inactive;
 	}
 
-	spin_unlock_irqrestore(&mdev->req_lock, flags);
+	spin_unlock_irq(&mdev->req_lock);
 
 	/* harmless race: list_empty outside data.work.q_lock */
 	if (list_empty(&mdev->resync_work.list) && queue)
