[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <75a56ed1-eafc-0a18-9c2d-db4e423c3f26@paragon-software.com>
Date:   Wed, 15 Feb 2023 17:36:12 +0400
From:   Konstantin Komarov <almaz.alexandrovich@...agon-software.com>
To:     <ntfs3@...ts.linux.dev>
CC:     Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        <linux-fsdevel@...r.kernel.org>
Subject: [PATCH 04/11] fs/ntfs3: Optimization in ntfs_set_state()
The current volume flags are updated only if VOLUME_FLAG_DIRTY has been 
changed.
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@...agon-software.com>
---
  fs/ntfs3/fsntfs.c | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/fs/ntfs3/fsntfs.c b/fs/ntfs3/fsntfs.c
index 342938704cfd..d888ba14237f 100644
--- a/fs/ntfs3/fsntfs.c
+++ b/fs/ntfs3/fsntfs.c
@@ -925,6 +925,7 @@ int ntfs_set_state(struct ntfs_sb_info *sbi, enum 
NTFS_DIRTY_FLAGS dirty)
      struct VOLUME_INFO *info;
      struct mft_inode *mi;
      struct ntfs_inode *ni;
+    __le16 info_flags;
      /*
       * Do not change state if fs was real_dirty.
@@ -957,6 +958,8 @@ int ntfs_set_state(struct ntfs_sb_info *sbi, enum 
NTFS_DIRTY_FLAGS dirty)
          goto out;
      }
+    info_flags = info->flags;
+
      switch (dirty) {
      case NTFS_DIRTY_ERROR:
          ntfs_notice(sbi->sb, "Mark volume as dirty due to NTFS errors");
@@ -970,8 +973,10 @@ int ntfs_set_state(struct ntfs_sb_info *sbi, enum 
NTFS_DIRTY_FLAGS dirty)
          break;
      }
      /* Cache current volume flags. */
-    sbi->volume.flags = info->flags;
-    mi->dirty = true;
+    if (info_flags != info->flags) {
+        sbi->volume.flags = info->flags;
+        mi->dirty = true;
+    }
      err = 0;
  out:
-- 
2.34.1
Powered by blists - more mailing lists
 
