ocfs2: acknowledge return value of ocfs2_error()
Caveat: This may return -EROFS for a read case, which seems wrong. This is happening even without this patch series though. Should we convert EROFS to EIO? Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Cc: Mark Fasheh <mfasheh@suse.com> Cc: Joel Becker <jlbec@evilplan.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
7d0fb9148a
commit
17a5b9ab32
+18
-24
@@ -102,32 +102,32 @@ static int ocfs2_validate_refcount_block(struct super_block *sb,
|
||||
|
||||
|
||||
if (!OCFS2_IS_VALID_REFCOUNT_BLOCK(rb)) {
|
||||
ocfs2_error(sb,
|
||||
rc = ocfs2_error(sb,
|
||||
"Refcount block #%llu has bad signature %.*s",
|
||||
(unsigned long long)bh->b_blocknr, 7,
|
||||
rb->rf_signature);
|
||||
return -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (le64_to_cpu(rb->rf_blkno) != bh->b_blocknr) {
|
||||
ocfs2_error(sb,
|
||||
rc = ocfs2_error(sb,
|
||||
"Refcount block #%llu has an invalid rf_blkno "
|
||||
"of %llu",
|
||||
(unsigned long long)bh->b_blocknr,
|
||||
(unsigned long long)le64_to_cpu(rb->rf_blkno));
|
||||
return -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (le32_to_cpu(rb->rf_fs_generation) != OCFS2_SB(sb)->fs_generation) {
|
||||
ocfs2_error(sb,
|
||||
rc = ocfs2_error(sb,
|
||||
"Refcount block #%llu has an invalid "
|
||||
"rf_fs_generation of #%u",
|
||||
(unsigned long long)bh->b_blocknr,
|
||||
le32_to_cpu(rb->rf_fs_generation));
|
||||
return -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
return 0;
|
||||
out:
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int ocfs2_read_refcount_block(struct ocfs2_caching_info *ci,
|
||||
@@ -1102,12 +1102,11 @@ static int ocfs2_get_refcount_rec(struct ocfs2_caching_info *ci,
|
||||
el = &eb->h_list;
|
||||
|
||||
if (el->l_tree_depth) {
|
||||
ocfs2_error(sb,
|
||||
"refcount tree %llu has non zero tree "
|
||||
"depth in leaf btree tree block %llu\n",
|
||||
(unsigned long long)ocfs2_metadata_cache_owner(ci),
|
||||
(unsigned long long)eb_bh->b_blocknr);
|
||||
ret = -EROFS;
|
||||
ret = ocfs2_error(sb,
|
||||
"refcount tree %llu has non zero tree "
|
||||
"depth in leaf btree tree block %llu\n",
|
||||
(unsigned long long)ocfs2_metadata_cache_owner(ci),
|
||||
(unsigned long long)eb_bh->b_blocknr);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -2359,10 +2358,9 @@ static int ocfs2_mark_extent_refcounted(struct inode *inode,
|
||||
cpos, len, phys);
|
||||
|
||||
if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) {
|
||||
ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
|
||||
ret = ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
|
||||
"tree, but the feature bit is not set in the "
|
||||
"super block.", inode->i_ino);
|
||||
ret = -EROFS;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -2545,10 +2543,9 @@ int ocfs2_prepare_refcount_change_for_del(struct inode *inode,
|
||||
u64 start_cpos = ocfs2_blocks_to_clusters(inode->i_sb, phys_blkno);
|
||||
|
||||
if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) {
|
||||
ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
|
||||
ret = ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
|
||||
"tree, but the feature bit is not set in the "
|
||||
"super block.", inode->i_ino);
|
||||
ret = -EROFS;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -2672,11 +2669,10 @@ static int ocfs2_refcount_cal_cow_clusters(struct inode *inode,
|
||||
el = &eb->h_list;
|
||||
|
||||
if (el->l_tree_depth) {
|
||||
ocfs2_error(inode->i_sb,
|
||||
ret = ocfs2_error(inode->i_sb,
|
||||
"Inode %lu has non zero tree depth in "
|
||||
"leaf block %llu\n", inode->i_ino,
|
||||
(unsigned long long)eb_bh->b_blocknr);
|
||||
ret = -EROFS;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -3106,11 +3102,10 @@ static int ocfs2_clear_ext_refcount(handle_t *handle,
|
||||
|
||||
index = ocfs2_search_extent_list(el, cpos);
|
||||
if (index == -1) {
|
||||
ocfs2_error(sb,
|
||||
ret = ocfs2_error(sb,
|
||||
"Inode %llu has an extent at cpos %u which can no "
|
||||
"longer be found.\n",
|
||||
(unsigned long long)ino, cpos);
|
||||
ret = -EROFS;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -3376,10 +3371,9 @@ static int ocfs2_replace_cow(struct ocfs2_cow_context *context)
|
||||
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
||||
|
||||
if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) {
|
||||
ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
|
||||
return ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
|
||||
"tree, but the feature bit is not set in the "
|
||||
"super block.", inode->i_ino);
|
||||
return -EROFS;
|
||||
}
|
||||
|
||||
ocfs2_init_dealloc_ctxt(&context->dealloc);
|
||||
|
||||
Reference in New Issue
Block a user