diff -Nur busybox-git-orig/coreutils/md5_sha1_sum.c busybox-git/coreutils/md5_sha1_sum.c
--- busybox-git-orig/coreutils/md5_sha1_sum.c	2013-07-04 15:44:22.069993123 +0700
+++ busybox-git/coreutils/md5_sha1_sum.c	2013-07-04 20:30:01.656563830 +0700
@@ -153,7 +153,7 @@
 		hash_value = NULL;
 		if (count < 0) {
 			bb_perror_msg("can't read '%s'", filename);
-		else /* count == 0 */ {
+		} else /* count == 0 */ {
 			final(&context, in_buf);
 			hash_value = hash_bin_to_hex(in_buf, hash_len);
 		}
diff -Nur busybox-git-orig/util-linux/Config.src busybox-git/util-linux/Config.src
--- busybox-git-orig/util-linux/Config.src	2013-07-02 14:04:09.870218573 +0700
+++ busybox-git/util-linux/Config.src	2013-07-04 20:30:40.809894349 +0700
@@ -771,6 +771,13 @@
 	help
 	  TODO
 
+config FEATURE_VOLUMEID_F2FS
+	bool "f2fs filesystem"
+	default y
+	depends on VOLUMEID
+	help
+	  TODO
+
 config FEATURE_VOLUMEID_NILFS
 	bool "nilfs filesystem"
 	default y
diff -Nur busybox-git-orig/util-linux/guess_fstype.c busybox-git/util-linux/guess_fstype.c
--- busybox-git-orig/util-linux/guess_fstype.c	1970-01-01 07:00:00.000000000 +0700
+++ busybox-git/util-linux/guess_fstype.c	2013-07-04 21:02:19.916423619 +0700
@@ -0,0 +1,65 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * guess_fs based on a version by "jamesbond"
+ *
+ * Copyright 2013, ????
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree
+ */
+
+//applet:IF_GUESS_FSTYPE(APPLET(guess_fstype, BB_DIR_BIN, BB_SUID_MAYBE))
+
+//kbuild:lib-$(CONFIG_GUESS_FSTYPE) += guess_fstype.o
+
+//config:config GUESS_FSTYPE
+//config:	bool "guess_fstype"
+//config:	default n
+//config:	help
+//config:	  Guess filesystem type of device.
+//config:	  (As in Puppy guess_fstype)
+
+//usage:#define guess_fstype_trivial_usage
+//usage:	"[BLOCKDEV]..."
+//usage:#define guess_fstype_full_usage "\n\n"
+//usage:	"[BLOCKDEV]..."
+
+#include "libbb.h" 
+#include "volume_id/volume_id_internal.h"
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#define PSTR(x) (x), strlen(x)
+
+int guess_fstype_main (int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int guess_fstype_main (int argc, char **argv)
+{	
+	struct volume_id *id=0;
+	int retcode=0; //assume success
+	int fd;
+	
+	while (*++argv) {
+		// identify
+		fd = open (argv[0], O_RDONLY);
+		if (fd >= 0) {
+			id = volume_id_open_node (fd);
+			if (id) {
+				// if more than one, show original device 
+				if (argc > 2) {
+					write (1, PSTR(argv[0])); 
+					write (1, PSTR(": "));
+				}
+				
+				if ((!volume_id_probe_all (id, 0)) && id->type) {
+					write (1, PSTR(id->type));
+					write (1, PSTR("\n"));
+				} else {
+					write (1, PSTR("unknown\n"));
+					retcode=1;
+				}
+				free_volume_id (id);
+			}
+		}
+	}
+	
+	return retcode;
+}
diff -Nur busybox-git-orig/util-linux/volume_id/f2fs.c busybox-git/util-linux/volume_id/f2fs.c
--- busybox-git-orig/util-linux/volume_id/f2fs.c	1970-01-01 07:00:00.000000000 +0700
+++ busybox-git/util-linux/volume_id/f2fs.c	2013-07-04 20:28:48.899902426 +0700
@@ -0,0 +1,93 @@
+/*
+ * volume_id - reads filesystem label and uuid
+ *
+ * Copyright (C) 2012 S-G Bergh <sgb@systemasis.org>
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_F2FS) += f2fs.o
+
+//config:config FEATURE_VOLUMEID_F2FS
+//config:	bool "f2fs filesystem"
+//config:	default y
+//config:	depends on VOLUMEID
+//config:	help
+//config:	  F2FS (aka Flash-Friendly File System) is a log-structured file system,
+//config:	  which is adapted to newer forms of storage. F2FS also remedies some
+//config:	  known issues of the older log structured file systems, such as high
+//config:	  cleaning overhead.
+
+#include "volume_id_internal.h"
+
+#define	F2FS_MAGIC		0xF2F52010	// F2FS Magic Number
+#define F2FS_UUID_SIZE		16
+#define F2FS_LABEL_SIZE		512
+#define F2FS_LABEL_BYTES	1024
+#define	F2FS_SB1_OFFSET		0x400		// offset for 1:st super block
+/*
+#define F2FS_SB2_OFFSET		0x1400		// offset for 2:nd super block
+*/
+
+struct f2fs_super_block {	// According to version 1.1
+/* 0x00 */	uint32_t	magic;			// Magic Number
+/* 0x04 */	uint16_t	major_ver;		// Major Version
+/* 0x06 */	uint16_t	minor_ver;		// Minor Version
+/* 0x08 */	uint32_t	log_sectorsize;		// log2 sector size in bytes
+/* 0x0C */	uint32_t	log_sectors_per_block;	// log2 # of sectors per block
+/* 0x10 */	uint32_t	log_blocksize;		// log2 block size in bytes
+/* 0x14 */	uint32_t	log_blocks_per_seg;	// log2 # of blocks per segment
+/* 0x18 */	uint32_t	segs_per_sec;		// # of segments per section
+/* 0x1C */	uint32_t	secs_per_zone;		// # of sections per zone
+/* 0x20 */	uint32_t	checksum_offset;	// checksum offset inside super block
+/* 0x24 */	uint64_t	block_count;		// total # of user blocks
+/* 0x2C */	uint32_t	section_count;		// total # of sections
+/* 0x30 */	uint32_t	segment_count;		// total # of segments
+/* 0x34 */	uint32_t	segment_count_ckpt;	// # of segments for checkpoint
+/* 0x38 */	uint32_t	segment_count_sit;	// # of segments for SIT
+/* 0x3C */	uint32_t	segment_count_nat;	// # of segments for NAT
+/* 0x40 */	uint32_t	segment_count_ssa;	// # of segments for SSA
+/* 0x44 */	uint32_t	segment_count_main;	// # of segments for main area
+/* 0x48 */	uint32_t	segment0_blkaddr;	// start block address of segment 0
+/* 0x4C */	uint32_t	cp_blkaddr;		// start block address of checkpoint
+/* 0x50 */	uint32_t	sit_blkaddr;		// start block address of SIT
+/* 0x54 */	uint32_t	nat_blkaddr;		// start block address of NAT
+/* 0x58 */	uint32_t	ssa_blkaddr;		// start block address of SSA
+/* 0x5C */	uint32_t	main_blkaddr;		// start block address of main area
+/* 0x60 */	uint32_t	root_ino;		// root inode number
+/* 0x64 */	uint32_t	node_ino;		// node inode number
+/* 0x68 */	uint32_t	meta_ino;		// meta inode number
+/* 0x6C */	uint8_t		uuid[F2FS_UUID_SIZE];	// 128-bit uuid for volume
+/* 0x7C */	uint16_t	volume_name[F2FS_LABEL_SIZE];	// volume name
+//* 0x47C */	uint32_t	extension_count;	// # of extensions below
+//* 0x480 */	uint8_t		extension_list[64][8];	// extension array
+} PACKED;
+
+
+int FAST_FUNC volume_id_probe_f2fs(struct volume_id *id /*,uint64_t off*/)
+{
+	struct f2fs_super_block *sb;
+
+	// Go for primary super block (ignore second sb)
+	dbg("f2fs: probing at offset 0x%x", F2FS_SB1_OFFSET);
+	sb = volume_id_get_buffer(id, F2FS_SB1_OFFSET, sizeof(*sb));
+
+	if (!sb)
+		return -1;
+
+	if (sb->magic != cpu_to_le32(F2FS_MAGIC))
+		return -1;
+
+	IF_FEATURE_BLKID_TYPE(id->type = "f2fs");
+
+	// For version 1.0 we cannot know the correct sb structure...
+	if (le16_to_cpu(sb->major_ver) == 1 && le16_to_cpu(sb->minor_ver) == 0)
+		return 0;
+
+	volume_id_set_label_unicode16(id, (uint8_t *)sb->volume_name,
+				      LE, MIN(F2FS_LABEL_BYTES, VOLUME_ID_LABEL_SIZE));
+
+	volume_id_set_uuid(id, sb->uuid, UUID_DCE);
+
+	return 0;
+}
diff -Nur busybox-git-orig/util-linux/volume_id/Kbuild.src busybox-git/util-linux/volume_id/Kbuild.src
--- busybox-git-orig/util-linux/volume_id/Kbuild.src	2013-07-02 14:04:09.880218573 +0700
+++ busybox-git/util-linux/volume_id/Kbuild.src	2013-07-04 20:31:13.893225272 +0700
@@ -45,3 +45,4 @@
 ### lib-$(CONFIG_FEATURE_VOLUMEID_MINIX)            += minix.o
 lib-$(CONFIG_FEATURE_VOLUMEID_LUKS)             += luks.o
 lib-$(CONFIG_FEATURE_VOLUMEID_OCFS2)            += ocfs2.o
+lib-$(CONFIG_FEATURE_VOLUMEID_F2FS)             += f2fs.o
diff -Nur busybox-git-orig/util-linux/volume_id/volume_id.c busybox-git/util-linux/volume_id/volume_id.c
--- busybox-git-orig/util-linux/volume_id/volume_id.c	2013-07-02 14:04:09.883551906 +0700
+++ busybox-git/util-linux/volume_id/volume_id.c	2013-07-04 20:28:48.899902426 +0700
@@ -17,7 +17,6 @@
  *	License along with this library; if not, write to the Free Software
  *	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
-
 #include "volume_id_internal.h"
 
 
@@ -136,6 +135,9 @@
 #if ENABLE_FEATURE_VOLUMEID_UFS
 	volume_id_probe_ufs,
 #endif
+#if ENABLE_FEATURE_VOLUMEID_F2FS
+	volume_id_probe_f2fs,
+#endif
 #if ENABLE_FEATURE_VOLUMEID_NILFS
 	volume_id_probe_nilfs,
 #endif
diff -Nur busybox-git-orig/util-linux/volume_id/volume_id_internal.h busybox-git/util-linux/volume_id/volume_id_internal.h
--- busybox-git-orig/util-linux/volume_id/volume_id_internal.h	2013-07-02 14:04:09.883551906 +0700
+++ busybox-git/util-linux/volume_id/volume_id_internal.h	2013-07-04 20:28:48.899902426 +0700
@@ -195,6 +195,8 @@
 
 //int FAST_FUNC volume_id_probe_msdos_part_table(struct volume_id *id /*,uint64_t off*/);
 
+int FAST_FUNC volume_id_probe_f2fs(struct volume_id *id /*,uint64_t off*/);
+
 int FAST_FUNC volume_id_probe_nilfs(struct volume_id *id /*,uint64_t off*/);
 
 int FAST_FUNC volume_id_probe_ntfs(struct volume_id *id /*,uint64_t off*/);
