[f2fs] add definitions for VnodeF2fs class (14/30)

This adds definitions of VnodeF2fs class inherited from Vnode.

Change-Id: Iaf9d53bfe5953a84319aa889b932f024a07e6279
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/f2fs/+/511851
Reviewed-by: Brett Wilson <brettw@google.com>
1 file changed
tree: 60aa65341b21433a40f6d9ab0ce879a53543f67f
  1. AUTHORS
  2. CONTRIBUTING.md
  3. f2fs.cc
  4. f2fs.h
  5. f2fs_internal.h
  6. f2fs_layout.h
  7. f2fs_lib.h
  8. f2fs_types.h
  9. LICENSE
  10. mkfs.cc
  11. mkfs.h
  12. PATENTS
  13. README.md
  14. super.cc
  15. vnode.h
README.md

What is F2FS?

F2FS is the most commonly used log-structured file system in Linux. It supports flash-friendly features such as adaptive logging, multi-head logging, fsync acceleration, and node address translation. For more information see: https://www.usenix.org/conference/fast15/technical-sessions/presentation/lee

Major Release

1st release (Apr-06-2021)

  • Features: mkfs, mount/umount, read, write, rmdir, mkdir, rename, fsync, lseek, link, unlink
  • Remarks
  • Fuchsia base code ; Thu Mar 11 08:53:24 2021 Prashanth Swaminathan,76a08ad1474 [speak] Migrate to new component templates
  • There is no cache. Every request is handled as a synchronous operation.
  • fsync() triggers checkpointing
  • lock granularity: file operation
  • LFS is used for block allocation by default, and IPU is forced when the number of free sections is below 50%.
  • no background/foreground gc
  • disable the roll-forward recovery
  • 6 active logs
  • disable the ext-identify feature
  • block allocation: LFS, IPU
  • fsck do nothing, but it returns true
  • no discard

2nd release (May-28-2021)

  • Features: truncate, ssr, fsync, recovery
  • Remarks
  • support the roll-forward recovery and file level fsync()
  • block allocation: LFS, IPU, SSR
  • truncate

3rd release (June-25-2021)

  • Features: fsck, mount option, mkfs option
  • Remarts
  • fsck (base: bbf6e62)
  • support the ext-identify feature
  • support discard

4th release (July-30-2021 ~)

  • Testability
  • Features: buffered IO, gc (if writable PagedVfs is available)
  • Remarks
  • background/foreground gc
  • caching node/meta blocks
  • read ahead
  • Page level locking
  • buffered IO
  • mmap
  • IPU can be disabled.
  • support fvm
  • xattr

How to build

$ fx set bringup.x64 --with //bundles:tools --with-base //bundles/buildbot:bringup --with-base third_party/f2fs --with-base third_party/f2fs/tools:f2fs-tools $ fx build $ fx emu -N --headless -hda third_party/f2fs/test_files/blk{500m or 1g}.bin (see third_party/f2fs/test_files/README.md for test)