Whamcloud - gitweb
LU-10018 protocol: MDT as a statfs proxy
[fs/lustre-release.git] / lustre / llite / llite_lib.c
index 54a752f..0152df5 100644 (file)
@@ -227,7 +227,8 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
 
        data->ocd_connect_flags2 = OBD_CONNECT2_FLR |
                                   OBD_CONNECT2_LOCK_CONVERT |
-                                  OBD_CONNECT2_DIR_MIGRATE;
+                                  OBD_CONNECT2_DIR_MIGRATE |
+                                  OBD_CONNECT2_SUM_STATFS;
 
 #ifdef HAVE_LRU_RESIZE_SUPPORT
         if (sbi->ll_flags & LL_SBI_LRU_RESIZE)
@@ -1813,6 +1814,9 @@ int ll_statfs_internal(struct ll_sb_info *sbi, struct obd_statfs *osfs,
        CDEBUG(D_SUPER, "MDC blocks %llu/%llu objects %llu/%llu\n",
                osfs->os_bavail, osfs->os_blocks, osfs->os_ffree,osfs->os_files);
 
+       if (osfs->os_state & OS_STATE_SUM)
+               GOTO(out, rc);
+
         if (sbi->ll_flags & LL_SBI_LAZYSTATFS)
                 flags |= OBD_STATFS_NODELAY;
 
@@ -1841,6 +1845,7 @@ int ll_statfs_internal(struct ll_sb_info *sbi, struct obd_statfs *osfs,
                 osfs->os_ffree = obd_osfs.os_ffree;
         }
 
+out:
         RETURN(rc);
 }
 int ll_statfs(struct dentry *de, struct kstatfs *sfs)
@@ -1854,7 +1859,7 @@ int ll_statfs(struct dentry *de, struct kstatfs *sfs)
         ll_stats_ops_tally(ll_s2sbi(sb), LPROC_LL_STAFS, 1);
 
        /* Some amount of caching on the client is allowed */
-       rc = ll_statfs_internal(ll_s2sbi(sb), &osfs, 0);
+       rc = ll_statfs_internal(ll_s2sbi(sb), &osfs, OBD_STATFS_SUM);
        if (rc)
                return rc;