Hello community,

here is the log from the commit of package f2fs-tools for openSUSE:Factory 
checked in at 2013-12-02 07:22:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/f2fs-tools (Old)
 and      /work/SRC/openSUSE:Factory/.f2fs-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "f2fs-tools"

Changes:
--------
--- /work/SRC/openSUSE:Factory/f2fs-tools/f2fs-tools.changes    2013-08-12 
10:16:17.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.f2fs-tools.new/f2fs-tools.changes       
2013-12-02 07:22:17.000000000 +0100
@@ -1,0 +2,11 @@
+Sun Nov 24 11:34:03 UTC 2013 - [email protected]
+
+- Update to new upstream release 1.2.0
+* f2fs-tools: add stat information into fibmap
+* fibmap.f2fs: change fibmap to fibmap.f2fs
+* fsck, lib: support inline xattr
+* fsck: skip to check block addresses in device files
+* fsck: fix to handle file types correctly
+* fsck: fix checking orphan inodes
+
+-------------------------------------------------------------------

Old:
----
  f2fs-tools-1.1.0+git40.tar.xz

New:
----
  f2fs-tools-1.2.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ f2fs-tools.spec ++++++
--- /var/tmp/diff_new_pack.Ueol9Q/_old  2013-12-02 07:22:17.000000000 +0100
+++ /var/tmp/diff_new_pack.Ueol9Q/_new  2013-12-02 07:22:17.000000000 +0100
@@ -18,14 +18,14 @@
 
 Name:           f2fs-tools
 %define lname  libf2fs0
-Version:        1.1.0+git40
+Version:        1.2.0
 Release:        0
-#Snapshot:     6e8f2d5d222eff0abea4b5c0abc7433834094924
 Summary:        Utilities for the Flash-friendly Filesystem (F2FS)
 License:        GPL-2.0
 Group:          System/Filesystems
 Url:            http://f2fs-tools.sf.net/_(disused)
 
+#Snapshot:     v1.2.0
 #Git-Clone:    git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools
 #DL-URL:       no tarballs provided
 Source:         %name-%version.tar.xz
@@ -53,8 +53,6 @@
 make install DESTDIR="$b" sbindir="%_sbindir"
 # The devel file is quite useless ATM without public headers.
 rm -f "$b/%_libdir"/*.{la,so}
-# /usr/sbin/filefrag already does what fibmap can do.
-rm -f "$b/%_sbindir/fibmap"
 
 %post   -p /sbin/ldconfig
 %postun -p /sbin/ldconfig
@@ -62,6 +60,7 @@
 %files
 %defattr(-,root,root)
 %_sbindir/dump.f2fs
+%_sbindir/fibmap.f2fs
 %_sbindir/fsck.f2fs
 %_sbindir/mkfs.f2fs
 %_libdir/libf2fs.so.0*

++++++ f2fs-tools-1.1.0+git40.tar.xz -> f2fs-tools-1.2.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/README new/f2fs-tools/README
--- old/f2fs-tools/README       2013-06-18 03:56:41.000000000 +0200
+++ new/f2fs-tools/README       2013-11-24 12:32:49.000000000 +0100
@@ -25,6 +25,20 @@
  # ./configure
  # make
 
+How to cross-compile (e.g., for ARM)
+------------------------------------
+
+ 1. Add the below line into mkfs/Makefile.am:
+ mkfs_f2fs_LDFLAGS = -all-static
+
+ 2. Add the below line into fsck/Makefile.am:
+ fsck_f2fs_LDFLAGS = -all-static
+
+ 3. then, do:
+ # LDFLAGS=--static ./configure \
+       --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi
+ # make
+
 How to run by default
 ---------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/VERSION new/f2fs-tools/VERSION
--- old/f2fs-tools/VERSION      2013-06-18 03:56:41.000000000 +0200
+++ new/f2fs-tools/VERSION      2013-11-24 12:32:49.000000000 +0100
@@ -1,2 +1,2 @@
-1.1.0
-2012-11-29
+1.2.0
+2013-10-25
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/configure new/f2fs-tools/configure
--- old/f2fs-tools/configure    2013-08-08 00:15:50.000000000 +0200
+++ new/f2fs-tools/configure    2013-11-24 12:35:46.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for F2FS tools 1.1.0.
+# Generated by GNU Autoconf 2.69 for F2FS tools 1.2.0.
 #
 # Report bugs to <[email protected]>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='F2FS tools'
 PACKAGE_TARNAME='f2fs-tools'
-PACKAGE_VERSION='1.1.0'
-PACKAGE_STRING='F2FS tools 1.1.0'
+PACKAGE_VERSION='1.2.0'
+PACKAGE_STRING='F2FS tools 1.2.0'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1324,7 +1324,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures F2FS tools 1.1.0 to adapt to many kinds of systems.
+\`configure' configures F2FS tools 1.2.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1394,7 +1394,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of F2FS tools 1.1.0:";;
+     short | recursive ) echo "Configuration of F2FS tools 1.2.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1508,7 +1508,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-F2FS tools configure 1.1.0
+F2FS tools configure 1.2.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2007,7 +2007,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by F2FS tools $as_me 1.1.0, which was
+It was created by F2FS tools $as_me 1.2.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2366,13 +2366,13 @@
 
 
 
-$as_echo "#define F2FS_TOOLS_VERSION \"1.1.0\"" >>confdefs.h
+$as_echo "#define F2FS_TOOLS_VERSION \"1.2.0\"" >>confdefs.h
 
 
 $as_echo "#define F2FS_MAJOR_VERSION 1" >>confdefs.h
 
 
-$as_echo "#define F2FS_MINOR_VERSION 1" >>confdefs.h
+$as_echo "#define F2FS_MINOR_VERSION 2" >>confdefs.h
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .git" >&5
@@ -2392,11 +2392,11 @@
 $as_echo "$ac_cv_file__git" >&6; }
 if test "x$ac_cv_file__git" = xyes; then :
 
-$as_echo "#define F2FS_TOOLS_DATE \"2013-08-07\"" >>confdefs.h
+$as_echo "#define F2FS_TOOLS_DATE \"\"" >>confdefs.h
 
 else
 
-$as_echo "#define F2FS_TOOLS_DATE \"2012-11-29\"" >>confdefs.h
+$as_echo "#define F2FS_TOOLS_DATE \"2013-10-25\"" >>confdefs.h
 
 fi
 
@@ -2881,7 +2881,7 @@
 
 # Define the identity of the package.
  PACKAGE='f2fs-tools'
- VERSION='1.1.0'
+ VERSION='1.2.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -13286,7 +13286,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by F2FS tools $as_me 1.1.0, which was
+This file was extended by F2FS tools $as_me 1.2.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13352,7 +13352,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-F2FS tools config.status 1.1.0
+F2FS tools config.status 1.2.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/fsck/Makefile.am 
new/f2fs-tools/fsck/Makefile.am
--- old/f2fs-tools/fsck/Makefile.am     2013-08-08 00:14:42.000000000 +0200
+++ new/f2fs-tools/fsck/Makefile.am     2013-11-24 12:32:49.000000000 +0100
@@ -2,11 +2,11 @@
 
 AM_CPPFLAGS = ${libuuid_CFLAGS} -I$(top_srcdir)/include
 AM_CFLAGS = -Wall
-sbin_PROGRAMS = fsck.f2fs fibmap
+sbin_PROGRAMS = fsck.f2fs fibmap.f2fs
 fsck_f2fs_SOURCES = main.c fsck.c dump.c mount.c
 fsck_f2fs_LDADD = ${libuuid_LIBS} $(top_builddir)/lib/libf2fs.la
 
-fibmap_SOURCES = fibmap.c
+fibmap_f2fs_SOURCES = fibmap.c
 
 install-data-hook:
        ln -sf fsck.f2fs $(DESTDIR)/$(sbindir)/dump.f2fs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/fsck/Makefile.in 
new/f2fs-tools/fsck/Makefile.in
--- old/f2fs-tools/fsck/Makefile.in     2013-08-08 00:15:54.000000000 +0200
+++ new/f2fs-tools/fsck/Makefile.in     2013-11-24 12:35:48.000000000 +0100
@@ -50,7 +50,7 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-sbin_PROGRAMS = fsck.f2fs$(EXEEXT) fibmap$(EXEEXT)
+sbin_PROGRAMS = fsck.f2fs$(EXEEXT) fibmap.f2fs$(EXEEXT)
 subdir = fsck
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
        $(top_srcdir)/build-aux/depcomp
@@ -67,9 +67,9 @@
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(sbindir)"
 PROGRAMS = $(sbin_PROGRAMS)
-am_fibmap_OBJECTS = fibmap.$(OBJEXT)
-fibmap_OBJECTS = $(am_fibmap_OBJECTS)
-fibmap_LDADD = $(LDADD)
+am_fibmap_f2fs_OBJECTS = fibmap.$(OBJEXT)
+fibmap_f2fs_OBJECTS = $(am_fibmap_f2fs_OBJECTS)
+fibmap_f2fs_LDADD = $(LDADD)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -105,8 +105,8 @@
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN     " $@;
-SOURCES = $(fibmap_SOURCES) $(fsck_f2fs_SOURCES)
-DIST_SOURCES = $(fibmap_SOURCES) $(fsck_f2fs_SOURCES)
+SOURCES = $(fibmap_f2fs_SOURCES) $(fsck_f2fs_SOURCES)
+DIST_SOURCES = $(fibmap_f2fs_SOURCES) $(fsck_f2fs_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -239,7 +239,7 @@
 AM_CFLAGS = -Wall
 fsck_f2fs_SOURCES = main.c fsck.c dump.c mount.c
 fsck_f2fs_LDADD = ${libuuid_LIBS} $(top_builddir)/lib/libf2fs.la
-fibmap_SOURCES = fibmap.c
+fibmap_f2fs_SOURCES = fibmap.c
 all: all-am
 
 .SUFFIXES:
@@ -320,9 +320,9 @@
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
-fibmap$(EXEEXT): $(fibmap_OBJECTS) $(fibmap_DEPENDENCIES) 
$(EXTRA_fibmap_DEPENDENCIES) 
-       @rm -f fibmap$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(fibmap_OBJECTS) $(fibmap_LDADD) $(LIBS)
+fibmap.f2fs$(EXEEXT): $(fibmap_f2fs_OBJECTS) $(fibmap_f2fs_DEPENDENCIES) 
$(EXTRA_fibmap_f2fs_DEPENDENCIES) 
+       @rm -f fibmap.f2fs$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fibmap_f2fs_OBJECTS) $(fibmap_f2fs_LDADD) $(LIBS)
 fsck.f2fs$(EXEEXT): $(fsck_f2fs_OBJECTS) $(fsck_f2fs_DEPENDENCIES) 
$(EXTRA_fsck_f2fs_DEPENDENCIES) 
        @rm -f fsck.f2fs$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fsck_f2fs_OBJECTS) $(fsck_f2fs_LDADD) $(LIBS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/fsck/fibmap.c new/f2fs-tools/fsck/fibmap.c
--- old/f2fs-tools/fsck/fibmap.c        2013-08-08 00:14:42.000000000 +0200
+++ new/f2fs-tools/fsck/fibmap.c        2013-11-24 12:32:49.000000000 +0100
@@ -26,6 +26,21 @@
                                        ext->end_blk, ext->blk_count);
 }
 
+void print_stat(struct stat64 *st)
+{
+       printf("--------------------------------------------\n");
+       printf("dev       [%d:%d]\n", major(st->st_dev), minor(st->st_dev));
+       printf("ino       [0x%8lx : %ld]\n", st->st_ino, st->st_ino);
+       printf("mode      [0x%8x : %d]\n", st->st_mode, st->st_mode);
+       printf("nlink     [0x%8lx : %ld]\n", st->st_nlink, st->st_nlink);
+       printf("uid       [0x%8x : %d]\n", st->st_uid, st->st_uid);
+       printf("gid       [0x%8x : %d]\n", st->st_gid, st->st_gid);
+       printf("size      [0x%8lx : %ld]\n", st->st_size, st->st_size);
+       printf("blksize   [0x%8lx : %ld]\n", st->st_blksize, st->st_blksize);
+       printf("blocks    [0x%8lx : %ld]\n", st->st_blocks, st->st_blocks);
+       printf("--------------------------------------------\n\n");
+}
+
 int main(int argc, char *argv[])
 {
        int fd;
@@ -61,6 +76,7 @@
        total_blks = (st.st_size + st.st_blksize - 1) / st.st_blksize;
 
        printf("\n%s :\n", filename);
+       print_stat(&st);
        printf("file_pos   start_blk     end_blk        blks\n");
 
        blknum = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/fsck/fsck.c new/f2fs-tools/fsck/fsck.c
--- old/f2fs-tools/fsck/fsck.c  2013-08-08 00:14:42.000000000 +0200
+++ new/f2fs-tools/fsck/fsck.c  2013-11-24 12:34:59.000000000 +0100
@@ -10,6 +10,17 @@
  */
 #include "fsck.h"
 
+#define S_SHIFT 12
+static unsigned char f2fs_type_by_mode[S_IFMT >> S_SHIFT] = {
+       [S_IFREG >> S_SHIFT]    = F2FS_FT_REG_FILE,
+       [S_IFDIR >> S_SHIFT]    = F2FS_FT_DIR,
+       [S_IFCHR >> S_SHIFT]    = F2FS_FT_CHRDEV,
+       [S_IFBLK >> S_SHIFT]    = F2FS_FT_BLKDEV,
+       [S_IFIFO >> S_SHIFT]    = F2FS_FT_FIFO,
+       [S_IFSOCK >> S_SHIFT]   = F2FS_FT_SOCK,
+       [S_IFLNK >> S_SHIFT]    = F2FS_FT_SYMLINK,
+};
+
 char *tree_mark;
 int tree_mark_size = 256;
 
@@ -258,7 +269,6 @@
        return 0;
 }
 
-
 int fsck_chk_inode_blk(struct f2fs_sb_info *sbi,
                u32 nid,
                enum FILE_TYPE ftype,
@@ -281,18 +291,13 @@
                fsck->chk.valid_inode_cnt++;
 
        /* Orphan node. i_links should be 0 */
-       if (ftype & F2FS_FT_ORPHAN) {
+       if (ftype == F2FS_FT_ORPHAN) {
                ASSERT(i_links == 0);
-
-               if (S_ISDIR(le16_to_cpu(node_blk->i.i_mode)))
-                       ftype |= F2FS_FT_DIR;
-               else
-                       ftype |= F2FS_FT_REG_FILE;
        } else {
                ASSERT(i_links > 0);
        }
 
-       if (ftype & F2FS_FT_DIR) {
+       if (ftype == F2FS_FT_DIR) {
 
                /* not included '.' & '..' */
                if (f2fs_test_bit(BLKOFF_FROM_MAIN(sbi, ni->blk_addr), 
fsck->main_area_bitmap) != 0) {
@@ -301,7 +306,7 @@
                }
                f2fs_set_bit(BLKOFF_FROM_MAIN(sbi, ni->blk_addr), 
fsck->main_area_bitmap);
 
-       } else if (ftype & F2FS_FT_REG_FILE) {
+       } else {
 
                if (f2fs_test_bit(BLKOFF_FROM_MAIN(sbi, ni->blk_addr), 
fsck->main_area_bitmap) == 0x0) {
                        f2fs_set_bit(BLKOFF_FROM_MAIN(sbi, ni->blk_addr), 
fsck->main_area_bitmap);
@@ -325,16 +330,17 @@
 
                        /* No need to go deep into the node */
                        goto out;
-
                }
-       } else {
-               ASSERT(0);
        }
 
        fsck_chk_xattr_blk(sbi, nid, le32_to_cpu(node_blk->i.i_xattr_nid), 
blk_cnt);
 
+       if (ftype == F2FS_FT_CHRDEV || ftype == F2FS_FT_BLKDEV ||
+                       ftype == F2FS_FT_FIFO || ftype == F2FS_FT_SOCK)
+               goto check;
+
        /* check data blocks in inode */
-       for (idx = 0; idx < ADDRS_PER_INODE; idx++) {
+       for (idx = 0; idx < ADDRS_PER_INODE(&node_blk->i); idx++) {
                if (le32_to_cpu(node_blk->i.i_addr[idx]) != 0) {
                        *blk_cnt = *blk_cnt + 1;
                        ret = fsck_chk_data_blk(sbi,
@@ -373,12 +379,16 @@
                        ASSERT(ret >= 0);
                }
        }
-
-       if (ftype & F2FS_FT_DIR)
+check:
+       if (ftype == F2FS_FT_DIR)
                DBG(1, "Directory Inode: ino: %x name: %s depth: %d child 
files: %d\n\n",
                                le32_to_cpu(node_blk->footer.ino), 
node_blk->i.i_name,
                                le32_to_cpu(node_blk->i.i_current_depth), 
child_files);
-       if ((ftype & F2FS_FT_DIR && i_links != child_cnt) ||
+       if (ftype == F2FS_FT_ORPHAN)
+               DBG(1, "Orphan Inode: ino: %x name: %s i_blocks: %d\n\n",
+                               le32_to_cpu(node_blk->footer.ino), 
node_blk->i.i_name,
+                               i_blocks);
+       if ((ftype == F2FS_FT_DIR && i_links != child_cnt) ||
                        (i_blocks != *blk_cnt)) {
                print_node_info(node_blk);
                DBG(1, "blk   cnt [0x%x]\n", *blk_cnt);
@@ -386,7 +396,7 @@
        }
 
        ASSERT(i_blocks == *blk_cnt);
-       if (ftype & F2FS_FT_DIR)
+       if (ftype == F2FS_FT_DIR)
                ASSERT(i_links == child_cnt);
 out:
        return 0;
@@ -549,12 +559,11 @@
                hash_code = f2fs_dentry_hash((const char *)name, name_len);
                ASSERT(le32_to_cpu(de_blk->dentry[i].hash_code) == hash_code);
 
-               ftype = F2FS_FT_REG_FILE;
+               ftype = de_blk->dentry[i].file_type;
 
                /* Becareful. 'dentry.file_type' is not imode. */
-               if (de_blk->dentry[i].file_type == F2FS_FT_DIR) {
+               if (ftype == F2FS_FT_DIR) {
                        *child_cnt = *child_cnt + 1;
-                       ftype = F2FS_FT_DIR;
                        if ((name[0] == '.' && name[1] == '.' && name_len == 2) 
||
                                        (name[0] == '.' && name_len == 1)) {
                                i++;
@@ -606,6 +615,7 @@
                u8 ver)
 {
        struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
+
        /* Is it reserved block? */
        if (blk_addr == NEW_ADDR) {
                fsck->chk.valid_blk_cnt++;
@@ -628,7 +638,7 @@
 
        fsck->chk.valid_blk_cnt++;
 
-       if ((ftype & F2FS_FT_DIR) && !(ftype & F2FS_FT_ORPHAN)) {
+       if (ftype == F2FS_FT_DIR) {
                fsck_chk_dentry_blk(sbi,
                                inode,
                                blk_addr,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/fsck/mount.c new/f2fs-tools/fsck/mount.c
--- old/f2fs-tools/fsck/mount.c 2013-08-08 00:14:42.000000000 +0200
+++ new/f2fs-tools/fsck/mount.c 2013-11-24 12:32:49.000000000 +0100
@@ -51,7 +51,7 @@
        DISP_u32(inode, i_addr[2]);     /* Pointers to data blocks */
        DISP_u32(inode, i_addr[3]);     /* Pointers to data blocks */
 
-       for (i = 4; i < ADDRS_PER_INODE; i++) {
+       for (i = 4; i < ADDRS_PER_INODE(inode); i++) {
                if (inode->i_addr[i] != 0x0) {
                        printf("i_addr[0x%x] points data 
block\r\t\t\t\t[0x%4x]\n",
                                        i, inode->i_addr[i]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/include/f2fs_fs.h 
new/f2fs-tools/include/f2fs_fs.h
--- old/f2fs-tools/include/f2fs_fs.h    2013-08-08 00:14:42.000000000 +0200
+++ new/f2fs-tools/include/f2fs_fs.h    2013-11-24 12:32:49.000000000 +0100
@@ -346,14 +346,25 @@
 } __attribute__((packed));
 
 #define F2FS_NAME_LEN          255
-#define ADDRS_PER_INODE         923    /* Address Pointers in an Inode */
+#define F2FS_INLINE_XATTR_ADDRS        50      /* 200 bytes for inline xattrs 
*/
+#define DEF_ADDRS_PER_INODE    923     /* Address Pointers in an Inode */
+#define ADDRS_PER_INODE(fi)    addrs_per_inode(fi)
 #define ADDRS_PER_BLOCK         1018   /* Address Pointers in a Direct Block */
 #define NIDS_PER_BLOCK          1018   /* Node IDs in an Indirect Block */
 
+#define        NODE_DIR1_BLOCK         (DEF_ADDRS_PER_INODE + 1)
+#define        NODE_DIR2_BLOCK         (DEF_ADDRS_PER_INODE + 2)
+#define        NODE_IND1_BLOCK         (DEF_ADDRS_PER_INODE + 3)
+#define        NODE_IND2_BLOCK         (DEF_ADDRS_PER_INODE + 4)
+#define        NODE_DIND_BLOCK         (DEF_ADDRS_PER_INODE + 5)
+
+#define F2FS_INLINE_XATTR      0x01    /* file inline xattr flag */
+#define F2FS_INLINE_DATA       0x02    /* file inline data flag */
+
 struct f2fs_inode {
        __le16 i_mode;                  /* file mode */
        __u8 i_advise;                  /* file hints */
-       __u8 i_reserved;                /* reserved */
+       __u8 i_inline;                  /* file inline flags */
        __le32 i_uid;                   /* user ID */
        __le32 i_gid;                   /* group ID */
        __le32 i_links;                 /* links count */
@@ -376,7 +387,7 @@
 
        struct f2fs_extent i_ext;       /* caching a largest extent */
 
-       __le32 i_addr[ADDRS_PER_INODE]; /* Pointers to data blocks */
+       __le32 i_addr[DEF_ADDRS_PER_INODE];     /* Pointers to data blocks */
 
        __le32 i_nid[5];                /* direct(2), indirect(2),
                                                double_indirect(1) node id */
@@ -607,16 +618,16 @@
 /* file types used in inode_info->flags */
 enum FILE_TYPE {
        F2FS_FT_UNKNOWN,
-       F2FS_FT_REG_FILE = 0x1,
-       F2FS_FT_DIR = 0x2,
-       F2FS_FT_CHRDEV = 0x4,
-       F2FS_FT_BLKDEV = 0x8,
-       F2FS_FT_FIFO = 0x10,
-       F2FS_FT_SOCK = 0x20,
-       F2FS_FT_SYMLINK = 0x40,
-       F2FS_FT_MAX = 0x80,
+       F2FS_FT_REG_FILE,
+       F2FS_FT_DIR,
+       F2FS_FT_CHRDEV,
+       F2FS_FT_BLKDEV,
+       F2FS_FT_FIFO,
+       F2FS_FT_SOCK,
+       F2FS_FT_SYMLINK,
+       F2FS_FT_MAX,
        /* added for fsck */
-       F2FS_FT_ORPHAN = 0x1000,
+       F2FS_FT_ORPHAN,
 };
 
 /* from f2fs/segment.h */
@@ -627,6 +638,7 @@
 
 extern void ASCIIToUNICODE(u_int16_t *, u_int8_t *);
 extern int log_base_2(u_int32_t);
+extern unsigned int addrs_per_inode(struct f2fs_inode *);
 
 extern int get_bits_in_byte(unsigned char n);
 extern int set_bit(unsigned int nr,void * addr);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/lib/libf2fs.c new/f2fs-tools/lib/libf2fs.c
--- old/f2fs-tools/lib/libf2fs.c        2013-08-08 00:14:42.000000000 +0200
+++ new/f2fs-tools/lib/libf2fs.c        2013-11-24 12:32:49.000000000 +0100
@@ -315,6 +315,13 @@
        return f2fs_hash;
 }
 
+unsigned int addrs_per_inode(struct f2fs_inode *i)
+{
+       if (i->i_inline & F2FS_INLINE_XATTR)
+               return DEF_ADDRS_PER_INODE - F2FS_INLINE_XATTR_ADDRS;
+       return DEF_ADDRS_PER_INODE;
+}
+
 /*
  * CRC32
  */
@@ -364,6 +371,7 @@
        c->heap = 1;
        c->vol_label = "";
        c->device_name = NULL;
+       c->trim = 1;
 }
 
 static int is_mounted(const char *mpt, const char *device)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/mkfs/f2fs_format.c 
new/f2fs-tools/mkfs/f2fs_format.c
--- old/f2fs-tools/mkfs/f2fs_format.c   2013-08-08 00:14:42.000000000 +0200
+++ new/f2fs-tools/mkfs/f2fs_format.c   2013-11-24 12:34:59.000000000 +0100
@@ -130,6 +130,8 @@
        "mpe",
        "rm",
        "ogg",
+       "jpeg",
+       "video",
        "apk",  /* for android system */
        NULL
 };
@@ -917,6 +919,7 @@
                return -1;
        }
 
+       MSG(0, "Info: Discarding device\n");
        if (S_ISREG(stat_buf.st_mode))
                return 0;
        else if (S_ISBLK(stat_buf.st_mode)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/scripts/dumpf2fs.sh 
new/f2fs-tools/scripts/dumpf2fs.sh
--- old/f2fs-tools/scripts/dumpf2fs.sh  1970-01-01 01:00:00.000000000 +0100
+++ new/f2fs-tools/scripts/dumpf2fs.sh  2013-11-24 12:32:49.000000000 +0100
@@ -0,0 +1,61 @@
+#!/system/bin/sh
+DEV=/dev/block/mmcblk0p16
+
+CMD=$1
+BASE=0x200000
+BASE_MAIN=0xac00000
+
+case $CMD in
+cp1)
+       echo dump cp1
+       let addr=$BASE
+       echo $addr
+       hexdump -s $addr -n 4096 $DEV;;
+cp2)
+       echo dump cp2
+       let addr=$BASE+0x200000
+       hexdump -s $addr -n 4096 $DEV;;
+cp)
+       echo dump cp1 and cp2
+       let addr=$BASE
+       hexdump -s $addr -n 409 $DEV
+       let addr=$BASE+0x200000
+       hexdump -s $addr -n 4096 $DEV;;
+cp1_all)
+       echo dump cp1 all
+       let addr=$BASE
+       hexdump -s $addr -n 20480 $DEV;;
+cp2_all)
+       echo dump cp2 all
+       let addr=$BASE+0x200000
+       hexdump -s $addr -n 20480 $DEV;;
+cp_all)
+       echo dump cp1 and cp2 all
+       let addr=$BASE
+       hexdump -s $addr -n 20480 $DEV
+       let addr=$BASE+0x200000
+       hexdump -s $addr -n 20480 $DEV;;
+blk)
+       let addr=$BASE_MAIN+$2*0x200000+$3*0x1000
+       hexdump -s $addr -n 4096 $DEV
+       echo ;;
+inode)
+       let addr=$BASE_MAIN+$2*0x200000+$3*0x1000
+       for i in `seq $3 511`
+       do
+               hexdump -s $addr -n 8 $DEV
+               let end=$addr+0x0ff0
+               hexdump -s $end -n 16 $DEV
+               let addr=$addr+0x1000
+       done
+       echo ;;
+*)
+       let addr=$1*0x1000
+       let segno=$addr-$BASE_MAIN
+       let segno=$segno/0x200000
+       let off=$addr-$BASE_MAIN
+       let off=$off%0x200000/0x1000
+       echo $segno, $off
+       hexdump -s $addr -n 4096 $DEV
+       echo ;;
+esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/scripts/spo_test.sh 
new/f2fs-tools/scripts/spo_test.sh
--- old/f2fs-tools/scripts/spo_test.sh  1970-01-01 01:00:00.000000000 +0100
+++ new/f2fs-tools/scripts/spo_test.sh  2013-11-24 12:32:49.000000000 +0100
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+MNT=/mnt/f2fs
+DEV=/dev/sdb1
+USER_DIR=/home/zeus
+F2FS_DIR=$USER_DIR/f2fs_test
+
+check_stop() {
+       stop=`cat /tmp/stop`
+       if [ $stop -eq 1 ]; then
+               exit
+       fi
+}
+
+case $1 in
+start)
+       echo 0 > /tmp/stop
+       umount /mnt/*
+       echo 3 > /proc/sys/vm/drop_caches
+       echo 8 > /proc/sys/kernel/printk
+
+       date >> $USER_DIR/por_result
+       sync
+
+       insmod $F2FS_DIR/src/fs/f2fs/f2fs.ko || exit
+
+       echo Start checking F2FS without fsync
+       check_stop
+       fsck.f2fs $DEV -d 0 || exit
+       mount -t f2fs -o disable_roll_forward $DEV $MNT || exit
+       umount $MNT
+       echo 3 > /proc/sys/vm/drop_caches
+
+       echo Start checking F2FS with fsync
+       check_stop
+       fsck.f2fs $DEV -d 0 || exit
+       mount -t f2fs $DEV $MNT || exit
+       umount $MNT
+
+       check_stop
+       fsck.f2fs $DEV -d 0 || exit
+       mount -t f2fs $DEV $MNT || exit
+
+       count=`cat $USER_DIR/por_time`
+       if [ $count -eq 20 ]; then
+               echo Start rm all
+               time rm -rf $MNT/* || exit
+               echo 0 > $USER_DIR/por_time
+               sync
+       else
+               echo $((count+1)) > $USER_DIR/por_time
+       fi
+       echo 8 > /proc/sys/kernel/printk
+       echo Start fsstress
+       date
+       $F2FS_DIR/stress_test/fsstress/fsstress -z -f link=0 -f mkdir=3 -f 
mknod=3 -f rmdir=2 -f symlink=3 -f truncate=4 -f write=10 -f creat=10 -f 
unlink=5 -f rename=5 -f fsync=10 -p 10 -n 10000 -l 0 -d $MNT &
+       RANDOM=`date '+%s'`
+       rand=$[($RANDOM % 540) + 60]
+       echo Start sleep: $rand seconds
+       sleep $rand
+
+       echo Reboot now
+       check_stop
+       echo b > /proc/sysrq-trigger
+       ;;
+stop)
+       killall -9 fsstress
+       echo 1 > /tmp/stop
+       ;;
+esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/f2fs-tools/scripts/tracepoint.sh 
new/f2fs-tools/scripts/tracepoint.sh
--- old/f2fs-tools/scripts/tracepoint.sh        1970-01-01 01:00:00.000000000 
+0100
+++ new/f2fs-tools/scripts/tracepoint.sh        2013-11-24 12:32:49.000000000 
+0100
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+TRACE=/sys/kernel/debug/tracing/
+dev=$(((8<<20) + 17)) # sdb1 (8,17)
+
+echo 1 > tracing_on
+
+# block tracepoints
+echo "dev == $dev" > $TRACE/events/block/block_rq_complete/filter
+echo 1 > $TRACE/events/block/block_rq_complete/enable
+echo 0 > $TRACE/events/block/block_bio_complete/enable
+
+# GC
+G=0
+echo $G > $TRACE/events/f2fs/f2fs_get_victim/enable
+
+# block allocation
+A=0
+echo $A > $TRACE/events/f2fs/f2fs_reserve_new_block/enable
+
+# block truncation
+T=0
+echo $T > $TRACE/events/f2fs/f2fs_truncate/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_inode_blocks_enter/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_inode_blocks_exit/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_blocks_enter/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_blocks_exit/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_nodes_enter/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_nodes_exit/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_data_blocks_range/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_node/enable
+echo $T > $TRACE/events/f2fs/f2fs_truncate_partial_nodes/enable
+
+# syscalls
+S=0
+echo $S > $TRACE/events/f2fs/f2fs_unlink_enter/enable
+echo $S > $TRACE/events/f2fs/f2fs_unlink_exit/enable
+echo $S > $TRACE/events/f2fs/f2fs_fallocate/enable
+echo $S > $TRACE/events/f2fs/f2fs_get_data_block/enable
+
+# IOs
+R=0
+W=0
+echo $W > $TRACE/events/f2fs/f2fs_submit_write_page/enable
+echo $W > $TRACE/events/f2fs/f2fs_do_submit_bio/enable
+echo $R > $TRACE/events/f2fs/f2fs_readpage/enable
+
+# VFS interfaces
+V=0
+echo $V > $TRACE/events/f2fs/f2fs_iget/enable
+echo $V > $TRACE/events/f2fs/f2fs_iget_exit/enable
+echo $V > $TRACE/events/f2fs/f2fs_new_inode/enable
+echo $V > $TRACE/events/f2fs/f2fs_evict_inode/enable
+echo $V > $TRACE/events/f2fs/f2fs_sync_file_enter/enable
+echo $V > $TRACE/events/f2fs/f2fs_sync_file_exit/enable
+echo $V > $TRACE/events/f2fs/f2fs_write_checkpoint/enable
+echo $V > $TRACE/events/f2fs/f2fs_sync_fs/enable
+
+cat $TRACE/trace_pipe

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to