Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/mfs/mfs_ops.c

    rcc8044e r1eaa3cf  
    216216        sbi->isearch = 0;
    217217        sbi->zsearch = 0;
     218        sbi->nfree_zones_valid = false;
     219        sbi->nfree_zones = 0;
    218220
    219221        if (version == MFS_VERSION_V3) {
     
    11811183                return rc;
    11821184
    1183         rc = mfs_count_free_zones(inst, &block_free);
    1184         *count = block_free;
    1185 
    1186         return rc;
     1185        struct mfs_sb_info *sbi = inst->sbi;
     1186
     1187        if (!sbi->nfree_zones_valid) {
     1188                /* The cached number of free zones is not valid,
     1189                 * we need to scan the bitmap to retrieve the
     1190                 * current value.
     1191                 */
     1192
     1193                rc = mfs_count_free_zones(inst, &block_free);
     1194                if (rc != EOK)
     1195                        return rc;
     1196
     1197                sbi->nfree_zones = block_free;
     1198                sbi->nfree_zones_valid = true;
     1199        }
     1200
     1201        *count = sbi->nfree_zones;
     1202
     1203        return EOK;
    11871204}
    11881205
Note: See TracChangeset for help on using the changeset viewer.