if (dev_fill(zero_buf, sit_seg_addr, seg_size)) {
MSG(1, "\tError: While zeroing out the sit area \
on disk!!!\n");
+ free(zero_buf);
return -1;
}
sit_seg_addr += seg_size;
if (dev_fill(nat_buf, nat_seg_addr, seg_size)) {
MSG(1, "\tError: While zeroing out the nat area \
on disk!!!\n");
+ free(nat_buf);
return -1;
}
nat_seg_addr = nat_seg_addr + (2 * seg_size);
char *cp_payload = NULL;
char *sum_compact, *sum_compact_p;
struct f2fs_summary *sum_entry;
+ int ret = -1;
cp = calloc(F2FS_BLKSIZE, 1);
if (cp == NULL) {
MSG(1, "\tError: Calloc Failed for f2fs_checkpoint!!!\n");
- return -1;
+ return ret;
}
sum = calloc(F2FS_BLKSIZE, 1);
if (sum == NULL) {
MSG(1, "\tError: Calloc Failed for summay_node!!!\n");
- return -1;
+ goto free_cp;
}
sum_compact = calloc(F2FS_BLKSIZE, 1);
if (sum == NULL) {
MSG(1, "\tError: Calloc Failed for summay buffer!!!\n");
- return -1;
+ goto free_sum;
}
sum_compact_p = sum_compact;
cp_payload = calloc(F2FS_BLKSIZE, 1);
if (cp_payload == NULL) {
MSG(1, "\tError: Calloc Failed for cp_payload!!!\n");
- return -1;
+ goto free_sum_compact;
}
/* 1. cp page 1 of checkpoint pack 1 */
DBG(1, "\tWriting main segments, cp at offset 0x%08"PRIx64"\n", cp_seg_blk_offset);
if (dev_write(cp, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the cp to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
for (i = 0; i < get_sb(cp_payload); i++) {
if (dev_fill(cp_payload, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While zeroing out the sit bitmap area \
on disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
}
cp_seg_blk_offset);
if (dev_write(sum_compact, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the sum_blk to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
/* Prepare and write Segment summary for HOT_NODE */
cp_seg_blk_offset);
if (dev_write(sum, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the sum_blk to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
/* Fill segment summary for WARM_NODE to zero. */
cp_seg_blk_offset);
if (dev_write(sum, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the sum_blk to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
/* Fill segment summary for COLD_NODE to zero. */
cp_seg_blk_offset);
if (dev_write(sum, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the sum_blk to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
/* cp page2 */
DBG(1, "\tWriting cp page2, at offset 0x%08"PRIx64"\n", cp_seg_blk_offset);
if (dev_write(cp, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the cp to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
/* cp page 1 of check point pack 2
DBG(1, "\tWriting cp page 1 of checkpoint pack 2, at offset 0x%08"PRIx64"\n", cp_seg_blk_offset);
if (dev_write(cp, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the cp to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
for (i = 0; i < get_sb(cp_payload); i++) {
if (dev_fill(cp_payload, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While zeroing out the sit bitmap area \
on disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
}
DBG(1, "\tWriting cp page 2 of checkpoint pack 2, at offset 0x%08"PRIx64"\n", cp_seg_blk_offset);
if (dev_write(cp, cp_seg_blk_offset, blk_size_bytes)) {
MSG(1, "\tError: While writing the cp to disk!!!\n");
- return -1;
+ goto free_cp_payload;
}
+ ret = 0;
+
+free_cp_payload:
+ free(cp_payload);
+free_sum_compact:
free(sum_compact);
+free_sum:
free(sum);
- free(cp_payload);
+free_cp:
free(cp);
- return 0;
+ return ret;
}
static int f2fs_write_super_block(void)
if (dev_write(zero_buff, index * F2FS_BLKSIZE, F2FS_BLKSIZE)) {
MSG(1, "\tError: While while writing supe_blk \
on disk!!! index : %d\n", index);
+ free(zero_buff);
return -1;
}
}
DBG(1, "\tWriting root inode (hot node), at offset 0x%08"PRIx64"\n", main_area_node_seg_blk_offset);
if (dev_write(raw_node, main_area_node_seg_blk_offset, F2FS_BLKSIZE)) {
MSG(1, "\tError: While writing the raw_node to disk!!!\n");
+ free(raw_node);
return -1;
}
DBG(1, "\tWriting root inode (warm node), at offset 0x%08"PRIx64"\n", main_area_node_seg_blk_offset);
if (dev_write(raw_node, main_area_node_seg_blk_offset, F2FS_BLKSIZE)) {
MSG(1, "\tError: While writing the raw_node to disk!!!\n");
+ free(raw_node);
return -1;
}
free(raw_node);
DBG(1, "\tWriting nat root, at offset 0x%08"PRIx64"\n", nat_seg_blk_offset);
if (dev_write(nat_blk, nat_seg_blk_offset, F2FS_BLKSIZE)) {
MSG(1, "\tError: While writing the nat_blk set0 to disk!\n");
+ free(nat_blk);
return -1;
}
DBG(1, "\tWriting default dentry root, at offset 0x%08"PRIx64"\n", data_blk_offset);
if (dev_write(dent_blk, data_blk_offset, F2FS_BLKSIZE)) {
MSG(1, "\tError: While writing the dentry_blk to disk!!!\n");
+ free(dent_blk);
return -1;
}