Commit 62560248 authored by Konstantin Komarov's avatar Konstantin Komarov

fs/ntfs3: Optimization in ntfs_set_state()

The current volume flags are updated only if VOLUME_FLAG_DIRTY has been changed.
Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 1842fbc8
...@@ -925,6 +925,7 @@ int ntfs_set_state(struct ntfs_sb_info *sbi, enum NTFS_DIRTY_FLAGS dirty) ...@@ -925,6 +925,7 @@ int ntfs_set_state(struct ntfs_sb_info *sbi, enum NTFS_DIRTY_FLAGS dirty)
struct VOLUME_INFO *info; struct VOLUME_INFO *info;
struct mft_inode *mi; struct mft_inode *mi;
struct ntfs_inode *ni; struct ntfs_inode *ni;
__le16 info_flags;
/* /*
* Do not change state if fs was real_dirty. * 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) ...@@ -957,6 +958,8 @@ int ntfs_set_state(struct ntfs_sb_info *sbi, enum NTFS_DIRTY_FLAGS dirty)
goto out; goto out;
} }
info_flags = info->flags;
switch (dirty) { switch (dirty) {
case NTFS_DIRTY_ERROR: case NTFS_DIRTY_ERROR:
ntfs_notice(sbi->sb, "Mark volume as dirty due to NTFS errors"); 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) ...@@ -970,8 +973,10 @@ int ntfs_set_state(struct ntfs_sb_info *sbi, enum NTFS_DIRTY_FLAGS dirty)
break; break;
} }
/* Cache current volume flags. */ /* Cache current volume flags. */
sbi->volume.flags = info->flags; if (info_flags != info->flags) {
mi->dirty = true; sbi->volume.flags = info->flags;
mi->dirty = true;
}
err = 0; err = 0;
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment