diff --git a/fsck/fsck.c b/fsck/fsck.c
index 3e67ffc..e7dd02f 100644
--- a/fsck/fsck.c
+++ b/fsck/fsck.c
@@ -21,7 +21,7 @@
 	int fix = 0;
 
 	se = get_seg_entry(sbi, GET_SEGNO(sbi, blk));
-	if (se->type < 0 || se->type >= NO_CHECK_TYPE)
+	if (se->type >= NO_CHECK_TYPE)
 		fix = 1;
 	else if (IS_DATASEG(se->type) != IS_DATASEG(type))
 		fix = 1;
@@ -945,7 +945,6 @@
 	int dentries = 0;
 	u32 blk_cnt;
 	u8 *name;
-	u32 ino;
 	u16 name_len;;
 	int ret = 0;
 	int fixed = 0;
@@ -953,6 +952,8 @@
 
 	/* readahead inode blocks */
 	for (i = 0; i < max; i++) {
+		u32 ino;
+
 		if (test_bit_le(i, bitmap) == 0)
 			continue;
 
@@ -992,7 +993,8 @@
 
 		ftype = dentry[i].file_type;
 		if ((ftype <= F2FS_FT_UNKNOWN || ftype > F2FS_FT_LAST_FILE_TYPE)) {
-			ASSERT_MSG("Bad dentry 0x%x with unexpected ftype 0x%x", ino, ftype);
+			ASSERT_MSG("Bad dentry 0x%x with unexpected ftype 0x%x",
+						le32_to_cpu(dentry[i].ino), ftype);
 			if (config.fix_on) {
 				FIX_MSG("Clear bad dentry 0x%x with bad ftype 0x%x",
 					i, ftype);
diff --git a/fsck/mount.c b/fsck/mount.c
index 7533926..b01230f 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -1410,7 +1410,7 @@
 		}
 		if (se->valid_blocks == 0 && !(segno % sbi->segs_per_sec)) {
 			struct seg_entry *se2;
-			int i;
+			unsigned int i;
 
 			for (i = 0; i < sbi->segs_per_sec; i++) {
 				se2 = get_seg_entry(sbi, segno + i);
diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index e9a1606..d61eb85 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -94,7 +94,7 @@
 	u_int16_t *outp = output;
 	wchar_t wc;
 
-	while (inp - input < insize && *inp) {
+	while ((size_t)(inp - input) < insize && *inp) {
 		inp = utf8_to_wchar(inp, &wc, insize - (inp - input));
 		if (inp == NULL) {
 			DBG(0, "illegal UTF-8 sequence\n");
@@ -180,7 +180,7 @@
 	char *outp = output;
 	wchar_t wc;
 
-	while (inp - input < insize && le16_to_cpu(*inp)) {
+	while ((size_t)(inp - input) < insize && le16_to_cpu(*inp)) {
 		inp = utf16_to_wchar(inp, &wc, insize - (inp - input));
 		if (inp == NULL) {
 			DBG(0, "illegal UTF-16 sequence\n");
@@ -503,8 +503,7 @@
 	c->ro = 0;
 }
 
-static int is_mounted(struct f2fs_configuration *c,
-				const char *mpt, const char *device)
+static int is_mounted(const char *mpt, const char *device)
 {
 	FILE *file = NULL;
 	struct mntent *mnt = NULL;
@@ -515,8 +514,10 @@
 
 	while ((mnt = getmntent(file)) != NULL) {
 		if (!strcmp(device, mnt->mnt_fsname)) {
+#ifdef MNTOPT_RO
 			if (hasmntopt(mnt, MNTOPT_RO))
 				config.ro = 1;
+#endif
 			break;
 		}
 	}
@@ -529,7 +530,7 @@
 	struct stat st_buf;
 	int ret = 0;
 
-	ret = is_mounted(c, MOUNTED, c->device_name);
+	ret = is_mounted(MOUNTED, c->device_name);
 	if (ret) {
 		MSG(0, "Info: Mounted device!\n");
 		return -1;
@@ -539,7 +540,7 @@
 	 * if failed due to /etc/mtab file not present
 	 * try with /proc/mounts.
 	 */
-	ret = is_mounted(c, "/proc/mounts", c->device_name);
+	ret = is_mounted("/proc/mounts", c->device_name);
 	if (ret) {
 		MSG(0, "Info: Mounted device!\n");
 		return -1;
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index fd61757..2c81ecc 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -697,6 +697,7 @@
 	return 0;
 }
 
+#ifndef WITH_ANDROID
 static int discard_obsolete_dnode(struct f2fs_node *raw_node, u_int64_t offset)
 {
 	do {
@@ -722,6 +723,7 @@
 
 	return 0;
 }
+#endif
 
 static int f2fs_write_root_inode(void)
 {
@@ -789,10 +791,12 @@
 	main_area_node_seg_blk_offset += config.cur_seg[CURSEG_WARM_NODE] *
 					config.blks_per_seg;
 
+#ifndef WITH_ANDROID
 	if (discard_obsolete_dnode(raw_node, main_area_node_seg_blk_offset)) {
 		free(raw_node);
 		return -1;
 	}
+#endif
 
 	free(raw_node);
 	return 0;
