diff --git a/fs/tux3/commit.c b/fs/tux3/commit.c
index b8bed62..59de34b 100644
--- a/fs/tux3/commit.c
+++ b/fs/tux3/commit.c
@@ -87,7 +87,7 @@
 {
 	sb->next_delta		= TUX3_INIT_DELTA;
 	sb->unify		= TUX3_INIT_DELTA;
-	sb->marshal_delta	= TUX3_INIT_DELTA - 1;
+	sb->staging_delta	= TUX3_INIT_DELTA - 1;
 	sb->committed_delta	= TUX3_INIT_DELTA - 1;
 
 	/* Setup initial delta_ref */
@@ -425,7 +425,7 @@
 
 static int do_commit(struct sb *sb, enum unify_flags unify_flag)
 {
-	unsigned delta = sb->marshal_delta;
+	unsigned delta = sb->staging_delta;
 	struct iowait iowait;
 	int err = 0;
 
@@ -511,7 +511,7 @@
 
 static int flush_delta(struct sb *sb)
 {
-	unsigned delta = sb->marshal_delta;
+	unsigned delta = sb->staging_delta;
 	int err;
 #ifndef UNIFY_DEBUG
 	enum unify_flags unify_flag = ALLOW_UNIFY;
@@ -612,8 +612,8 @@
 	/* Update the current delta. */
 	__delta_transition(sb, delta_ref);
 
-	/* Set delta for marshal */
-	sb->marshal_delta = prev->delta;
+	/* Set delta for staging */
+	sb->staging_delta = prev->delta;
 #ifdef UNIFY_DEBUG
 	sb->pending_delta = prev;
 #endif
diff --git a/fs/tux3/commit_flusher.c b/fs/tux3/commit_flusher.c
index d28d656..8e7057d 100644
--- a/fs/tux3/commit_flusher.c
+++ b/fs/tux3/commit_flusher.c
@@ -93,7 +93,7 @@
 
 static void schedule_flush_delta(struct sb *sb)
 {
-	/* Wake up waiters for pending marshal delta */
+	/* Wake up waiters for pending delta staging */
 	wake_up_all(&sb->delta_event_wq);
 }
 
@@ -114,8 +114,8 @@
 /* Try delta transition */
 static void try_delta_transition(struct sb *sb)
 {
-	trace("marshal %u, backend_state %lx",
-	      sb->marshal_delta, sb->backend_state);
+	trace("stage %u, backend_state %lx",
+	      sb->staging_delta, sb->backend_state);
 	if (!test_and_set_bit(TUX3_COMMIT_RUNNING_BIT, &sb->backend_state))
 		delta_transition(sb);
 }
@@ -123,16 +123,16 @@
 /* Do the delta transition until specified delta */
 static int try_delta_transition_until_delta(struct sb *sb, unsigned delta)
 {
-	trace("delta %u, marshal %u, backend_state %lx",
-	      delta, sb->marshal_delta, sb->backend_state);
+	trace("delta %u, stage %u, backend_state %lx",
+	      delta, sb->staging_delta, sb->backend_state);
 
 	/* Already delta transition was started for delta */
-	if (delta_after_eq(sb->marshal_delta, delta))
+	if (delta_after_eq(sb->staging_delta, delta))
 		return 1;
 
 	if (!test_and_set_bit(TUX3_COMMIT_RUNNING_BIT, &sb->backend_state)) {
 		/* Recheck after grabed TUX3_COMMIT_RUNNING_BIT */
-		if (delta_after_eq(sb->marshal_delta, delta)) {
+		if (delta_after_eq(sb->staging_delta, delta)) {
 			clear_bit(TUX3_COMMIT_RUNNING_BIT, &sb->backend_state);
 			return 1;
 		}
@@ -140,7 +140,7 @@
 		delta_transition(sb);
 	}
 
-	return delta_after_eq(sb->marshal_delta, delta);
+	return delta_after_eq(sb->staging_delta, delta);
 }
 
 /* Advance delta transition until specified delta */
@@ -192,7 +192,7 @@
 	err = wait_for_transition(sb, delta);
 	if (err)
 		return err;
-	assert(delta_after_eq(sb->marshal_delta, delta));
+	assert(delta_after_eq(sb->staging_delta, delta));
 
 	/* Wait until committing the current delta */
 	err = wait_for_commit(sb, delta);
diff --git a/fs/tux3/commit_flusher_hack.c b/fs/tux3/commit_flusher_hack.c
index a3c19d2..08696ed 100644
--- a/fs/tux3/commit_flusher_hack.c
+++ b/fs/tux3/commit_flusher_hack.c
@@ -40,16 +40,16 @@
 /* Do the delta transition until specified delta */
 static int try_delta_transition_until_delta(struct sb *sb, unsigned delta)
 {
-	trace("delta %u, marshal %u, backend_state %lx",
-	      delta, sb->marshal_delta, sb->backend_state);
+	trace("delta %u, stage %u, backend_state %lx",
+	      delta, sb->staging_delta, sb->backend_state);
 
 	/* Already delta transition was started for delta */
-	if (delta_after_eq(sb->marshal_delta, delta))
+	if (delta_after_eq(sb->staging_delta, delta))
 		return 1;
 
 	if (!test_and_set_bit(TUX3_COMMIT_RUNNING_BIT, &sb->backend_state)) {
 		/* Recheck after grabed TUX3_COMMIT_RUNNING_BIT */
-		if (delta_after_eq(sb->marshal_delta, delta)) {
+		if (delta_after_eq(sb->staging_delta, delta)) {
 			clear_bit(TUX3_COMMIT_RUNNING_BIT, &sb->backend_state);
 			return 1;
 		}
@@ -57,7 +57,7 @@
 		delta_transition(sb);
 	}
 
-	return delta_after_eq(sb->marshal_delta, delta);
+	return delta_after_eq(sb->staging_delta, delta);
 }
 
 /* Advance delta transition until specified delta */
@@ -92,7 +92,7 @@
 	err = wait_for_transition(sb, delta);
 	if (err)
 		return err;
-	assert(delta_after_eq(sb->marshal_delta, delta));
+	assert(delta_after_eq(sb->staging_delta, delta));
 
 	/* Wait for last referencer of delta was gone */
 	wait_event(sb->delta_event_wq,
@@ -397,15 +397,15 @@
 
 static void schedule_flush_delta(struct sb *sb)
 {
-	/* Wake up waiters for pending marshal delta */
+	/* Wake up waiters for pending delta staging */
 	wake_up_all(&sb->delta_event_wq);
 }
 
 static void try_delta_transition(struct sb *sb)
 {
 #if 0
-	trace("marshal %u, backend_state %lx",
-	      sb->marshal_delta, sb->backend_state);
+	trace("stage %u, backend_state %lx",
+	      sb->staging_delta, sb->backend_state);
 	sync_inodes_sb(vfs_sb(sb));
 #endif
 }
diff --git a/fs/tux3/tux3.h b/fs/tux3/tux3.h
index 4b3c4fb..f52e690 100644
--- a/fs/tux3/tux3.h
+++ b/fs/tux3/tux3.h
@@ -265,7 +265,7 @@
 #ifdef UNIFY_DEBUG
 	struct delta_ref *pending_delta;	/* pending delta for commit */
 #endif
-	unsigned marshal_delta;			/* marshaling delta */
+	unsigned staging_delta;			/* staging delta */
 	unsigned committed_delta;		/* committed delta */
 	wait_queue_head_t delta_event_wq;	/* wait queue for delta event */
 #if TUX3_FLUSHER == TUX3_FLUSHER_ASYNC_OWN
