[PATCH 00/16 v2] f2fs: introduce flash-friendly file system

From: Jaegeuk Kim
Date: Mon Oct 22 2012 - 22:21:46 EST

Change log from v1:

o Apply the recent user namespace changes [Eric]
o Remove unnecessary condition check [Al]
o Fix wrong description [Stefan]
o Fix f2fs document [Randy]
o Enlarge the volume label length to 256 unicodes [Martin]
o Support time resolution to nano scale [Boaz]
o Fix the wrong use of endian conversion [David]
o Fix the use of mutex and spinlocks [David]
o Remove the use of __GFP_NOFAIL, etc [Neil]
o Change the flow for readability [Neil]
o Reduce the lock contention in CP [Neil]
o Support multiples of section size [Arnd]
o Support configurable extension list [Arnd]
o Support configurable active log numbers [Arnd]

[Future works]
o Aware of file access pattern
o Erase block indirect
o Sub-page write avoidance
o In-line data
o Xattr optimization/in-line xattrs

I really appreciate the valuable comments from all of you in community.

Due to the change of on-disk layout, please download f2fs-tools-1.1.0.tar.gz.


This is a new patch set for the f2fs file system.

What is F2FS?

NAND flash memory-based storage devices, such as SSD, eMMC, and SD cards, have
been widely being used for ranging from mobile to server systems. Since they are
known to have different characteristics from the conventional rotational disks,
a file system, an upper layer to the storage device, should adapt to the changes
from the sketch.

F2FS is a new file system carefully designed for the NAND flash memory-based storage
devices. We chose a log structure file system approach, but we tried to adapt it
to the new form of storage. Also we remedy some known issues of the very old log
structured file system, such as snowball effect of wandering tree and high cleaning

Because a NAND-based storage device shows different characteristics according to
its internal geometry or flash memory management scheme aka FTL, we add various
parameters not only for configuring on-disk layout, but also for selecting allocation
and cleaning algorithms.

Patch set

The patch #1 adds a document to Documentation/filesystems/.
The patch #2 adds a header file of on-disk layout to include/linux/.
The patches #3-#15 adds f2fs source files to fs/f2fs/.
The Last patch, patch #16, updates Makefile and Kconfig.


The file system formatting tool, "mkfs.f2fs", is available from the following
download page: http://sourceforge.net/projects/f2fs-tools/


If you'd like to experience f2fs, simply:
# mkfs.f2fs /dev/sdb1
# mount -t f2fs /dev/sdb1 /mnt/f2fs

Short log

Jaegeuk Kim (16):
f2fs: add document
f2fs: add on-disk layout
f2fs: add superblock and major in-memory structure
f2fs: add super block operations
f2fs: add checkpoint operations
f2fs: add node operations
f2fs: add segment operations
f2fs: add file operations
f2fs: add address space operations for data
f2fs: add core inode operations
f2fs: add inode operations for special inodes
f2fs: add core directory operations
f2fs: add xattr and acl functionalities
f2fs: add garbage collection functions
f2fs: add recovery routines for roll-forward
f2fs: update Kconfig and Makefile

Documentation/filesystems/00-INDEX | 2 +
Documentation/filesystems/f2fs.txt | 404 ++++++++
fs/Kconfig | 1 +
fs/Makefile | 1 +
fs/f2fs/Kconfig | 55 ++
fs/f2fs/Makefile | 6 +
fs/f2fs/acl.c | 465 ++++++++++
fs/f2fs/acl.h | 57 ++
fs/f2fs/checkpoint.c | 795 ++++++++++++++++
fs/f2fs/data.c | 701 ++++++++++++++
fs/f2fs/dir.c | 657 +++++++++++++
fs/f2fs/f2fs.h | 982 ++++++++++++++++++++
fs/f2fs/file.c | 640 +++++++++++++
fs/f2fs/gc.c | 1139 +++++++++++++++++++++++
fs/f2fs/gc.h | 203 ++++
fs/f2fs/hash.c | 98 ++
fs/f2fs/inode.c | 262 ++++++
fs/f2fs/namei.c | 494 ++++++++++
fs/f2fs/node.c | 1782 +++++++++++++++++++++++++++++++++++
fs/f2fs/node.h | 330 +++++++
fs/f2fs/recovery.c | 375 ++++++++
fs/f2fs/segment.c | 1795 ++++++++++++++++++++++++++++++++++++
fs/f2fs/segment.h | 594 ++++++++++++
fs/f2fs/super.c | 590 ++++++++++++
fs/f2fs/xattr.c | 389 ++++++++
fs/f2fs/xattr.h | 145 +++
include/linux/f2fs_fs.h | 362 ++++++++
27 files changed, 13324 insertions(+)
create mode 100644 Documentation/filesystems/f2fs.txt
create mode 100644 fs/f2fs/Kconfig
create mode 100644 fs/f2fs/Makefile
create mode 100644 fs/f2fs/acl.c
create mode 100644 fs/f2fs/acl.h
create mode 100644 fs/f2fs/checkpoint.c
create mode 100644 fs/f2fs/data.c
create mode 100644 fs/f2fs/dir.c
create mode 100644 fs/f2fs/f2fs.h
create mode 100644 fs/f2fs/file.c
create mode 100644 fs/f2fs/gc.c
create mode 100644 fs/f2fs/gc.h
create mode 100644 fs/f2fs/hash.c
create mode 100644 fs/f2fs/inode.c
create mode 100644 fs/f2fs/namei.c
create mode 100644 fs/f2fs/node.c
create mode 100644 fs/f2fs/node.h
create mode 100644 fs/f2fs/recovery.c
create mode 100644 fs/f2fs/segment.c
create mode 100644 fs/f2fs/segment.h
create mode 100644 fs/f2fs/super.c
create mode 100644 fs/f2fs/xattr.c
create mode 100644 fs/f2fs/xattr.h
create mode 100644 include/linux/f2fs_fs.h


Jaegeuk Kim

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/