Index: uspace/srv/bd/hr/raid5.c
===================================================================
--- uspace/srv/bd/hr/raid5.c	(revision 2f21cd40379d7aa901196afac339b8af20502cea)
+++ uspace/srv/bd/hr/raid5.c	(revision 00d80c6b0f31b85f1e77293e86837972a5c1f62f)
@@ -831,8 +831,11 @@
 		 * during rebuild.
 		 */
-		fibril_rwlock_write_unlock(&vol->states_lock);
-		fibril_mutex_unlock(&vol->lock);
-		fibril_mutex_lock(&vol->lock);
-		fibril_rwlock_write_lock(&vol->states_lock);
+
+		/*
+		 * fibril_rwlock_write_unlock(&vol->states_lock);
+		 * fibril_mutex_unlock(&vol->lock);
+		 * fibril_mutex_lock(&vol->lock);
+		 * fibril_rwlock_write_lock(&vol->states_lock);
+		 */
 	}
 
@@ -841,9 +844,4 @@
 
 	hr_update_ext_state(vol, bad, HR_EXT_ONLINE);
-
-	rc = vol->meta_ops->save(vol, WITH_STATE_CALLBACK);
-
-end:
-	(void)hr_raid5_update_vol_state(vol);
 
 	fibril_rwlock_write_unlock(&vol->states_lock);
@@ -851,4 +849,17 @@
 	fibril_mutex_unlock(&vol->lock);
 
+	rc = vol->meta_ops->save(vol, WITH_STATE_CALLBACK);
+
+	fibril_mutex_lock(&vol->lock);
+	fibril_rwlock_read_lock(&vol->extents_lock);
+	fibril_rwlock_write_lock(&vol->states_lock);
+
+end:
+	(void)hr_raid5_update_vol_state(vol);
+
+	fibril_rwlock_write_unlock(&vol->states_lock);
+	fibril_rwlock_read_unlock(&vol->extents_lock);
+	fibril_mutex_unlock(&vol->lock);
+
 	if (buf != NULL)
 		free(buf);
