diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
index 7e1864c6035bb4b55f3248bab76f132a050325db..5a97282aa0748ff13a906df9c1ab4f491e10e9e9 100644
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
@@ -373,7 +373,7 @@ static void nilfs_transaction_lock(struct super_block *sb,
 		nilfs_segctor_do_immediate_flush(sci);
 
 		up_write(&nilfs->ns_segctor_sem);
-		yield();
+		cond_resched();
 	}
 	if (gcflag)
 		ti->ti_flags |= NILFS_TI_GC;