summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt8
-rw-r--r--src/ext4_mbr.c8
-rw-r--r--src/ext4_mkfs.c2
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*/