mirror of https://github.com/torvalds/linux.git
xfs: return the allocated transaction from xfs_trans_alloc_empty
xfs_trans_alloc_empty can't return errors, so return the allocated transaction directly instead of an output double pointer argument. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
60538b0b54
commit
d8e1ea43e5
|
|
@ -2099,9 +2099,7 @@ xfs_refcount_recover_cow_leftovers(
|
|||
* recording the CoW debris we cancel the (empty) transaction
|
||||
* and everything goes away cleanly.
|
||||
*/
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
|
||||
if (isrt) {
|
||||
xfs_rtgroup_lock(to_rtg(xg), XFS_RTGLOCK_REFCOUNT);
|
||||
|
|
|
|||
|
|
@ -870,7 +870,8 @@ int
|
|||
xchk_trans_alloc_empty(
|
||||
struct xfs_scrub *sc)
|
||||
{
|
||||
return xfs_trans_alloc_empty(sc->mp, &sc->tp);
|
||||
sc->tp = xfs_trans_alloc_empty(sc->mp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1279,18 +1279,10 @@ xrep_trans_alloc_hook_dummy(
|
|||
void **cookiep,
|
||||
struct xfs_trans **tpp)
|
||||
{
|
||||
int error;
|
||||
|
||||
*cookiep = current->journal_info;
|
||||
current->journal_info = NULL;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, tpp);
|
||||
if (!error)
|
||||
*tpp = xfs_trans_alloc_empty(mp);
|
||||
return 0;
|
||||
|
||||
current->journal_info = *cookiep;
|
||||
*cookiep = NULL;
|
||||
return error;
|
||||
}
|
||||
|
||||
/* Cancel a dummy transaction used by a live update hook function. */
|
||||
|
|
|
|||
|
|
@ -876,10 +876,7 @@ xchk_scrubv_open_by_handle(
|
|||
struct xfs_inode *ip;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return NULL;
|
||||
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
error = xfs_iget(mp, tp, head->svh_ino, XCHK_IGET_FLAGS, 0, &ip);
|
||||
xfs_trans_cancel(tp);
|
||||
if (error)
|
||||
|
|
|
|||
|
|
@ -616,10 +616,7 @@ xfs_attri_iread_extents(
|
|||
struct xfs_trans *tp;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(ip->i_mount, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
tp = xfs_trans_alloc_empty(ip->i_mount);
|
||||
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
||||
error = xfs_iread_extents(tp, ip, XFS_ATTR_FORK);
|
||||
xfs_iunlock(ip, XFS_ILOCK_EXCL);
|
||||
|
|
|
|||
|
|
@ -189,9 +189,7 @@ xfs_trim_gather_extents(
|
|||
*/
|
||||
xfs_log_force(mp, XFS_LOG_SYNC);
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
|
||||
error = xfs_alloc_read_agf(pag, tp, 0, &agbp);
|
||||
if (error)
|
||||
|
|
@ -583,9 +581,7 @@ xfs_trim_rtextents(
|
|||
struct xfs_trans *tp;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
|
||||
/*
|
||||
* Walk the free ranges between low and high. The query_range function
|
||||
|
|
@ -701,9 +697,7 @@ xfs_trim_rtgroup_extents(
|
|||
struct xfs_trans *tp;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
|
||||
/*
|
||||
* Walk the free ranges between low and high. The query_range function
|
||||
|
|
|
|||
|
|
@ -1270,9 +1270,7 @@ xfs_getfsmap(
|
|||
* buffer locking abilities to detect cycles in the rmapbt
|
||||
* without deadlocking.
|
||||
*/
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
break;
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
|
||||
info.dev = handlers[i].dev;
|
||||
info.last = false;
|
||||
|
|
|
|||
|
|
@ -893,10 +893,7 @@ xfs_metafile_iget(
|
|||
struct xfs_trans *tp;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
error = xfs_trans_metafile_iget(tp, ino, metafile_type, ipp);
|
||||
xfs_trans_cancel(tp);
|
||||
return error;
|
||||
|
|
|
|||
|
|
@ -2932,12 +2932,9 @@ xfs_inode_reload_unlinked(
|
|||
struct xfs_inode *ip)
|
||||
{
|
||||
struct xfs_trans *tp;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(ip->i_mount, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
int error = 0;
|
||||
|
||||
tp = xfs_trans_alloc_empty(ip->i_mount);
|
||||
xfs_ilock(ip, XFS_ILOCK_SHARED);
|
||||
if (xfs_inode_unlinked_incomplete(ip))
|
||||
error = xfs_inode_reload_unlinked_bucket(tp, ip);
|
||||
|
|
|
|||
|
|
@ -239,14 +239,10 @@ xfs_bulkstat_one(
|
|||
* Grab an empty transaction so that we can use its recursive buffer
|
||||
* locking abilities to detect cycles in the inobt without deadlocking.
|
||||
*/
|
||||
error = xfs_trans_alloc_empty(breq->mp, &tp);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
tp = xfs_trans_alloc_empty(breq->mp);
|
||||
error = xfs_bulkstat_one_int(breq->mp, breq->idmap, tp,
|
||||
breq->startino, &bc);
|
||||
xfs_trans_cancel(tp);
|
||||
out:
|
||||
kfree(bc.buf);
|
||||
|
||||
/*
|
||||
|
|
@ -331,17 +327,13 @@ xfs_bulkstat(
|
|||
* Grab an empty transaction so that we can use its recursive buffer
|
||||
* locking abilities to detect cycles in the inobt without deadlocking.
|
||||
*/
|
||||
error = xfs_trans_alloc_empty(breq->mp, &tp);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
tp = xfs_trans_alloc_empty(breq->mp);
|
||||
if (breq->flags & XFS_IBULK_SAME_AG)
|
||||
iwalk_flags |= XFS_IWALK_SAME_AG;
|
||||
|
||||
error = xfs_iwalk(breq->mp, tp, breq->startino, iwalk_flags,
|
||||
xfs_bulkstat_iwalk, breq->icount, &bc);
|
||||
xfs_trans_cancel(tp);
|
||||
out:
|
||||
kfree(bc.buf);
|
||||
|
||||
/*
|
||||
|
|
@ -464,14 +456,10 @@ xfs_inumbers(
|
|||
* Grab an empty transaction so that we can use its recursive buffer
|
||||
* locking abilities to detect cycles in the inobt without deadlocking.
|
||||
*/
|
||||
error = xfs_trans_alloc_empty(breq->mp, &tp);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
tp = xfs_trans_alloc_empty(breq->mp);
|
||||
error = xfs_inobt_walk(breq->mp, tp, breq->startino, breq->flags,
|
||||
xfs_inumbers_walk, breq->icount, &ic);
|
||||
xfs_trans_cancel(tp);
|
||||
out:
|
||||
|
||||
/*
|
||||
* We found some inode groups, so clear the error status and return
|
||||
|
|
|
|||
|
|
@ -377,11 +377,8 @@ xfs_iwalk_run_callbacks(
|
|||
if (!has_more)
|
||||
return 0;
|
||||
|
||||
if (iwag->drop_trans) {
|
||||
error = xfs_trans_alloc_empty(mp, &iwag->tp);
|
||||
if (error)
|
||||
return error;
|
||||
}
|
||||
if (iwag->drop_trans)
|
||||
iwag->tp = xfs_trans_alloc_empty(mp);
|
||||
|
||||
/* ...and recreate the cursor just past where we left off. */
|
||||
error = xfs_ialloc_read_agi(iwag->pag, iwag->tp, 0, agi_bpp);
|
||||
|
|
@ -617,9 +614,7 @@ xfs_iwalk_ag_work(
|
|||
* Grab an empty transaction so that we can use its recursive buffer
|
||||
* locking abilities to detect cycles in the inobt without deadlocking.
|
||||
*/
|
||||
error = xfs_trans_alloc_empty(mp, &iwag->tp);
|
||||
if (error)
|
||||
goto out;
|
||||
iwag->tp = xfs_trans_alloc_empty(mp);
|
||||
iwag->drop_trans = 1;
|
||||
|
||||
error = xfs_iwalk_ag(iwag);
|
||||
|
|
|
|||
|
|
@ -279,10 +279,7 @@ xfs_dax_notify_dev_failure(
|
|||
kernel_frozen = xfs_dax_notify_failure_freeze(mp) == 0;
|
||||
}
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
start_gno = xfs_fsb_to_gno(mp, start_bno, type);
|
||||
end_gno = xfs_fsb_to_gno(mp, end_bno, type);
|
||||
while ((xg = xfs_group_next_range(mp, xg, start_gno, end_gno, type))) {
|
||||
|
|
|
|||
|
|
@ -660,10 +660,7 @@ xfs_qm_load_metadir_qinos(
|
|||
struct xfs_trans *tp;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
error = xfs_dqinode_load_parent(tp, &qi->qi_dirip);
|
||||
if (error == -ENOENT) {
|
||||
/* no quota dir directory, but we'll create one later */
|
||||
|
|
@ -1755,10 +1752,7 @@ xfs_qm_qino_load(
|
|||
struct xfs_inode *dp = NULL;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
if (xfs_has_metadir(mp)) {
|
||||
error = xfs_dqinode_load_parent(tp, &dp);
|
||||
if (error)
|
||||
|
|
|
|||
|
|
@ -729,9 +729,7 @@ xfs_rtginode_ensure(
|
|||
if (rtg->rtg_inodes[type])
|
||||
return 0;
|
||||
|
||||
error = xfs_trans_alloc_empty(rtg_mount(rtg), &tp);
|
||||
if (error)
|
||||
return error;
|
||||
tp = xfs_trans_alloc_empty(rtg_mount(rtg));
|
||||
error = xfs_rtginode_load(rtg, type, tp);
|
||||
xfs_trans_cancel(tp);
|
||||
|
||||
|
|
@ -1305,9 +1303,7 @@ xfs_growfs_rt_prep_groups(
|
|||
if (!mp->m_rtdirip) {
|
||||
struct xfs_trans *tp;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
error = xfs_rtginode_load_parent(tp);
|
||||
xfs_trans_cancel(tp);
|
||||
|
||||
|
|
@ -1674,10 +1670,7 @@ xfs_rtmount_inodes(
|
|||
struct xfs_rtgroup *rtg = NULL;
|
||||
int error;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
if (xfs_has_rtgroups(mp) && mp->m_sb.sb_rgcount > 0) {
|
||||
error = xfs_rtginode_load_parent(tp);
|
||||
if (error)
|
||||
|
|
|
|||
|
|
@ -298,13 +298,11 @@ xfs_trans_alloc(
|
|||
* where we can be grabbing buffers at the same time that freeze is trying to
|
||||
* drain the buffer LRU list.
|
||||
*/
|
||||
int
|
||||
struct xfs_trans *
|
||||
xfs_trans_alloc_empty(
|
||||
struct xfs_mount *mp,
|
||||
struct xfs_trans **tpp)
|
||||
struct xfs_mount *mp)
|
||||
{
|
||||
*tpp = __xfs_trans_alloc(mp, XFS_TRANS_NO_WRITECOUNT);
|
||||
return 0;
|
||||
return __xfs_trans_alloc(mp, XFS_TRANS_NO_WRITECOUNT);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -168,8 +168,7 @@ int xfs_trans_alloc(struct xfs_mount *mp, struct xfs_trans_res *resp,
|
|||
struct xfs_trans **tpp);
|
||||
int xfs_trans_reserve_more(struct xfs_trans *tp,
|
||||
unsigned int blocks, unsigned int rtextents);
|
||||
int xfs_trans_alloc_empty(struct xfs_mount *mp,
|
||||
struct xfs_trans **tpp);
|
||||
struct xfs_trans *xfs_trans_alloc_empty(struct xfs_mount *mp);
|
||||
void xfs_trans_mod_sb(xfs_trans_t *, uint, int64_t);
|
||||
|
||||
int xfs_trans_get_buf_map(struct xfs_trans *tp, struct xfs_buftarg *target,
|
||||
|
|
|
|||
|
|
@ -328,10 +328,7 @@ xfs_zone_gc_query(
|
|||
iter->rec_idx = 0;
|
||||
iter->rec_count = 0;
|
||||
|
||||
error = xfs_trans_alloc_empty(mp, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
tp = xfs_trans_alloc_empty(mp);
|
||||
xfs_rtgroup_lock(rtg, XFS_RTGLOCK_RMAP);
|
||||
cur = xfs_rtrmapbt_init_cursor(tp, rtg);
|
||||
error = xfs_rmap_query_range(cur, &ri_low, &ri_high,
|
||||
|
|
|
|||
Loading…
Reference in New Issue