diff options
| -rw-r--r-- | src/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/ext4_mbr.c | 8 | ||||
| -rw-r--r-- | src/ext4_mkfs.c | 2 |
3 files changed, 13 insertions, 5 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 82d6a6b..3b82fcf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,8 +1,14 @@ +option(LWEXT4_BUILD_SHARED_LIB "Build shared library" OFF) + #LIBRARY include_directories(.) aux_source_directory(. LWEXT4_SRC) -add_library(lwext4 STATIC ${LWEXT4_SRC}) +if(LWEXT4_BUILD_SHARED_LIB) + add_library(lwext4 SHARED ${LWEXT4_SRC}) +else() + add_library(lwext4 STATIC ${LWEXT4_SRC}) +endif() if (DEFINED SIZE) add_custom_target(lib_size ALL DEPENDS lwext4 COMMAND ${SIZE} liblwext4.a) diff --git a/src/ext4_mbr.c b/src/ext4_mbr.c index 4d95d0c..0376545 100644 --- a/src/ext4_mbr.c +++ b/src/ext4_mbr.c @@ -130,7 +130,7 @@ int ext4_mbr_scan(struct ext4_blockdev *parent, struct ext4_mbr_bdevs *bdevs) int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts, uint32_t disk_id) { int r; - uint64_t disk_size = parent->part_size; + uint64_t disk_size; uint32_t division_sum = parts->division[0] + parts->division[1] + parts->division[2] + parts->division[3]; @@ -142,6 +142,8 @@ int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts, u if (r != EOK) return r; + disk_size = parent->part_size; + /*Calculate CHS*/ uint32_t k = 16; while ((k < 256) && ((disk_size / k / 63) > 1024)) @@ -169,7 +171,7 @@ int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts, u if (i == 0) { part_start += 63; - part_size -= 63; + part_size -= 63 * parent->bdif->ph_bsize; } uint32_t cyl_end = cyl_part + cyl_it - 1; @@ -184,7 +186,7 @@ int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts, u mbr->part_entry[i].chs2[2] = cyl_end; mbr->part_entry[i].first_lba = part_start; - mbr->part_entry[i].sectors = part_size; + mbr->part_entry[i].sectors = part_size / parent->bdif->ph_bsize; cyl_it += cyl_part; } diff --git a/src/ext4_mkfs.c b/src/ext4_mkfs.c index 355b20a..0dfc91f 100644 --- a/src/ext4_mkfs.c +++ b/src/ext4_mkfs.c @@ -710,7 +710,7 @@ int ext4_mkfs(struct ext4_fs *fs, struct ext4_blockdev *bd, bd->fs = fs; if (info->len == 0) - info->len = bd->bdif->ph_bcnt * bd->bdif->ph_bsize; + info->len = bd->part_size; if (info->block_size == 0) info->block_size = 4096; /*Set block size to default value*/ |
