ext4_balloc_bitmap_csum: should be blocks_per_group / 8.
[lwext4.git] / readme.mediawiki
index e2218db4eafba35f44dda33e855664637337b896..b97c3d46f7977a87fb5148df5977919c32ad55b1 100644 (file)
@@ -1,26 +1,26 @@
 ==About==
 
-The main goal of the lwext4 project is to provide ext2/3/4 filesystem
-library for microcontrolers with SD/MMC card support. Ext2/3/4, in my
-opinion is one of the best filesystem for SD/MMC.
+The main goal of the lwext4 project is to provide ext2/3/4 filesystem for microcontrollers. It may be an interesting alternative for traditional MCU filesystem libraries (mostly based on FAT32).
 
+Lwext4 may be used with SD/MMC card, USB flash drive or other block based memory device. However it is not good for flash memory–based storage devices.
+
+Code is also available on github:
+https://github.com/gkostka/lwext4
+
+Feel free to contact me:
 kostka.grzegorz@gmail.com
 
 ==Minimum memory requirements==
-
-=====PROGRAM:=====
- - 20KB
-=====RAM:=====
- - 8KB
-=====STACK:=====
- - 2KB
+* .text:  20KB - 40KB (dependent of feature set chosen)
+* .data:  8KB         (minimum 8 x 1KB  block cache)
+* .stack: 2KB
 
 
 ==ext2/3/4 vs FAT32==
 ;ext2/3/4 > FAT32
-* fseek operation on big file in FAT32 is IO heavy
-* ext2/3/4 HTREE directories operations are faster than FAT32  
-* ext4 extents makes truncate/remove opertion really fast
+* fast fseek on big file (in FAT32 fseek equals many IO operations)
+* ext2/3/4 HTREE directory operations (like find entry) are faster
+* fast extent big file allocation (truncate/remove)
 * more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout
 
 ;ext2/3/4 < FAT32
@@ -28,87 +28,71 @@ kostka.grzegorz@gmail.com
 
 ==Credits==
 
-A lot of the implementation of lwext4 was taken from HelenOS:
-    http://helenos.org/
-Some of ideas and features are based on FreeBSD and Linux implementations.
+The most of the source code of lwext4 was taken from HelenOS:
+* http://helenos.org/
+Some features are based on FreeBSD and Linux implementations.
 
 ==Supported ext2/3/4 fs features==
-
-
-;FEATURE_INCOMPAT (unable to mount with unsupported feature):
-    compression: no
-    filetype: yes
-    recover: no (could be ignored)
-    journal_dev: no
-    meta_bg: yes
-    extents: yes
-    64bit: yes
-    mmp: no (could be ignored)
-    flex_bg: yes
-    ea_inode: no
-    dirdata: no
-    bg_meta_csum: no
-    largedir: no
-    inline_data: no
-
-;FEATURE_COMPAT (able to mount with unsupported feature):
-    dir_prealloc: no
-    imagic_inodes: no
-    has_journal: no
-    ext_attr: no
-    resize_inode: no
-    dir_index: yes
-
-;FEATURE_RO (able to mount in read only mode):
-    sparse_super: yes
-    large_file: yes
-    btree_dir: yes (obsolete)
-    huge_file: yes
-    gdt_csum: yes
-    dir_nlink: yes
-    extra_isize: yes
-    quota: no
-    bigalloc: no
-    metadata_csum: no
-
+;Features incompatible (unable to mount when NOT supported):
+*  compression: no
+*  filetype: yes
+*  recover: no (could be ignored)
+*  journal_dev: no
+*  meta_bg: yes
+*  extents: yes
+*  64bit: yes
+*  mmp: no (could be ignored)
+*  flex_bg: yes
+*  ea_inode: no
+*  dirdata: no
+*  bg_meta_csum: no
+*  largedir: no
+*  inline_data: no
+;Features compatible (mount when NOT supported is possible):
+*  dir_prealloc: no
+*  imagic_inodes: no
+*  has_journal: no
+*  ext_attr: no (work in progress)
+*  resize_inode: no
+*  dir_index: yes
+;Features read-only (mount in RO mode when NOT supported):
+*  sparse_super: yes
+*  large_file: yes
+*  btree_dir: yes (obsolete)
+*  huge_file: yes
+*  gdt_csum: yes
+*  dir_nlink: yes
+*  extra_isize: yes
+*  quota: no
+*  bigalloc: no
+*  metadata_csum: no (to be done ...)
 
 ==Supported filetypes:==
- FIFO:      no
- CHARDEV:   no
- DIRECTORY: yes
- BLOCKDEV:  no
- FILE:      yes
- SOFTLINK:  no
- SOCKET:    no
+* FIFO:      no
+* CHARDEV:   no
+* DIRECTORY: yes
+* BLOCKDEV:  no
+* FILE:      yes (hardlinks supported)
+* SOFTLINK:  yes
+* SOCKET:    no
 
 ==Other==
  - block_size: 1KB, 2KB, 4KB ... 64KB
  - little/big endian architecture support
 
-
 ==Project tree==
