diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_bmap.c')
-rw-r--r-- | fs/xfs/libxfs/xfs_bmap.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index b5eb4743f75a..8c39cc852e4b 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c | |||
@@ -1221,22 +1221,20 @@ xfs_bmap_add_attrfork( | |||
1221 | goto bmap_cancel; | 1221 | goto bmap_cancel; |
1222 | if (!xfs_sb_version_hasattr(&mp->m_sb) || | 1222 | if (!xfs_sb_version_hasattr(&mp->m_sb) || |
1223 | (!xfs_sb_version_hasattr2(&mp->m_sb) && version == 2)) { | 1223 | (!xfs_sb_version_hasattr2(&mp->m_sb) && version == 2)) { |
1224 | __int64_t sbfields = 0; | 1224 | bool mod_sb = false; |
1225 | 1225 | ||
1226 | spin_lock(&mp->m_sb_lock); | 1226 | spin_lock(&mp->m_sb_lock); |
1227 | if (!xfs_sb_version_hasattr(&mp->m_sb)) { | 1227 | if (!xfs_sb_version_hasattr(&mp->m_sb)) { |
1228 | xfs_sb_version_addattr(&mp->m_sb); | 1228 | xfs_sb_version_addattr(&mp->m_sb); |
1229 | sbfields |= XFS_SB_VERSIONNUM; | 1229 | mod_sb = true; |
1230 | } | 1230 | } |
1231 | if (!xfs_sb_version_hasattr2(&mp->m_sb) && version == 2) { | 1231 | if (!xfs_sb_version_hasattr2(&mp->m_sb) && version == 2) { |
1232 | xfs_sb_version_addattr2(&mp->m_sb); | 1232 | xfs_sb_version_addattr2(&mp->m_sb); |
1233 | sbfields |= (XFS_SB_VERSIONNUM | XFS_SB_FEATURES2); | 1233 | mod_sb = true; |
1234 | } | 1234 | } |
1235 | if (sbfields) { | 1235 | spin_unlock(&mp->m_sb_lock); |
1236 | spin_unlock(&mp->m_sb_lock); | 1236 | if (mod_sb) |
1237 | xfs_mod_sb(tp, sbfields); | 1237 | xfs_mod_sb(tp); |
1238 | } else | ||
1239 | spin_unlock(&mp->m_sb_lock); | ||
1240 | } | 1238 | } |
1241 | 1239 | ||
1242 | error = xfs_bmap_finish(&tp, &flist, &committed); | 1240 | error = xfs_bmap_finish(&tp, &flist, &committed); |