Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/ext4fs/ext4fs_ops.c

    r89dcf93 rd1538a1  
    101101static bool ext4fs_is_file(fs_node_t *node);
    102102static service_id_t ext4fs_service_get(fs_node_t *node);
    103 static int ext4fs_size_block(service_id_t, uint32_t *);
    104 static int ext4fs_total_block_count(service_id_t, uint64_t *);
    105 static int ext4fs_free_block_count(service_id_t, uint64_t *);
    106103
    107104/* Static variables */
     
    197194        }
    198195       
    199         list_foreach(instance_list, link, ext4fs_instance_t, tmp) {
     196        list_foreach(instance_list, link) {
     197                ext4fs_instance_t *tmp =
     198                    list_get_instance(link, ext4fs_instance_t, link);
     199               
    200200                if (tmp->service_id == service_id) {
    201201                        *inst = tmp;
     
    259259        rc = ext4fs_node_get_core(rfn, eparent->instance, inode);
    260260        if (rc != EOK)
    261                 goto exit;
    262 
    263 exit:
    264         ;
    265 
     261                return rc;
     262       
    266263        /* Destroy search result structure */
    267         int const rc2 = ext4_directory_destroy_result(&result);
    268         return rc == EOK ? rc2 : rc;
     264        return ext4_directory_destroy_result(&result);
    269265}
    270266
     
    840836        ext4fs_node_t *enode = EXT4FS_NODE(fn);
    841837        return enode->instance->service_id;
    842 }
    843 
    844 int ext4fs_size_block(service_id_t service_id, uint32_t *size)
    845 {
    846         ext4fs_instance_t *inst;
    847         int rc = ext4fs_instance_get(service_id, &inst);
    848         if (rc != EOK)
    849                 return rc;
    850 
    851         if (NULL == inst)
    852                 return ENOENT;
    853 
    854         ext4_superblock_t *sb = inst->filesystem->superblock;
    855         *size = ext4_superblock_get_block_size(sb);
    856 
    857         return EOK;
    858 }
    859 
    860 int ext4fs_total_block_count(service_id_t service_id, uint64_t *count)
    861 {
    862         ext4fs_instance_t *inst;
    863         int rc = ext4fs_instance_get(service_id, &inst);
    864         if (rc != EOK)
    865                 return rc;
    866 
    867         if (NULL == inst)
    868                 return ENOENT;
    869 
    870         ext4_superblock_t *sb = inst->filesystem->superblock;
    871         *count = ext4_superblock_get_blocks_count(sb);
    872 
    873         return EOK;
    874 }
    875 
    876 int ext4fs_free_block_count(service_id_t service_id, uint64_t *count)
    877 {
    878         ext4fs_instance_t *inst;
    879         int rc = ext4fs_instance_get(service_id, &inst);
    880         if (rc != EOK)
    881                 return rc;
    882 
    883         ext4_superblock_t *sb = inst->filesystem->superblock;
    884         *count = ext4_superblock_get_free_blocks_count(sb);
    885 
    886         return EOK;
    887838}
    888839
     
    906857        .is_directory = ext4fs_is_directory,
    907858        .is_file = ext4fs_is_file,
    908         .service_get = ext4fs_service_get,
    909         .size_block = ext4fs_size_block,
    910         .total_block_count = ext4fs_total_block_count,
    911         .free_block_count = ext4fs_free_block_count
     859        .service_get = ext4fs_service_get
    912860};
    913861
     
    1006954        *lnkcnt = 1;
    1007955       
    1008         return ext4fs_node_put(root_node);
     956        ext4fs_node_put(root_node);
     957       
     958        return EOK;
    1009959}
    1010960
     
    10951045        }
    10961046       
    1097         int const rc2 = ext4_filesystem_put_inode_ref(inode_ref);
    1098        
    1099         return rc == EOK ? rc2 : rc;
     1047        ext4_filesystem_put_inode_ref(inode_ref);
     1048       
     1049        return rc;
    11001050}
    11011051
     
    12701220                memset(buffer, 0, bytes);
    12711221               
    1272                 rc = async_data_read_finalize(callid, buffer, bytes);
     1222                async_data_read_finalize(callid, buffer, bytes);
    12731223                *rbytes = bytes;
    12741224               
    12751225                free(buffer);
    1276                 return rc;
     1226                return EOK;
    12771227        }
    12781228       
     
    12861236       
    12871237        assert(offset_in_block + bytes <= block_size);
    1288         rc = async_data_read_finalize(callid, block->data + offset_in_block, bytes);
    1289         if (rc != EOK) {
    1290                 block_put(block);
    1291                 return rc;
    1292         }
     1238        async_data_read_finalize(callid, block->data + offset_in_block, bytes);
    12931239       
    12941240        rc = block_put(block);
     
    13221268        size_t len;
    13231269        if (!async_data_write_receive(&callid, &len)) {
    1324                 rc = EINVAL;
    1325                 async_answer_0(callid, rc);
    1326                 goto exit;
     1270                ext4fs_node_put(fn);
     1271                async_answer_0(callid, EINVAL);
     1272                return EINVAL;
    13271273        }
    13281274       
     
    13471293            &fblock);
    13481294        if (rc != EOK) {
     1295                ext4fs_node_put(fn);
    13491296                async_answer_0(callid, rc);
    1350                 goto exit;
     1297                return rc;
    13511298        }
    13521299       
     
    13641311                                    &fblock, true);
    13651312                                if (rc != EOK) {
     1313                                        ext4fs_node_put(fn);
    13661314                                        async_answer_0(callid, rc);
    1367                                         goto exit;
     1315                                        return rc;
    13681316                                }
    13691317                        }
     
    13721320                            &fblock, false);
    13731321                        if (rc != EOK) {
     1322                                ext4fs_node_put(fn);
    13741323                                async_answer_0(callid, rc);
    1375                                 goto exit;
     1324                                return rc;
    13761325                        }
    13771326                } else {
    13781327                        rc = ext4_balloc_alloc_block(inode_ref, &fblock);
    13791328                        if (rc != EOK) {
     1329                                ext4fs_node_put(fn);
    13801330                                async_answer_0(callid, rc);
    1381                                 goto exit;
     1331                                return rc;
    13821332                        }
    13831333                       
     
    13861336                        if (rc != EOK) {
    13871337                                ext4_balloc_free_block(inode_ref, fblock);
     1338                                ext4fs_node_put(fn);
    13881339                                async_answer_0(callid, rc);
    1389                                 goto exit;
     1340                                return rc;
    13901341                        }
    13911342                }
     
    13991350        rc = block_get(&write_block, service_id, fblock, flags);
    14001351        if (rc != EOK) {
     1352                ext4fs_node_put(fn);
    14011353                async_answer_0(callid, rc);
    1402                 goto exit;
     1354                return rc;
    14031355        }
    14041356       
    14051357        if (flags == BLOCK_FLAGS_NOREAD)
    14061358                memset(write_block->data, 0, block_size);
    1407 
     1359       
    14081360        rc = async_data_write_finalize(callid, write_block->data +
    14091361            (pos % block_size), bytes);
    14101362        if (rc != EOK) {
    1411                 block_put(write_block);
    1412                 goto exit;
    1413         }
    1414 
     1363                ext4fs_node_put(fn);
     1364                return rc;
     1365        }
     1366       
    14151367        write_block->dirty = true;
    1416 
     1368       
    14171369        rc = block_put(write_block);
    1418         if (rc != EOK)
    1419                 goto exit;
    1420 
     1370        if (rc != EOK) {
     1371                ext4fs_node_put(fn);
     1372                return rc;
     1373        }
     1374       
    14211375        /* Do some counting */
    14221376        uint32_t old_inode_size = ext4_inode_get_size(fs->superblock,
     
    14261380                inode_ref->dirty = true;
    14271381        }
    1428 
     1382       
    14291383        *nsize = ext4_inode_get_size(fs->superblock, inode_ref->inode);
    14301384        *wbytes = bytes;
    1431 
    1432 exit:
    1433         ;
    1434 
    1435         int const rc2 = ext4fs_node_put(fn);
    1436         return rc == EOK ? rc2 : rc;
     1385       
     1386        return ext4fs_node_put(fn);
    14371387}
    14381388
     
    14601410       
    14611411        rc = ext4_filesystem_truncate_inode(inode_ref, new_size);
    1462         int const rc2 = ext4fs_node_put(fn);
    1463        
    1464         return rc == EOK ? rc2 : rc;
     1412        ext4fs_node_put(fn);
     1413       
     1414        return rc;
    14651415}
    14661416
Note: See TracChangeset for help on using the changeset viewer.