Changeset 01ab41b in mainline for uspace/lib/ext4/libext4_filesystem.c


Ignore:
Timestamp:
2011-10-03T11:57:14Z (13 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9c0c0e1
Parents:
54935cf6
Message:

added more methods needed during ext4 mounting (also copied from ext2)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/libext4_filesystem.c

    r54935cf6 r01ab41b  
    3737
    3838#include <errno.h>
     39#include <malloc.h>
    3940#include "libext4_filesystem.h"
    4041
     42/**
     43 * TODO doxy
     44 */
    4145int ext4_filesystem_init(ext4_filesystem_t *fs, service_id_t service_id)
    4246{
     47
     48        int rc;
     49        ext4_superblock_t *temp_superblock;
     50        size_t block_size;
     51
     52        fs->device = service_id;
     53
     54        // TODO block size !!!
     55        rc = block_init(EXCHANGE_SERIALIZE, fs->device, 2048);
     56        if (rc != EOK) {
     57                return rc;
     58        }
     59
     60        rc = ext4_superblock_read_direct(fs->device, &temp_superblock);
     61        if (rc != EOK) {
     62                block_fini(fs->device);
     63                return rc;
     64        }
     65
     66        block_size = ext4_superblock_get_block_size(temp_superblock);
     67
     68        if (block_size > EXT4_MAX_BLOCK_SIZE) {
     69                block_fini(fs->device);
     70                return ENOTSUP;
     71        }
     72
     73        rc = block_cache_init(service_id, block_size, 0, CACHE_MODE_WT);
     74        if (rc != EOK) {
     75                block_fini(fs->device);
     76                return rc;
     77        }
     78
     79        fs->superblock = temp_superblock;
     80
     81
    4382        // TODO
    4483        return EOK;
    4584}
    4685
     86/**
     87 * TODO doxy
     88 */
    4789int ext4_filesystem_check_sanity(ext4_filesystem_t *fs)
    4890{
    49         // TODO
     91        int rc;
     92
     93        rc = ext4_superblock_check_sanity(fs->superblock);
     94        if (rc != EOK) {
     95                return rc;
     96        }
     97
    5098        return EOK;
    5199}
    52100
     101/**
     102 * TODO doxy
     103 */
    53104int ext4_filesystem_check_flags(ext4_filesystem_t *fs, bool *o_read_only)
    54105{
     
    57108}
    58109
     110/**
     111 * TODO doxy
     112 */
    59113void ext4_filesystem_fini(ext4_filesystem_t *fs)
    60114{
    61         // TODO
     115        free(fs->superblock);
     116        block_fini(fs->device);
    62117}
    63118
Note: See TracChangeset for help on using the changeset viewer.