U-Boot supports access of both ext2 and ext4 filesystems, either in read-only
mode or in read-write mode.

First, to enable support for both ext4 (and, automatically, ext2 as well),
but without selecting the corresponding commands, enable one of the following:

  CONFIG_FS_EXT4	(for read-only)
  CONFIG_EXT4_WRITE	(for read-write)

Next, to select the ext2-related commands:

  * ext2ls
  * ext2load

or ext4-related commands:

  * ext4size
  * ext4ls
  * ext4load

use one or both of:

  CONFIG_CMD_EXT2
  CONFIG_CMD_EXT4

Selecting either of the above automatically selects CONFIG_FS_EXT4 if it
wasn't enabled already.

In addition, to get the write access command "ext4write", enable:

  CONFIG_CMD_EXT4_WRITE

which automatically selects CONFIG_EXT4_WRITE if it wasn't defined
already.

Also relevant are the generic filesystem commands, selected by:

  CONFIG_CMD_FS_GENERIC

This does not automatically enable EXT4 support for you, you still need
to do that yourself.

Some sample commands to test ext4 support:

1. Check that the commands can be seen in the output of U-Boot help:

	UBOOT #help
	...
	ext4load- load binary file from a Ext4 file system
	ext4ls  - list files in a directory (default /)
	ext4size - determine a file's size
	ext4write- create a file in ext4 formatted partition
	...

2. To list the files in an ext4-formatted partition, run:

	ext4ls <interface> <dev[:part]> [directory]

	For example:
	UBOOT #ext4ls mmc 0:5 /usr/lib

3. To read and load a file from an ext4-formatted partition to RAM, run:

	ext4load <interface> <dev[:part]> [addr] [filename] [bytes]

	For example:
	UBOOT #ext4load mmc 2:2 0x30007fc0 uImage

4. To write a file to an ext4-formatted partition.

	a) First load a file to RAM at a particular address for example 0x30007fc0.
	Now execute ext4write command:
	ext4write <interface> <dev[:part]> [filename] [Address] [sizebytes]

	For example:
	UBOOT #ext4write mmc 2:2 /boot/uImage 0x30007fc0 6183120
	(here 6183120 is the size of the file to be written)
	Note: Absolute path is required for the file to be written

References :
	-- ext4 implementation in Linux Kernel
	-- Uboot existing ext2 load and ls implementation
	-- Journaling block device JBD2 implementation in linux Kernel
