Ignore:
File:
1 edited

Legend:

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

    rd1538a1 r3dd148d  
    101101static bool ext4fs_is_file(fs_node_t *node);
    102102static service_id_t ext4fs_service_get(fs_node_t *node);
     103static int ext4fs_size_block(service_id_t, uint32_t *);
     104static int ext4fs_total_block_count(service_id_t, uint64_t *);
     105static int ext4fs_free_block_count(service_id_t, uint64_t *);
    103106
    104107/* Static variables */
     
    836839        ext4fs_node_t *enode = EXT4FS_NODE(fn);
    837840        return enode->instance->service_id;
     841}
     842
     843int ext4fs_size_block(service_id_t service_id, uint32_t *size)
     844{
     845        ext4fs_instance_t *inst;
     846        int rc = ext4fs_instance_get(service_id, &inst);
     847        if (rc != EOK)
     848                return rc;
     849
     850        if (NULL == inst)
     851                return ENOENT;
     852
     853        ext4_superblock_t *sb = inst->filesystem->superblock;
     854        *size = ext4_superblock_get_block_size(sb);
     855
     856        return EOK;
     857}
     858
     859int ext4fs_total_block_count(service_id_t service_id, uint64_t *count)
     860{
     861        ext4fs_instance_t *inst;
     862        int rc = ext4fs_instance_get(service_id, &inst);
     863        if (rc != EOK)
     864                return rc;
     865
     866        if (NULL == inst)
     867                return ENOENT;
     868
     869        ext4_superblock_t *sb = inst->filesystem->superblock;
     870        *count = ext4_superblock_get_blocks_count(sb);
     871
     872        return EOK;
     873}
     874
     875int ext4fs_free_block_count(service_id_t service_id, uint64_t *count)
     876{
     877        ext4fs_instance_t *inst;
     878        int rc = ext4fs_instance_get(service_id, &inst);
     879        if (rc != EOK)
     880                return rc;
     881        if (NULL == inst)
     882                return ENOENT;
     883
     884        ext4_superblock_t *sb = inst->filesystem->superblock;
     885        *count = ext4_superblock_get_free_blocks_count(sb);
     886
     887        return EOK;
    838888}
    839889
     
    857907        .is_directory = ext4fs_is_directory,
    858908        .is_file = ext4fs_is_file,
    859         .service_get = ext4fs_service_get
     909        .service_get = ext4fs_service_get,
     910        .size_block = ext4fs_size_block,
     911        .total_block_count = ext4fs_total_block_count,
     912        .free_block_count = ext4fs_free_block_count
    860913};
    861914
Note: See TracChangeset for help on using the changeset viewer.