ext4: remove dynamic block cache allocation in ext4_mount
authorGrzegorz Kostka <kostka.grzegorz@gmail.com>
Fri, 17 Feb 2017 12:44:05 +0000 (13:44 +0100)
committerGrzegorz Kostka <kostka.grzegorz@gmail.com>
Fri, 17 Feb 2017 12:49:14 +0000 (13:49 +0100)
src/ext4.c

index 3e8d0455149c1b42f4f490f767845c5bac7b3ab8..956deb4fa94dd59b736f91210ae7b0b787efed50 100644 (file)
@@ -91,6 +91,9 @@ struct ext4_mountpoint {
 
        /**@brief   Journal.*/
        struct jbd_journal jbd_journal;
+
+       /**@brief   Block cache.*/
+       struct ext4_bcache bc;
 };
 
 /**@brief   Block devices descriptor.*/
@@ -414,12 +417,10 @@ int ext4_mount(const char *dev_name, const char *mount_point,
 
        bsize = ext4_sb_get_block_size(&mp->fs.sb);
        ext4_block_set_lb_size(bd, bsize);
-
-       bc = ext4_malloc(sizeof(struct ext4_bcache));
+       bc = &mp->bc;
 
        r = ext4_bcache_init_dynamic(bc, CONFIG_BLOCK_DEV_CACHE_SIZE, bsize);
        if (r != EOK) {
-               ext4_free(bc);
                ext4_block_fini(bd);
                return r;
        }
@@ -433,11 +434,10 @@ int ext4_mount(const char *dev_name, const char *mount_point,
                ext4_bcache_cleanup(bc);
                ext4_block_fini(bd);
                ext4_bcache_fini_dynamic(bc);
-               ext4_free(bc);
                return r;
        }
-       bd->fs = &mp->fs;
 
+       bd->fs = &mp->fs;
        return r;
 }
 
@@ -466,7 +466,7 @@ int ext4_umount(const char *mount_point)
 
        ext4_bcache_cleanup(mp->fs.bdev->bc);
        ext4_bcache_fini_dynamic(mp->fs.bdev->bc);
-       ext4_free(mp->fs.bdev->bc);
+
        r = ext4_block_fini(mp->fs.bdev);
 Finish:
        mp->fs.bdev->fs = NULL;