Revert "ext4: Fix warnings when freezing filesystem with journaled data"
authorJan Kara <jack@suse.cz>
Wed, 29 Mar 2023 15:49:44 +0000 (17:49 +0200)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 15 Apr 2023 00:02:37 +0000 (20:02 -0400)
After making ext4_writepages() properly clean all pages there is no need
for special treatment of filesystem freezing. Revert commit
e6c28a26b799c7640b77daff3e4a67808c74381c.

Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230329154950.19720-13-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/inode.c
fs/ext4/super.c

index c1888cd2a48f7504a17cecee2f9fb1a5202d2262..8dbd352e3986d6432d30b1275c05f35b4e941eec 100644 (file)
@@ -2385,7 +2385,6 @@ static int mpage_journal_page_buffers(handle_t *handle,
 static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd)
 {
        struct address_space *mapping = mpd->inode->i_mapping;
-       struct super_block *sb = mpd->inode->i_sb;
        struct folio_batch fbatch;
        unsigned int nr_folios;
        pgoff_t index = mpd->first_page;
@@ -2405,15 +2404,7 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd)
 
        mpd->map.m_len = 0;
        mpd->next_page = index;
-       /*
-        * Start a transaction for writeback of journalled data. We don't start
-        * the transaction if the filesystem is frozen. In that case we
-        * should not have any dirty data to write anymore but possibly there
-        * are stray page dirty bits left by the checkpointing code so this
-        * loop clears them.
-        */
-       if (ext4_should_journal_data(mpd->inode) &&
-           sb->s_writers.frozen < SB_FREEZE_FS) {
+       if (ext4_should_journal_data(mpd->inode)) {
                handle = ext4_journal_start(mpd->inode, EXT4_HT_WRITE_PAGE,
                                            bpp);
                if (IS_ERR(handle))
@@ -2502,15 +2493,11 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd)
                         * through a pin.
                         */
                        if (!mpd->can_map) {
-                               WARN_ON_ONCE(sb->s_writers.frozen ==
-                                            SB_FREEZE_COMPLETE);
                                err = mpage_submit_folio(mpd, folio);
                                if (err < 0)
                                        goto out;
                                /* Pending dirtying of journalled data? */
                                if (folio_test_checked(folio)) {
-                                       WARN_ON_ONCE(sb->s_writers.frozen >=
-                                                    SB_FREEZE_FS);
                                        err = mpage_journal_page_buffers(handle,
                                                mpd, &folio->page);
                                        if (err < 0)
index a876ebd534a8e4ab2f9624a8b31d14927823630f..690faf766d23a7503f22e4e81ebb8dca5078b3af 100644 (file)
@@ -6293,17 +6293,6 @@ static int ext4_freeze(struct super_block *sb)
                if (error < 0)
                        goto out;
 
-               /*
-                * Do another sync. We really should not have any dirty data
-                * anymore but our checkpointing code does not clear page dirty
-                * bits due to locking constraints so writeback still can get
-                * started for inodes with journalled data which triggers
-                * annoying warnings.
-                */
-               error = sync_filesystem(sb);
-               if (error < 0)
-                       goto out;
-
                /* Journal blocked and flushed, clear needs_recovery flag. */
                ext4_clear_feature_journal_needs_recovery(sb);
                if (ext4_orphan_file_empty(sb))