f2fs: support atomic writes
authorJaegeuk Kim <jaegeuk@kernel.org>
Tue, 7 Oct 2014 00:39:50 +0000 (17:39 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 7 Oct 2014 00:39:50 +0000 (17:39 -0700)
commit88b88a66797159949cec32eaab12b4968f6fae2d
treeda80cebeb9cc86d5f9f16718ce7921eef16ed30e
parent120c2cba1d76494a68e36a11eb630cb335ed1494
f2fs: support atomic writes

This patch introduces a very limited functionality for atomic write support.
In order to support atomic write, this patch adds two ioctls:
 o F2FS_IOC_START_ATOMIC_WRITE
 o F2FS_IOC_COMMIT_ATOMIC_WRITE

The database engine should be aware of the following sequence.
1. open
 -> ioctl(F2FS_IOC_START_ATOMIC_WRITE);
2. writes
  : all the written data will be treated as atomic pages.
3. commit
 -> ioctl(F2FS_IOC_COMMIT_ATOMIC_WRITE);
  : this flushes all the data blocks to the disk, which will be shown all or
  nothing by f2fs recovery procedure.
4. repeat to #2.

The IO pattens should be:

  ,- START_ATOMIC_WRITE                  ,- COMMIT_ATOMIC_WRITE
 CP | D D D D D D | FSYNC | D D D D | FSYNC ...
                      `- COMMIT_ATOMIC_WRITE

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/inline.c
fs/f2fs/inode.c
fs/f2fs/segment.c
fs/f2fs/segment.h
fs/f2fs/super.c