Merge tag 'for-3.8-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 20 Dec 2012 21:54:51 +0000 (13:54 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 20 Dec 2012 21:54:52 +0000 (13:54 -0800)
Pull new F2FS filesystem from Jaegeuk Kim:
 "Introduce a new file system, Flash-Friendly File System (F2FS), to
  Linux 3.8.

  Highlights:
   - Add initial f2fs source codes
   - Fix an endian conversion bug
   - Fix build failures on random configs
   - Fix the power-off-recovery routine
   - Minor cleanup, coding style, and typos patches"

From the Kconfig help text:

  F2FS is based on Log-structured File System (LFS), which supports
  versatile "flash-friendly" features. The design has been focused on
  addressing the fundamental issues in LFS, which are snowball effect
  of wandering tree and high cleaning overhead.

  Since flash-based storages show different characteristics according to
  the internal geometry or flash memory management schemes aka FTL, F2FS
  and tools support various parameters not only for configuring on-disk
  layout, but also for selecting allocation and cleaning algorithms.

and there's an article by Neil Brown about it on lwn.net:

  http://lwn.net/Articles/518988/

* tag 'for-3.8-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (36 commits)
  f2fs: fix tracking parent inode number
  f2fs: cleanup the f2fs_bio_alloc routine
  f2fs: introduce accessor to retrieve number of dentry slots
  f2fs: remove redundant call to f2fs_put_page in delete entry
  f2fs: make use of GFP_F2FS_ZERO for setting gfp_mask
  f2fs: rewrite f2fs_bio_alloc to make it simpler
  f2fs: fix a typo in f2fs documentation
  f2fs: remove unused variable
  f2fs: move error condition for mkdir at proper place
  f2fs: remove unneeded initialization
  f2fs: check read only condition before beginning write out
  f2fs: remove unneeded memset from init_once
  f2fs: show error in case of invalid mount arguments
  f2fs: fix the compiler warning for uninitialized use of variable
  f2fs: resolve build failures
  f2fs: adjust kernel coding style
  f2fs: fix endian conversion bugs reported by sparse
  f2fs: remove unneeded version.h header file from f2fs.h
  f2fs: update the f2fs document
  f2fs: update Kconfig and Makefile
  ...

1  2 
Documentation/filesystems/00-INDEX
fs/Kconfig
include/uapi/linux/magic.h

@@@ -38,8 -38,6 +38,8 @@@ dnotify_test.
        - example program for dnotify
  ecryptfs.txt
        - docs on eCryptfs: stacked cryptographic filesystem for Linux.
 +efivarfs.txt
 +      - info for the efivarfs filesystem.
  exofs.txt
        - info, usage, mount options, design about EXOFS.
  ext2.txt
@@@ -50,6 -48,8 +50,8 @@@ ext4.tx
        - info, mount options and specifications for the Ext4 filesystem.
  files.txt
        - info on file management in the Linux kernel.
+ f2fs.txt
+       - info and mount options for the F2FS filesystem.
  fuse.txt
        - info on the Filesystem in User SpacE including mount options.
  gfs2.txt
diff --combined fs/Kconfig
@@@ -28,8 -28,8 +28,8 @@@ config FS_MBCACH
        tristate
        default y if EXT2_FS=y && EXT2_FS_XATTR
        default y if EXT3_FS=y && EXT3_FS_XATTR
 -      default y if EXT4_FS=y && EXT4_FS_XATTR
 -      default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR
 +      default y if EXT4_FS=y
 +      default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS
  
  source "fs/reiserfs/Kconfig"
  source "fs/jfs/Kconfig"
@@@ -220,6 -220,7 +220,7 @@@ source "fs/pstore/Kconfig
  source "fs/sysv/Kconfig"
  source "fs/ufs/Kconfig"
  source "fs/exofs/Kconfig"
+ source "fs/f2fs/Kconfig"
  
  endif # MISC_FILESYSTEMS
  
  #define EXT4_SUPER_MAGIC      0xEF53
  #define BTRFS_SUPER_MAGIC     0x9123683E
  #define NILFS_SUPER_MAGIC     0x3434
+ #define F2FS_SUPER_MAGIC      0xF2F52010
  #define HPFS_SUPER_MAGIC      0xf995e849
  #define ISOFS_SUPER_MAGIC     0x9660
  #define JFFS2_SUPER_MAGIC     0x72b6
  #define PSTOREFS_MAGIC                0x6165676C
 +#define EFIVARFS_MAGIC                0xde5e81e4
  
  #define MINIX_SUPER_MAGIC     0x137F          /* minix v1 fs, 14 char names */
  #define MINIX_SUPER_MAGIC2    0x138F          /* minix v1 fs, 30 char names */