xfs: don't invalidate whole file on DAX read/write
[cascardo/linux.git] / fs / xfs / xfs_fsops.c
index 27e6e8c..0f96847 100644 (file)
@@ -106,7 +106,9 @@ xfs_fs_geometry(
                        (xfs_sb_version_hasfinobt(&mp->m_sb) ?
                                XFS_FSOP_GEOM_FLAGS_FINOBT : 0) |
                        (xfs_sb_version_hassparseinodes(&mp->m_sb) ?
-                               XFS_FSOP_GEOM_FLAGS_SPINODES : 0);
+                               XFS_FSOP_GEOM_FLAGS_SPINODES : 0) |
+                       (xfs_sb_version_hasrmapbt(&mp->m_sb) ?
+                               XFS_FSOP_GEOM_FLAGS_RMAPBT : 0);
                geo->logsectsize = xfs_sb_version_hassector(&mp->m_sb) ?
                                mp->m_sb.sb_logsectsize : BBSIZE;
                geo->rtsectsize = mp->m_sb.sb_blocksize;
@@ -584,6 +586,7 @@ xfs_growfs_data_private(
        } else
                mp->m_maxicount = 0;
        xfs_set_low_space_thresholds(mp);
+       mp->m_alloc_set_aside = xfs_alloc_set_aside(mp);
 
        /* update secondary superblocks. */
        for (agno = 1; agno < nagcount; agno++) {
@@ -721,7 +724,7 @@ xfs_fs_counts(
        cnt->allocino = percpu_counter_read_positive(&mp->m_icount);
        cnt->freeino = percpu_counter_read_positive(&mp->m_ifree);
        cnt->freedata = percpu_counter_read_positive(&mp->m_fdblocks) -
-                                                       XFS_ALLOC_SET_ASIDE(mp);
+                                               mp->m_alloc_set_aside;
 
        spin_lock(&mp->m_sb_lock);
        cnt->freertx = mp->m_sb.sb_frextents;
@@ -809,7 +812,7 @@ xfs_reserve_blocks(
        error = -ENOSPC;
        do {
                free = percpu_counter_sum(&mp->m_fdblocks) -
-                                                       XFS_ALLOC_SET_ASIDE(mp);
+                                               mp->m_alloc_set_aside;
                if (!free)
                        break;