-
- - blockdev         - block devices set, supported blockdevs
- -- filedev         - file based block device
- -- io_raw          - wiodows IO block device
-
- - demos            - demo directory sources
- -- generic         - generic demo app, used for development and and debbuging purpose
- - lwext4           - internals of the lwext4 library
-
- - toolchain        - specific toolchain cmake files
-
- - ext4.h           - lwext4 client library header
- - CMakeLists.txt   - CMake config file
- - ext_images.7z    - ext2/3/4 100MB images
- - fs_test.mk       - automatic tests definition
- - Makefile         - helper makefile to call cmake
- - readme.mediawiki - yes, you are here ;)
+*  blockdev         - block devices set, supported blockdev
+*  demos            - demo directory sources
+*  lwext4           - internals of the lwext4 library
+*  toolchain        - specific toolchain cmake files
+*  CMakeLists.txt   - CMake config file
+*  ext_images.7z    - compressed ext2/3/4 100MB images
+*  fs_test.mk       - automatic tests definitions
+*  Makefile         - helper makefile to trigger cmake, tests
+*  readme.mediawiki - readme file
   
 ==Compile: Windows==
-;Tools needed:
+Requirements:
 * CMake:  http://www.cmake.org/cmake/resources/software.html
 * MinGw:  http://www.mingw.org/
 * GnuWin: http://gnuwin32.sourceforge.net/ 
@@ -125,8 +109,8 @@ Some of ideas and features are based on FreeBSD and Linux implementations.
 
 ==Compile: Linux==
 
-Tools needed:
- - CMake:  http://www.cmake.org/cmake/resources/software.html
+Requirements:
+* CMake:  http://www.cmake.org/cmake/resources/software.html
  
 ;Create CMake files:
  make
@@ -139,13 +123,12 @@ Tools needed:
  make
 
 ==Generic demo application==
-
 Features:
- - load ext2/3/4 images
- - load linux block device with ext2/3/4 part
- - load windows volume with ext2/3/4 filesystem 
- - directory speed test
- - file write/read speed test
+* load ext2/3/4 images
+* load linux block device with ext2/3/4 part
+* load windows volume with ext2/3/4 filesystem 
+* directory speed test
+* file write/read speed test
 
 How to use:
 Windows/Linux fileimages:
@@ -158,41 +141,24 @@ Windows volumes:
 
 Linux block devices:
  cd build_generic
- generic --in /dev/your_block_device
-
-Usage:                                                          
-    --i   - input file              (default = ext2)            
-    --rws - single R/W size         (default = 1024 * 1024)     
-    --rwc - R/W count               (default = 10)                     
-    --cache  - 0 static, 1 dynamic  (default = 1)               
-    --dirs   - directory test count (default = 0)               
-    --clean  - clean up after test                              
-    --bstat  - block device stats                               
-    --sbstat - superblock stats                                 
-    --wpart  - windows partition mode                           
-
-==Client-server automatic test suite==
-
-Build:
+ generic -i /dev/your_block_device
+
+==Build and run automatic tests==
+Build and run automatic tests
+Build automatic test tools:
  make
  cd build_generic
  make
-Unpack images:
+Uncompress ext/2/3/4 images:
  make unpack_images
-Run server:
+Run server app for predefined images:
  make server_ext2
+ make server_ext3
+ make server_ext4
 Run tests:
- make all_tests
-
-
-==Cross-Compile==
-
- Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded
- Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php
+ make test
 
+==Cross-Compile standalone library==
 Build bf518 library:
  make bf518
  cd build_bf518
@@ -218,33 +184,3 @@ Build cortex-m4 library:
  cd build_cortex-m4
  make lwext4
 
-==Ports==
-STM32F429-DISCO USB flash drive Demo 
-Build STM32F429 Demo:
- make cortex-m4
- cd build_cortex-m4
- make all
-
-==Footprint==
-
- TOOLCHAIN: arm-none-eabi-gcc
- OPT: Os  
- OUTPUT:
-   text    data     bss     dec     hex filename
-   5728       0       0    5728    1660 ext4.c.obj (ex liblwext4.a)
-   2264       0       0    2264     8d8 ext4_balloc.c.obj (ex liblwext4.a)
-   1324       0       0    1324     52c ext4_bcache.c.obj (ex liblwext4.a)
-    936       0       0     936     3a8 ext4_bitmap.c.obj (ex liblwext4.a)
-   2016       0       0    2016     7e0 ext4_blockdev.c.obj (ex liblwext4.a)
-    624       0       0     624     270 ext4_block_group.c.obj (ex liblwext4.a)
-     24       0       4      28      1c ext4_debug.c.obj (ex liblwext4.a)
-   2264       0       0    2264     8d8 ext4_dir.c.obj (ex liblwext4.a)
-   3204       0       0    3204     c84 ext4_dir_idx.c.obj (ex liblwext4.a)
-   3104       0       0    3104     c20 ext4_extent.c.obj (ex liblwext4.a)
-   7360       0       0    7360    1cc0 ext4_fs.c.obj (ex liblwext4.a)
-   2496       0       0    2496     9c0 ext4_hash.c.obj (ex liblwext4.a)
-    684       0       0     684     2ac ext4_ialloc.c.obj (ex liblwext4.a)
-    652       0       0     652     28c ext4_inode.c.obj (ex liblwext4.a)
-    352       0       0     352     160 ext4_super.c.obj (ex liblwext4.a)                      
-                           
\ No newline at end of file