ocfs2: Fix ocfs2_read_quota_block() error handling.
ocfs2_bread() has become ocfs2_read_virt_blocks(), with a prototype to match ocfs2_read_blocks(). The quota code, converting from ocfs2_bread(), wraps the call to ocfs2_read_virt_blocks() in ocfs2_read_quota_block(). Unfortunately, the prototype of ocfs2_read_quota_block() matches the old prototype of ocfs2_bread(). The problem is that ocfs2_bread() returned the buffer head, and callers assumed that a NULL pointer was indicative of error. It wasn't. This is why ocfs2_bread() took an int*err argument as well. The new prototype of ocfs2_read_virt_blocks() avoids this error handling confusion. Let's change ocfs2_read_quota_block() to match. Signed-off-by: Joel Becker <joel.becker@oracle.com> Acked-by: Jan Kara <jack@suse.cz> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
This commit is contained in:
@ -3519,7 +3519,7 @@ static int ocfs2_refresh_qinfo(struct ocfs2_mem_dqinfo *oinfo)
|
||||
oinfo->dqi_gi.dqi_type);
|
||||
struct ocfs2_lock_res *lockres = &oinfo->dqi_gqlock;
|
||||
struct ocfs2_qinfo_lvb *lvb = ocfs2_dlm_lvb(&lockres->l_lksb);
|
||||
struct buffer_head *bh;
|
||||
struct buffer_head *bh = NULL;
|
||||
struct ocfs2_global_disk_dqinfo *gdinfo;
|
||||
int status = 0;
|
||||
|
||||
@ -3532,8 +3532,8 @@ static int ocfs2_refresh_qinfo(struct ocfs2_mem_dqinfo *oinfo)
|
||||
oinfo->dqi_gi.dqi_free_entry =
|
||||
be32_to_cpu(lvb->lvb_free_entry);
|
||||
} else {
|
||||
bh = ocfs2_read_quota_block(oinfo->dqi_gqinode, 0, &status);
|
||||
if (!bh) {
|
||||
status = ocfs2_read_quota_block(oinfo->dqi_gqinode, 0, &bh);
|
||||
if (status) {
|
||||
mlog_errno(status);
|
||||
goto bail;
|
||||
}
|
||||
|
Reference in New Issue
Block a user