goto fsck_again;
}
}
- f2fs_finalize_device();
+ ret = f2fs_finalize_device();
+ if (ret < 0)
+ return ret;
printf("\nDone.\n");
return 0;
write_nat_bits(sbi, sb, cp, sbi->cur_cp);
/* in case of sudden power off */
- f2fs_fsync_device();
+ ret = f2fs_fsync_device();
+ ASSERT(ret >= 0);
/* write the last cp */
ret = dev_write_block(cp, cp_blk_no++);
extern int f2fs_dev_is_umounted(char *);
extern int f2fs_get_device_info(void);
extern int get_device_info(int);
-extern void f2fs_finalize_device(void);
-extern void f2fs_fsync_device(void);
+extern int f2fs_finalize_device(void);
+extern int f2fs_fsync_device(void);
extern int dev_read(void *, __u64, size_t);
extern int dev_write(void *, __u64, size_t);
return dev_readahead(blk_addr << F2FS_BLKSIZE_BITS, F2FS_BLKSIZE);
}
-void f2fs_fsync_device(void)
+int f2fs_fsync_device(void)
{
int i;
for (i = 0; i < c.ndevs; i++) {
- if (fsync(c.devices[i].fd) < 0)
+ if (fsync(c.devices[i].fd) < 0) {
MSG(0, "\tError: Could not conduct fsync!!!\n");
+ return -1;
+ }
}
+
+ return 0;
}
-void f2fs_finalize_device(void)
+int f2fs_finalize_device(void)
{
int i;
+ int ret = 0;
#ifdef WITH_ANDROID
if (c.sparse_mode) {
* in the block device page cache.
*/
for (i = 0; i < c.ndevs; i++) {
- if (fsync(c.devices[i].fd) < 0)
+ ret = fsync(c.devices[i].fd);
+ if (ret < 0) {
MSG(0, "\tError: Could not conduct fsync!!!\n");
+ break;
+ }
- if (close(c.devices[i].fd) < 0)
+ ret = close(c.devices[i].fd);
+ if (ret < 0) {
MSG(0, "\tError: Failed to close device file!!!\n");
+ break;
+ }
}
close(c.kd);
+
+ return ret;
}
if (f2fs_format_device() < 0)
return -1;
- f2fs_finalize_device();
+ if (f2fs_finalize_device() < 0)
+ return -1;
MSG(0, "Info: format successful\n");