diff --git a/fs/afs/write.c b/fs/afs/write.c
index 18e46e31523ccc0295a35c058baa88d0ebf960ed..cb5f8a3df5773cba37c292e65ac6e985b0af11bc 100644
--- a/fs/afs/write.c
+++ b/fs/afs/write.c
@@ -119,6 +119,11 @@ try_again:
 	}
 
 	if (f != t) {
+		if (PageWriteback(page)) {
+			trace_afs_page_dirty(vnode, tracepoint_string("alrdy"),
+					     page->index, priv);
+			goto flush_conflicting_write;
+		}
 		if (to < f || from > t)
 			goto flush_conflicting_write;
 		if (from < f)