[PATCH 04/11] fs/ntfs3: Optimization in ntfs_set_state()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The current volume flags are updated only if VOLUME_FLAG_DIRTY has been changed.

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@xxxxxxxxxxxxxxxxxxxx>
---
 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




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux