int ext4_extent_find_block(struct ext4_inode_ref *inode_ref, uint32_t iblock,\r
uint32_t *fblock)\r
{\r
+ int rc;\r
/* Compute bound defined by i-node size */\r
uint64_t inode_size =\r
ext4_inode_get_size(&inode_ref->fs->sb, inode_ref->inode);\r
/* Load child node and set values for the next iteration */\r
uint64_t child = ext4_extent_index_get_leaf(index);\r
\r
- if (block.lb_id)\r
- ext4_block_set(inode_ref->fs->bdev, &block);\r
+ if (block.lb_id){\r
+ rc = ext4_block_set(inode_ref->fs->bdev, &block);\r
+ if(rc != EOK)\r
+ return rc;\r
+ }\r
\r
\r
int rc = ext4_block_get(inode_ref->fs->bdev, &block, child);\r
}\r
\r
/* Cleanup */\r
- if (block.lb_id)\r
- ext4_block_set(inode_ref->fs->bdev, &block);\r
+ if (block.lb_id){\r
+ rc = ext4_block_set(inode_ref->fs->bdev, &block);\r
+ if(rc != EOK)\r
+ return rc;\r
+ }\r
\r
return EOK;\r
}\r
* From 1: 0 is a block with inode data\r
*/\r
for (i = 1; i < tmp_path->depth; ++i) {\r
- if (tmp_path[i].block.lb_id)\r
- ext4_block_set(inode_ref->fs->bdev, &tmp_path[i].block);\r
+ if (tmp_path[i].block.lb_id){\r
+ int r = ext4_block_set(inode_ref->fs->bdev, &tmp_path[i].block);\r
+ if(r != EOK)\r
+ rc = r;\r
+ }\r
}\r
\r
/* Destroy temporary data structure */\r
if (rc != EOK)\r
return rc;\r
\r
- ext4_balloc_free_block(inode_ref, fblock);\r
-\r
- return EOK;\r
+ return ext4_balloc_free_block(inode_ref, fblock);\r
}\r
\r
\r
* starting from 1: 0 is a block with inode data\r
*/\r
for (i = 1; i <= path->depth; ++i) {\r
- if (path[i].block.lb_id)\r
- ext4_block_set(inode_ref->fs->bdev, &path[i].block);\r
+ if (path[i].block.lb_id){\r
+ int r = ext4_block_set(inode_ref->fs->bdev, &path[i].block);\r
+ if(r != EOK)\r
+ rc = r;\r
+ }\r
}\r
\r
/* Destroy temporary data structure */\r
}\r
\r
/* Put back not modified old block */\r
- ext4_block_set(inode_ref->fs->bdev, &path_ptr->block);\r
+ rc = ext4_block_set(inode_ref->fs->bdev, &path_ptr->block);\r
+ if (rc != EOK) {\r
+ ext4_balloc_free_block(inode_ref, fblock);\r
+ return rc;\r
+ }\r
\r
/* Initialize newly allocated block and remember it */\r
memset(block.data, 0, block_size);\r
* starting from 1: 0 is a block with inode data\r
*/\r
for (i = 1; i <= path->depth; ++i) {\r
- if (path[i].block.lb_id)\r
- ext4_block_set(inode_ref->fs->bdev, &path[i].block);\r
+ if (path[i].block.lb_id){\r
+ int r = ext4_block_set(inode_ref->fs->bdev, &path[i].block);\r
+ if(r != EOK)\r
+ rc = r;\r
+ }\r
}\r
\r
/* Destroy temporary data structure */\r