[Ocfs2-devel] [PATCH 1/2] ocfs2: return EROFS instead of BUG in ocfs2_insert_at_leaf.

Joel Becker Joel.Becker at oracle.com
Fri Jun 12 14:42:52 PDT 2009


On Fri, Jun 12, 2009 at 02:18:35PM +0800, Tao Ma wrote:
> As Mark's suggestion, change BUG to EROFS in ocfs2_insert_at_leaf.
> 
> Signed-off-by: Tao Ma <tao.ma at oracle.com>

	I see that Mark is rethinking this, and I'll wait on that.  But
I do have one comment.

> @@ -3703,23 +3703,28 @@ static void ocfs2_insert_at_leaf(struct ocfs2_extent_rec *insert_rec,
>  			+ le16_to_cpu(rec->e_leaf_clusters);
>  		BUG_ON(le32_to_cpu(insert_rec->e_cpos) < range);
>  
> -		mlog_bug_on_msg(le16_to_cpu(el->l_next_free_rec) >=
> -				le16_to_cpu(el->l_count),
> -				"inode %lu, depth %u, count %u, next free %u, "
> -				"rec.cpos %u, rec.clusters %u, "
> -				"insert.cpos %u, insert.clusters %u\n",
> -				inode->i_ino,
> -				le16_to_cpu(el->l_tree_depth),
> -				le16_to_cpu(el->l_count),
> -				le16_to_cpu(el->l_next_free_rec),
> -				le32_to_cpu(el->l_recs[i].e_cpos),
> -				le16_to_cpu(el->l_recs[i].e_leaf_clusters),
> -				le32_to_cpu(insert_rec->e_cpos),
> -				le16_to_cpu(insert_rec->e_leaf_clusters));
> +		if (le16_to_cpu(el->l_next_free_rec) >=
> +		    le16_to_cpu(el->l_count)) {
> +			mlog(ML_ERROR, "l_next_free_rec > l_count, "
> +			     "inode %lu, depth %u, count %u, next free %u, "
> +			     "rec.cpos %u, rec.clusters %u, "
> +			     "insert.cpos %u, insert.clusters %u\n",
> +			     inode->i_ino,
> +			     le16_to_cpu(el->l_tree_depth),
> +			     le16_to_cpu(el->l_count),
> +			     le16_to_cpu(el->l_next_free_rec),
> +			     le32_to_cpu(el->l_recs[i].e_cpos),
> +			     le16_to_cpu(el->l_recs[i].e_leaf_clusters),
> +			     le32_to_cpu(insert_rec->e_cpos),
> +			     le16_to_cpu(insert_rec->e_leaf_clusters));
> +			ret = -EROFS;
> +			goto out;
> +		}

	Shouldn't this be ocfs2_error() instead of ML_ERROR?  If we're
returning EROFS, we should actually be setting the fs readonly.

Joel

-- 

 "I'm living so far beyond my income that we may almost be said
 to be living apart."
         - e e cummings

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127



More information about the Ocfs2-devel mailing list