diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 54bdd4884fe6..d799f424f218 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -2806,7 +2806,7 @@ static int ext4_writepages(struct address_space *mapping,
 	int ret;
 	int alloc_ctx;
 
-	if (unlikely(ext4_forced_shutdown(sb)))
+	if (unlikely(ext4_forced_shutdown(sb)) || mapping->host->i_sb->s_writers.frozen == SB_FREEZE_COMPLETE)
 		return -EIO;
 
 	alloc_ctx = ext4_writepages_down_read(sb);