xfs: clean up return handling
cover xfs: clean up return handling
2 patches here:
First of all, "return" is not a function. "return(EIO);" is silly. "return (EIO);" is even sillier. Stop it.
Second of all, XFS_ERROR was designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap.
So nuke that macro, too.
This is a *lot* of churn. It'll make merging across this change hard. So we might want to batch this up with another suggestion of Dave's, to migrate all of xfs to the Linux convention of negative error returns everywhere, so we don't have two nasty points to merge across - that'd be fine with me. But anyway, here it is for now.
For posterity, the first patch was generated with:
perl -p -i -e 's/return \(([a-zA-Z0-9]*?)\)/return $1/g' *.c perl -p -i -e 's/return\(([a-zA-Z0-9]*?)\)/return $1/g' *.c
and the 2nd with:
perl -p -i -e 's/return\(XFS_ERROR\(([a-zA-Z0-9]*?)\)\)/return XFS_ERROR($1)/g' *.c perl -p -i -e 's/return \(XFS_ERROR\(([a-zA-Z0-9]*?)\)\)/return XFS_ERROR($1)/g' *.c
(Yes, I know I could have done it w/ one regexp - so sue me) ;)
-Eric
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
PATCH 1/2 xfs: return is not a function
return is not a function. "return(EIO);" is silly; "return (EIO);" moreso. return is not a function. Nuke the pointless parens.
---
fs/xfs/xfs_attr.c +36 -36
@@ -151,7 +151,7 @@ xfs_attr_get_int(if (error ==EEXIST ) error =0 ; -return (error); +return error; }int
@@ -169,7 +169,7 @@ xfs_attr_get(XFS_STATS_INC (xs_attr_get);if (XFS_FORCED_SHUTDOWN (ip->i_mount)) -return (EIO ); +return EIO ; error =xfs_attr_name_to_xname (&xname, name);if (error)
@@ -178,7 +178,7 @@ xfs_attr_get( lock_mode =xfs_ilock_attr_map_shared (ip); error =xfs_attr_get_int (ip, &xname, value, valuelenp, flags);xfs_iunlock (ip, lock_mode); -return (error); +return error; }/*
@@ -254,7 +254,7 @@ xfs_attr_set_int(XFS_ATTR_SF_ENTSIZE_BYNAME (name->len, valuelen);if ((error =xfs_bmap_add_attrfork (dp, sf_size, rsvd))) -return (error); +return error; }/*
@@ -303,7 +303,7 @@ xfs_attr_set_int( error =xfs_trans_reserve (args.trans, &tres, args.total,0 );if (error) {xfs_trans_cancel (args.trans,0 ); -return (error); +return error; }xfs_ilock (dp,XFS_ILOCK_EXCL );
@@ -313,7 +313,7 @@ xfs_attr_set_int(if (error) {xfs_iunlock (dp,XFS_ILOCK_EXCL );xfs_trans_cancel (args.trans,XFS_TRANS_RELEASE_LOG_RES ); -return (error); +return error; }xfs_trans_ijoin (args.trans, dp,0 );
@@ -426,14 +426,14 @@ xfs_attr_set_int( error =xfs_trans_commit (args.trans,XFS_TRANS_RELEASE_LOG_RES );xfs_iunlock (dp,XFS_ILOCK_EXCL ); -return (error); +return error; out:if (args.trans)xfs_trans_cancel (args.trans,XFS_TRANS_RELEASE_LOG_RES |XFS_TRANS_ABORT );xfs_iunlock (dp,XFS_ILOCK_EXCL ); -return (error); +return error; }int
@@ -450,7 +450,7 @@ xfs_attr_set(XFS_STATS_INC (xs_attr_set);if (XFS_FORCED_SHUTDOWN (dp->i_mount)) -return (EIO ); +return EIO ; error =xfs_attr_name_to_xname (&xname, name);if (error)
@@ -524,7 +524,7 @@ xfs_attr_remove_int(xfs_inode_t *dp, struct xfs_name *name, int flags) XFS_ATTRRM_SPACE_RES(mp), 0);if (error) {xfs_trans_cancel (args.trans,0 ); -return (error); +return error; }xfs_ilock (dp,XFS_ILOCK_EXCL );
@@ -574,14 +574,14 @@ xfs_attr_remove_int(xfs_inode_t *dp, struct xfs_name *name, int flags) error =xfs_trans_commit (args.trans,XFS_TRANS_RELEASE_LOG_RES );xfs_iunlock (dp,XFS_ILOCK_EXCL ); -return (error); +return error; out:if (args.trans)xfs_trans_cancel (args.trans,XFS_TRANS_RELEASE_LOG_RES |XFS_TRANS_ABORT );xfs_iunlock (dp,XFS_ILOCK_EXCL ); -return (error); +return error; }int
@@ -596,7 +596,7 @@ xfs_attr_remove(XFS_STATS_INC (xs_attr_remove);if (XFS_FORCED_SHUTDOWN (dp->i_mount)) -return (EIO ); +return EIO ; error =xfs_attr_name_to_xname (&xname, name);if (error)
@@ -630,27 +630,27 @@ xfs_attr_shortform_addname(xfs_da_args_t *args) retval =xfs_attr_shortform_lookup (args);if ((args->flags &ATTR_REPLACE ) && (retval ==ENOATTR )) { -return (retval); +return retval; }else if (retval ==EEXIST ) {if (args->flags &ATTR_CREATE ) -return (retval); +return retval; retval =xfs_attr_shortform_remove (args);ASSERT (retval ==0 ); }if (args->namelen >=XFS_ATTR_SF_ENTSIZE_MAX || args->valuelen >=XFS_ATTR_SF_ENTSIZE_MAX ) -return (XFS_ERROR (ENOSPC )); +return XFS_ERROR (ENOSPC ); newsize =XFS_ATTR_SF_TOTSIZE (args->dp); newsize +=XFS_ATTR_SF_ENTSIZE_BYNAME (args->namelen, args->valuelen); forkoff =xfs_attr_shortform_bytesfit (args->dp, newsize);if (!forkoff) -return (XFS_ERROR (ENOSPC )); +return XFS_ERROR (ENOSPC );xfs_attr_shortform_add (args, forkoff); -return (0 ); +return 0 ; }
@@ -726,7 +726,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)ASSERT (committed); args->trans =NULL ;xfs_bmap_cancel (args->flist); -return (error); +return error; }/*
@@ -742,13 +742,13 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)*/ error =xfs_trans_roll (&args->trans, dp);if (error) -return (error); +return error;/* * Fob the whole rest of the problem off on the Btree code. */ error =xfs_attr_node_addname (args); -return (error); +return error; }/*
@@ -757,7 +757,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)*/ error =xfs_trans_roll (&args->trans, dp);if (error) -return (error); +return error;/* * If there was an out-of-line value, allocate the blocks we
@@ -768,7 +768,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)if (args->rmtblkno >0 ) { error =xfs_attr_rmtval_set (args);if (error) -return (error); +return error; }/*
@@ -784,7 +784,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)*/ error =xfs_attr3_leaf_flipflags (args);if (error) -return (error); +return error;/* * Dismantle the "old" attribute/value pair by removing
@@ -797,7 +797,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)if (args->rmtblkno) { error =xfs_attr_rmtval_remove (args);if (error) -return (error); +return error; }/*
@@ -827,7 +827,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)ASSERT (committed); args->trans =NULL ;xfs_bmap_cancel (args->flist); -return (error); +return error; }/*
@@ -1107,7 +1107,7 @@ restart:if (args->rmtblkno >0 ) { error =xfs_attr_rmtval_set (args);if (error) -return (error); +return error; }/*
@@ -1136,7 +1136,7 @@ restart:if (args->rmtblkno) { error =xfs_attr_rmtval_remove (args);if (error) -return (error); +return error; }/*
@@ -1211,8 +1211,8 @@ out:if (state)xfs_da_state_free (state);if (error) -return (error); -return (retval); +return error; +return retval; }/*
@@ -1376,7 +1376,7 @@ xfs_attr_node_removename(xfs_da_args_t *args) out:xfs_da_state_free (state); -return (error); +return error; }/*
@@ -1424,7 +1424,7 @@ xfs_attr_fillstate(xfs_da_state_t *state) } } -return (0 ); +return 0 ; }/*
@@ -1455,7 +1455,7 @@ xfs_attr_refillstate(xfs_da_state_t *state) blk->blkno, blk->disk_blkno, &blk->bp, XFS_ATTR_FORK);if (error) -return (error); +return error; }else { blk->bp =NULL ; }
@@ -1474,13 +1474,13 @@ xfs_attr_refillstate(xfs_da_state_t *state) blk->blkno, blk->disk_blkno, &blk->bp, XFS_ATTR_FORK);if (error) -return (error); +return error; }else { blk->bp =NULL ; } } -return (0 ); +return 0 ; }/*
@@ -1536,5 +1536,5 @@ xfs_attr_node_get(xfs_da_args_t *args) }xfs_da_state_free (state); -return (retval); +return retval; }
fs/xfs/xfs_attr_inactive.c +7 -7
@@ -76,7 +76,7 @@ xfs_attr3_leaf_freextent( error =xfs_bmapi_read (dp, (xfs_fileoff_t )tblkno, tblkcnt, &map, &nmap,XFS_BMAPI_ATTRFORK );if (error) { -return (error); +return error; }ASSERT (nmap ==1 );ASSERT (map.br_startblock !=DELAYSTARTBLOCK );
@@ -102,14 +102,14 @@ xfs_attr3_leaf_freextent(*/ error =xfs_trans_roll (trans, dp);if (error) -return (error); +return error; } tblkno += map.br_blockcount; tblkcnt -= map.br_blockcount; } -return (0 ); +return 0 ; }/*
@@ -256,7 +256,7 @@ xfs_attr3_node_inactive( error =xfs_da3_node_read (*trans, dp, child_fsb,-2 , &child_bp,XFS_ATTR_FORK );if (error) -return (error); +return error;if (child_bp) {/* save for re-read later */ child_blkno =XFS_BUF_ADDR (child_bp);
@@ -414,7 +414,7 @@ xfs_attr_inactive(xfs_inode_t *dp) error =xfs_trans_reserve (trans, &M_RES (mp)->tr_attrinval,0 ,0 );if (error) {xfs_trans_cancel (trans,0 ); -return (error); +return error; }xfs_ilock (dp,XFS_ILOCK_EXCL );
@@ -443,10 +443,10 @@ xfs_attr_inactive(xfs_inode_t *dp) error =xfs_trans_commit (trans,XFS_TRANS_RELEASE_LOG_RES );xfs_iunlock (dp,XFS_ILOCK_EXCL ); -return (error); +return error; out:xfs_trans_cancel (trans,XFS_TRANS_RELEASE_LOG_RES |XFS_TRANS_ABORT );xfs_iunlock (dp,XFS_ILOCK_EXCL ); -return (error); +return error; }
fs/xfs/xfs_attr_leaf.c +24 -24
163 lines not on this page · raw message
fs/xfs/xfs_attr_list.c +8 -8
@@ -52,7 +52,7 @@ xfs_attr_shortform_compare(const void *a, const void *b)if (sa->hash < sb->hash) {return (-1 ); }else if (sa->hash > sb->hash) { -return (1 ); +return 1 ; }else {return (sa->entno - sb->entno); }
@@ -86,7 +86,7 @@ xfs_attr_shortform_list(xfs_attr_list_context_t *context) sf = (xfs_attr_shortform_t *)dp->i_afp->if_u1.if_data;ASSERT (sf !=NULL );if (!sf->hdr.count) -return (0 ); +return 0 ; cursor = context->cursor;ASSERT (cursor !=NULL );
@@ -124,7 +124,7 @@ xfs_attr_shortform_list(xfs_attr_list_context_t *context) sfe =XFS_ATTR_SF_NEXTENTRY (sfe); }trace_xfs_attr_list_sf_all (context); -return (0 ); +return 0 ; }/* do no more for a search callback */
@@ -188,7 +188,7 @@ xfs_attr_shortform_list(xfs_attr_list_context_t *context) }if (i == nsbuf) {kmem_free (sbuf); -return (0 ); +return 0 ; }/*
@@ -213,7 +213,7 @@ xfs_attr_shortform_list(xfs_attr_list_context_t *context) }kmem_free (sbuf); -return (0 ); +return 0 ; }STATIC int
@@ -244,7 +244,7 @@ xfs_attr_node_list(xfs_attr_list_context_t *context) error =xfs_da3_node_read (NULL , dp, cursor->blkno,-1 , &bp,XFS_ATTR_FORK );if ((error !=0 ) && (error !=EFSCORRUPTED )) -return (error); +return error;if (bp) {struct xfs_attr_leaf_entry *entries;
@@ -295,7 +295,7 @@ xfs_attr_node_list(xfs_attr_list_context_t *context) cursor->blkno,-1 , &bp, XFS_ATTR_FORK);if (error) -return (error); +return error; node = bp->b_addr; magic =be16_to_cpu (node->hdr.info.magic); if (magic == XFS_ATTR_LEAF_MAGIC ||
@@ -614,7 +614,7 @@ xfs_attr_list(* Validate the cursor. */ if (cursor->pad1 || cursor->pad2) -return (XFS_ERROR (EINVAL )); +return XFS_ERROR (EINVAL );if ((cursor->initted ==0 ) && (cursor->hashval || cursor->blkno || cursor->offset))return XFS_ERROR (EINVAL );
fs/xfs/xfs_attr_remote.c +6 -6
@@ -448,7 +448,7 @@ xfs_attr_rmtval_set(ASSERT (committed); args->trans =NULL ;xfs_bmap_cancel (args->flist); -return (error); +return error; }/*
@@ -469,7 +469,7 @@ xfs_attr_rmtval_set(*/ error =xfs_trans_roll (&args->trans, dp);if (error) -return (error); +return error; }/*
@@ -494,7 +494,7 @@ xfs_attr_rmtval_set( blkcnt, &map, &nmap, XFS_BMAPI_ATTRFORK);if (error) -return (error); +return error;ASSERT (nmap ==1 );ASSERT ((map.br_startblock !=DELAYSTARTBLOCK ) && (map.br_startblock !=HOLESTARTBLOCK ));
@@ -559,7 +559,7 @@ xfs_attr_rmtval_remove( error =xfs_bmapi_read (args->dp, (xfs_fileoff_t )lblkno, blkcnt, &map, &nmap,XFS_BMAPI_ATTRFORK );if (error) -return (error); +return error;ASSERT (nmap ==1 );ASSERT ((map.br_startblock !=DELAYSTARTBLOCK ) && (map.br_startblock !=HOLESTARTBLOCK ));
@@ -618,7 +618,7 @@ xfs_attr_rmtval_remove(*/ error =xfs_trans_roll (&args->trans, args->dp);if (error) -return (error); +return error; } -return (0 ); +return 0 ; }
fs/xfs/xfs_da_btree.c +34 -34
261 lines not on this page · raw message
fs/xfs/xfs_dquot.c +6 -6
@@ -327,7 +327,7 @@ xfs_qm_dqalloc(*/ if (!xfs_this_quota_on (dqp->q_mount, dqp->dq_flags)) {xfs_iunlock (quotip,XFS_ILOCK_EXCL ); -return (ESRCH ); +return ESRCH ; }xfs_trans_ijoin (tp, quotip,XFS_ILOCK_EXCL );
@@ -400,7 +400,7 @@ xfs_qm_dqalloc( error0:xfs_iunlock (quotip,XFS_ILOCK_EXCL ); -return (error); +return error; }STATIC int
@@ -547,7 +547,7 @@ xfs_qm_dqtobp( *O_bpp = bp; *O_ddpp = bp->b_addr + dqp->q_bufoffset; -return (0 ); +return 0 ; }
@@ -715,7 +715,7 @@ xfs_qm_dqget(if ((!XFS_IS_UQUOTA_ON (mp) && type ==XFS_DQ_USER ) || (!XFS_IS_PQUOTA_ON (mp) && type ==XFS_DQ_PROJ ) || (!XFS_IS_GQUOTA_ON (mp) && type ==XFS_DQ_GROUP )) { -return (ESRCH ); +return ESRCH ; }#ifdef DEBUG
@@ -723,7 +723,7 @@ xfs_qm_dqget(if ((xfs_dqerror_target == mp->m_ddev_targp) && (xfs_dqreq_num++ % xfs_dqerror_mod) ==0 ) {xfs_debug (mp,"Returning error in dqget" ); -return (EIO ); +return EIO ; } }
@@ -829,7 +829,7 @@ restart:ASSERT ((ip ==NULL ) ||xfs_isilocked (ip,XFS_ILOCK_EXCL ));trace_xfs_dqget_miss (dqp); *O_dqpp = dqp; -return (0 ); +return 0 ; }
fs/xfs/xfs_inode_fork.c +1 -1
@@ -1693,7 +1693,7 @@ xfs_iext_idx_to_irec( } *idxp = page_idx; *erp_idxp = erp_idx; -return (erp); +return erp; }/*
fs/xfs/xfs_log_recover.c +7 -7
@@ -2944,7 +2944,7 @@ xlog_recover_quotaoff_pass1(if (qoff_f->qf_flags &XFS_GQUOTA_ACCT ) log->l_quotaoffs_flag |=XFS_DQ_GROUP ; -return (0 ); +return 0 ; }/*
@@ -2969,7 +2969,7 @@ xlog_recover_dquot_pass2(* Filesystems are required to send in quota flags at mount time. */ if (mp->m_qflags ==0 ) -return (0 ); +return 0 ; recddq = item->ri_buf[1 ].i_addr;if (recddq ==NULL ) {
@@ -2988,7 +2988,7 @@ xlog_recover_dquot_pass2( type = recddq->d_flags & (XFS_DQ_USER |XFS_DQ_PROJ |XFS_DQ_GROUP );ASSERT (type);if (log->l_quotaoffs_flag & type) -return (0 ); +return 0 ;/* * At this point we know that quota was _not_ turned off.
@@ -3559,7 +3559,7 @@ xlog_recover_process_data(/* check the log format matches our own - else we can't recover */ if (xlog_header_check_recover (log->l_mp, rhead)) -return (XFS_ERROR (EIO )); +return XFS_ERROR (EIO );while ((dp < lp) && num_logops) {ASSERT (dp +sizeof (xlog_op_header_t) <= lp);
@@ -3570,7 +3570,7 @@ xlog_recover_process_data(xfs_warn (log->l_mp,"%s: bad clientid 0x%x" , __func__, ohead->oh_clientid);ASSERT (0 ); -return (XFS_ERROR (EIO )); +return XFS_ERROR (EIO ); } tid =be32_to_cpu (ohead->oh_tid); hash =XLOG_RHASH (tid);
@@ -3584,7 +3584,7 @@ xlog_recover_process_data(xfs_warn (log->l_mp,"%s: bad length 0x%x" , __func__,be32_to_cpu (ohead->oh_len));WARN_ON (1 ); -return (XFS_ERROR (EIO )); +return XFS_ERROR (EIO ); } flags = ohead->oh_flags & ~XLOG_END_TRANS ;if (flags &XLOG_WAS_CONT_TRANS )
@@ -4387,7 +4387,7 @@ xlog_do_recover(* If IO errors happened during recovery, bail out. */ if (XFS_FORCED_SHUTDOWN (log->l_mp)) { -return (EIO ); +return EIO ; }/*
fs/xfs/xfs_qm.c +2 -2
@@ -1634,7 +1634,7 @@ xfs_qm_quotacheck( } }else xfs_notice (mp,"Quotacheck: Done." ); -return (error); +return error; }/*
@@ -2066,7 +2066,7 @@ xfs_qm_vop_chown_reserve( -((xfs_qcnt_t)delblks), 0, blkflags); } -return (0 ); +return 0 ; }int
fs/xfs/xfs_qm_syscalls.c +11 -11
@@ -94,7 +94,7 @@ xfs_qm_scall_quotaoff(/* XXX what to do if error ? Revert back to old vals incore ? */ error =xfs_qm_write_sb_changes (mp,XFS_SB_QFLAGS ); -return (error); +return error; } dqtype =0 ;
@@ -198,7 +198,7 @@ xfs_qm_scall_quotaoff(if (mp->m_qflags ==0 ) {mutex_unlock (&q->qi_quotaofflock);xfs_qm_destroy_quotainfo (mp); -return (0 ); +return 0 ; }/*
@@ -375,7 +375,7 @@ xfs_qm_scall_quotaon( sbflags |=XFS_SB_QFLAGS ;if ((error =xfs_qm_write_sb_changes (mp, sbflags))) -return (error); +return error;/* * If we aren't trying to switch on quota enforcement, we are done. */
@@ -386,7 +386,7 @@ xfs_qm_scall_quotaon( ((mp->m_sb.sb_qflags &XFS_GQUOTA_ACCT ) != (mp->m_qflags &XFS_GQUOTA_ACCT )) || (flags & XFS_ALL_QUOTA_ENFD) == 0) - return (0); + return 0;if (!XFS_IS_QUOTA_RUNNING (mp))return XFS_ERROR (ESRCH );
@@ -398,7 +398,7 @@ xfs_qm_scall_quotaon( mp->m_qflags |= (flags &XFS_ALL_QUOTA_ENFD );mutex_unlock (&mp->m_quotainfo->qi_quotaofflock); -return (0 ); +return 0 ; }
@@ -425,7 +425,7 @@ xfs_qm_scall_getqstat(if (!xfs_sb_version_hasquota (&mp->m_sb)) { out->qs_uquota.qfs_ino =NULLFSINO ; out->qs_gquota.qfs_ino =NULLFSINO ; -return (0 ); +return 0 ; } out->qs_flags = (__uint16_t) xfs_qm_export_flags(mp->m_qflags &
@@ -513,7 +513,7 @@ xfs_qm_scall_getqstatv( out->qs_uquota.qfs_ino =NULLFSINO ; out->qs_gquota.qfs_ino =NULLFSINO ; out->qs_pquota.qfs_ino =NULLFSINO ; -return (0 ); +return 0 ; } out->qs_flags = (__uint16_t) xfs_qm_export_flags(mp->m_qflags &
@@ -757,7 +757,7 @@ xfs_qm_log_quotaoff_end( error =xfs_trans_reserve (tp, &M_RES (mp)->tr_qm_equotaoff,0 ,0 );if (error) {xfs_trans_cancel (tp,0 ); -return (error); +return error; } qoffi = xfs_trans_get_qoff_item(tp, startqoff,
@@ -771,7 +771,7 @@ xfs_qm_log_quotaoff_end(*/ xfs_trans_set_sync (tp); error =xfs_trans_commit (tp,0 ); -return (error); +return error; }
@@ -821,7 +821,7 @@ error0:spin_unlock (&mp->m_sb_lock); } *qoffstartp = qoffi; -return (error); +return error; }
@@ -952,7 +952,7 @@ xfs_qm_export_flags( uflags |=FS_QUOTA_GDQ_ENFD ;if (flags &XFS_PQUOTA_ENFD ) uflags |=FS_QUOTA_PDQ_ENFD ; -return (uflags); +return uflags; }
fs/xfs/xfs_trans.c +2 -2
@@ -190,7 +190,7 @@ xfs_trans_reserve( -((int64_t)blocks), rsvd);if (error !=0 ) {current_restore_flags_nested (&tp->t_pflags,PF_FSTRANS ); -return (XFS_ERROR (ENOSPC )); +return XFS_ERROR (ENOSPC ); } tp->t_blk_res += blocks; }
@@ -1024,7 +1024,7 @@ xfs_trans_roll(*/ error =xfs_trans_commit (trans,0 );if (error) -return (error); +return error; trans = *tpp;
fs/xfs/xfs_trans_buf.c +4 -4
@@ -166,7 +166,7 @@ xfs_trans_get_buf_map(ASSERT (atomic_read (&bip->bli_refcount) >0 ); bip->bli_recur++;trace_xfs_trans_get_buf_recur (bip); -return (bp); +return bp; } bp =xfs_buf_get_map (target, map, nmaps, flags);
@@ -178,7 +178,7 @@ xfs_trans_get_buf_map(_xfs_trans_bjoin (tp, bp,1 );trace_xfs_trans_get_buf (bp->b_fspriv); -return (bp); +return bp; }/*
@@ -218,7 +218,7 @@ xfs_trans_getsb(xfs_trans_t *tp,ASSERT (atomic_read (&bip->bli_refcount) >0 ); bip->bli_recur++;trace_xfs_trans_getsb_recur (bip); -return (bp); +return bp; } bp =xfs_getsb (mp, flags);
@@ -227,7 +227,7 @@ xfs_trans_getsb(xfs_trans_t *tp,_xfs_trans_bjoin (tp, bp,1 );trace_xfs_trans_getsb (bp->b_fspriv); -return (bp); +return bp; }#ifdef DEBUG
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 1/2] xfs: return is not a function
Quoted 5 lines · Eric Sandeen
return is not a function. "return(EIO);" is silly; "return (EIO);" moreso. return is not a function. Nuke the pointless parens.
Signed-off-by Eric Sandeen <[email protected]>
Looks good,
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
PATCH 2/2 xfs: Nuke XFS_ERROR macro
In reply to Eric SandeenXFS_ERROR was designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap, using something like:
probe module("xfs").function("xfs_*").return { if (@defined($return) && $return == VALUE) { ... } }
Just nuke XFS_ERROR and associated bits.
---
fs/xfs/xfs_aops.c +5 -5
@@ -308,14 +308,14 @@ xfs_map_blocks(int nimaps =1 ;if (XFS_FORCED_SHUTDOWN (mp)) -return -XFS_ERROR (EIO ); +return -EIO ;if (type ==XFS_IO_UNWRITTEN ) bmapi_flags |=XFS_BMAPI_IGSTATE ;if (!xfs_ilock_nowait (ip,XFS_ILOCK_SHARED )) {if (nonblocking) -return -XFS_ERROR (EAGAIN ); +return -EAGAIN ;xfs_ilock (ip,XFS_ILOCK_SHARED ); }
@@ -332,14 +332,14 @@ xfs_map_blocks(xfs_iunlock (ip,XFS_ILOCK_SHARED );if (error) -return -XFS_ERROR (error); +return -error;if (type ==XFS_IO_DELALLOC && (!nimaps ||isnullstartblock (imap->br_startblock))) { error =xfs_iomap_write_allocate (ip, offset, imap);if (!error)trace_xfs_map_blocks_alloc (ip, offset, count, type, imap); -return -XFS_ERROR (error); +return -error; }#ifdef DEBUG
@@ -1216,7 +1216,7 @@ __xfs_get_blocks(int new =0 ;if (XFS_FORCED_SHUTDOWN (mp)) -return -XFS_ERROR (EIO ); +return -EIO ; offset = (xfs_off_t )iblock << inode->i_blkbits;ASSERT (bh_result->b_size >= (1 << inode->i_blkbits));
fs/xfs/xfs_attr.c +4 -4
@@ -538,7 +538,7 @@ xfs_attr_remove_int(xfs_inode_t *dp, struct xfs_name *name, int flags)* Decide on what work routines to call based on the inode size. */ if (!xfs_inode_hasattr (dp)) { - error =XFS_ERROR (ENOATTR ); + error =ENOATTR ; goto out; }if (dp->i_d.di_aformat ==XFS_DINODE_FMT_LOCAL ) {
@@ -605,7 +605,7 @@ xfs_attr_remove(xfs_ilock (dp,XFS_ILOCK_SHARED );if (!xfs_inode_hasattr (dp)) {xfs_iunlock (dp,XFS_ILOCK_SHARED ); -return XFS_ERROR (ENOATTR ); +return ENOATTR ; }xfs_iunlock (dp,XFS_ILOCK_SHARED );
@@ -640,14 +640,14 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)if (args->namelen >=XFS_ATTR_SF_ENTSIZE_MAX || args->valuelen >=XFS_ATTR_SF_ENTSIZE_MAX ) -return XFS_ERROR (ENOSPC ); +return ENOSPC ; newsize =XFS_ATTR_SF_TOTSIZE (args->dp); newsize +=XFS_ATTR_SF_ENTSIZE_BYNAME (args->namelen, args->valuelen); forkoff =xfs_attr_shortform_bytesfit (args->dp, newsize);if (!forkoff) -return XFS_ERROR (ENOSPC ); +return ENOSPC ;xfs_attr_shortform_add (args, forkoff);return 0 ;
fs/xfs/xfs_attr_inactive.c +3 -3
@@ -227,7 +227,7 @@ xfs_attr3_node_inactive(*/ if (level >XFS_DA_NODE_MAXDEPTH ) {xfs_trans_brelse (*trans, bp);/* no locks for later trans */ -return XFS_ERROR (EIO ); +return EIO ; } node = bp->b_addr;
@@ -277,7 +277,7 @@ xfs_attr3_node_inactive( child_bp);break ;default : - error =XFS_ERROR (EIO ); + error =EIO ;xfs_trans_brelse (*trans, child_bp);break ; }
@@ -360,7 +360,7 @@ xfs_attr3_root_inactive( error =xfs_attr3_leaf_inactive (trans, dp, bp);break ;default : - error =XFS_ERROR (EIO ); + error =EIO ;xfs_trans_brelse (*trans, bp);break ; }
fs/xfs/xfs_attr_leaf.c +14 -14
@@ -546,7 +546,7 @@ xfs_attr_shortform_remove(xfs_da_args_t *args)break ; }if (i == end) -return XFS_ERROR (ENOATTR ); +return ENOATTR ;/* * Fix up the attribute fork data, covering the hole
@@ -610,9 +610,9 @@ xfs_attr_shortform_lookup(xfs_da_args_t *args)continue ;if (!xfs_attr_namesp_match (args->flags, sfe->flags))continue ; -return XFS_ERROR (EEXIST ); +return EEXIST ; } -return XFS_ERROR (ENOATTR ); +return ENOATTR ; }/*
@@ -639,18 +639,18 @@ xfs_attr_shortform_getvalue(xfs_da_args_t *args)continue ;if (args->flags &ATTR_KERNOVAL ) { args->valuelen = sfe->valuelen; -return XFS_ERROR (EEXIST ); +return EEXIST ; }if (args->valuelen < sfe->valuelen) { args->valuelen = sfe->valuelen; -return XFS_ERROR (ERANGE ); +return ERANGE ; } args->valuelen = sfe->valuelen;memcpy (args->value, &sfe->nameval[args->namelen], args->valuelen); -return XFS_ERROR (EEXIST ); +return EEXIST ; } -return XFS_ERROR (ENOATTR ); +return ENOATTR ; }/*
@@ -1106,7 +1106,7 @@ xfs_attr3_leaf_add(* no good and we should just give up. */ if (!ichdr.holes && sum < entsize) -return XFS_ERROR (ENOSPC ); +return ENOSPC ;/* * Compact the entries to coalesce free space.
@@ -2127,7 +2127,7 @@ xfs_attr3_leaf_lookup_int( }if (probe == ichdr.count ||be32_to_cpu (entry->hashval) != hashval) { args->index = probe; -return XFS_ERROR (ENOATTR ); +return ENOATTR ; }/*
@@ -2156,7 +2156,7 @@ xfs_attr3_leaf_lookup_int(if (!xfs_attr_namesp_match (args->flags, entry->flags))continue ; args->index = probe; -return XFS_ERROR (EEXIST ); +return EEXIST ; }else { name_rmt =xfs_attr3_leaf_name_remote (leaf, probe);if (name_rmt->namelen != args->namelen)
@@ -2172,11 +2172,11 @@ xfs_attr3_leaf_lookup_int( args->rmtblkcnt =xfs_attr3_rmt_blocks ( args->dp->i_mount, args->valuelen); -return XFS_ERROR (EEXIST ); +return EEXIST ; } } args->index = probe; -return XFS_ERROR (ENOATTR ); +return ENOATTR ; }/*
@@ -2212,7 +2212,7 @@ xfs_attr3_leaf_getvalue( }if (args->valuelen < valuelen) { args->valuelen = valuelen; -return XFS_ERROR (ERANGE ); +return ERANGE ; } args->valuelen = valuelen;memcpy (args->value, &name_loc->nameval[args->namelen], valuelen);
@@ -2230,7 +2230,7 @@ xfs_attr3_leaf_getvalue( }if (args->valuelen < valuelen) { args->valuelen = valuelen; -return XFS_ERROR (ERANGE ); +return ERANGE ; } args->valuelen = valuelen; }
fs/xfs/xfs_attr_list.c +7 -7
@@ -150,7 +150,7 @@ xfs_attr_shortform_list(xfs_attr_list_context_t *context)XFS_ERRLEVEL_LOW , context->dp->i_mount, sfe);kmem_free (sbuf); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } sbp->entno = i;
@@ -308,7 +308,7 @@ xfs_attr_node_list(xfs_attr_list_context_t *context) context->dp->i_mount, node);xfs_trans_brelse (NULL , bp); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } dp->d_ops->node_hdr_from_disk (&nodehdr, node);
@@ -494,11 +494,11 @@ xfs_attr_leaf_list(xfs_attr_list_context_t *context) context->cursor->blkno =0 ; error =xfs_attr3_leaf_read (NULL , context->dp,0 ,-1 , &bp);if (error) -return XFS_ERROR (error); +return error; error =xfs_attr3_leaf_list_int (bp, context);xfs_trans_brelse (NULL , bp); -return XFS_ERROR (error); +return error; }int
@@ -614,16 +614,16 @@ xfs_attr_list(* Validate the cursor. */ if (cursor->pad1 || cursor->pad2) -return XFS_ERROR (EINVAL ); +return EINVAL ;if ((cursor->initted ==0 ) && (cursor->hashval || cursor->blkno || cursor->offset)) -return XFS_ERROR (EINVAL ); +return EINVAL ;/* * Check for a properly aligned buffer. */ if (((long )buffer) & (sizeof (int )-1 )) -return XFS_ERROR (EFAULT ); +return EFAULT ;if (flags &ATTR_KERNOVAL ) bufsize =0 ;
fs/xfs/xfs_bmap.c +21 -21
153 lines not on this page · raw message
fs/xfs/xfs_bmap_btree.c +1 -1
@@ -555,7 +555,7 @@ xfs_bmbt_alloc_block( args.minlen = args.maxlen = args.prod =1 ; args.wasdel = cur->bc_private.b.flags &XFS_BTCUR_BPRV_WASDEL ;if (!args.wasdel &&xfs_trans_get_block_res (args.tp) ==0 ) { - error =XFS_ERROR (ENOSPC ); + error =ENOSPC ; goto error0; } error =xfs_alloc_vextent (&args);
fs/xfs/xfs_bmap_util.c +22 -22
166 lines not on this page · raw message
fs/xfs/xfs_btree.c +2 -2
@@ -90,7 +90,7 @@ xfs_btree_check_lblock(if (bp)trace_xfs_btree_corrupt (bp, _RET_IP_);XFS_ERROR_REPORT (__func__,XFS_ERRLEVEL_LOW , mp); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }return 0 ; }
@@ -138,7 +138,7 @@ xfs_btree_check_sblock(if (bp)trace_xfs_btree_corrupt (bp, _RET_IP_);XFS_ERROR_REPORT (__func__,XFS_ERRLEVEL_LOW , mp); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }return 0 ; }
fs/xfs/xfs_da_btree.c +14 -14
@@ -1578,7 +1578,7 @@ xfs_da3_node_lookup_int( args->blkno = blk->blkno; }else {ASSERT (0 ); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }if (((retval ==ENOENT ) || (retval ==ENOATTR )) && (blk->hashval == args->hashval)) {
@@ -1590,7 +1590,7 @@ xfs_da3_node_lookup_int(continue ; }else if (blk->magic ==XFS_ATTR_LEAF_MAGIC ) {/* path_shift() gives ENOENT */ - retval =XFS_ERROR (ENOATTR ); + retval =ENOATTR ; } }break ;
@@ -1858,7 +1858,7 @@ xfs_da3_path_shift( } }if (level <0 ) { - *result =XFS_ERROR (ENOENT );/* we're out of our tree */ + *result =ENOENT ;/* we're out of our tree */ ASSERT (args->op_flags &XFS_DA_OP_OKNOENT );return 0 ; }
@@ -2067,7 +2067,7 @@ xfs_da_grow_inode_int(if (got != count || mapp[0 ].br_startoff != *bno || mapp[mapi -1 ].br_startoff + mapp[mapi -1 ].br_blockcount != *bno + count) { - error =XFS_ERROR (ENOSPC ); + error =ENOSPC ; goto out_free_map; }
@@ -2165,7 +2165,7 @@ xfs_da3_swap_lastblock(if (unlikely (lastoff ==0 )) {XFS_ERROR_REPORT ("xfs_da_swap_lastblock(1)" ,XFS_ERRLEVEL_LOW , mp); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }/* * Read the last block in the btree space.
@@ -2216,7 +2216,7 @@ xfs_da3_swap_lastblock( sib_info->magic != dead_info->magic)) {XFS_ERROR_REPORT ("xfs_da_swap_lastblock(2)" ,XFS_ERRLEVEL_LOW , mp); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; goto done; } sib_info->forw =cpu_to_be32 (dead_blkno);
@@ -2238,7 +2238,7 @@ xfs_da3_swap_lastblock( sib_info->magic != dead_info->magic)) {XFS_ERROR_REPORT ("xfs_da_swap_lastblock(3)" ,XFS_ERRLEVEL_LOW , mp); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; goto done; } sib_info->back =cpu_to_be32 (dead_blkno);
@@ -2261,7 +2261,7 @@ xfs_da3_swap_lastblock(if (level >=0 && level != par_hdr.level +1 ) {XFS_ERROR_REPORT ("xfs_da_swap_lastblock(4)" ,XFS_ERRLEVEL_LOW , mp); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; goto done; } level = par_hdr.level;
@@ -2274,7 +2274,7 @@ xfs_da3_swap_lastblock(if (entno == par_hdr.count) {XFS_ERROR_REPORT ("xfs_da_swap_lastblock(5)" ,XFS_ERRLEVEL_LOW , mp); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; goto done; } par_blkno =be32_to_cpu (btree[entno].before);
@@ -2301,7 +2301,7 @@ xfs_da3_swap_lastblock(if (unlikely (par_blkno ==0 )) {XFS_ERROR_REPORT ("xfs_da_swap_lastblock(6)" ,XFS_ERRLEVEL_LOW , mp); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; goto done; } error =xfs_da3_node_read (tp, dp, par_blkno,-1 , &par_buf, w);
@@ -2312,7 +2312,7 @@ xfs_da3_swap_lastblock(if (par_hdr.level != level) {XFS_ERROR_REPORT ("xfs_da_swap_lastblock(7)" ,XFS_ERRLEVEL_LOW , mp); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; goto done; } btree = dp->d_ops->node_tree_p (par_node);
@@ -2508,7 +2508,7 @@ xfs_dabuf_map( }if (!xfs_da_map_covers_blocks (nirecs, irecs, bno, nfsb)) { - error = mappedbno ==-2 ?-1 :XFS_ERROR (EFSCORRUPTED ); + error = mappedbno ==-2 ?-1 :EFSCORRUPTED ;if (unlikely (error ==EFSCORRUPTED )) {if (xfs_error_level >=XFS_ERRLEVEL_LOW ) {int i;
@@ -2569,7 +2569,7 @@ xfs_da_get_buf( bp =xfs_trans_get_buf_map (trans, dp->i_mount->m_ddev_targp, mapp, nmap,0 ); - error = bp ? bp->b_error :XFS_ERROR (EIO ); + error = bp ? bp->b_error :EIO ;if (error) {xfs_trans_brelse (trans, bp); goto out_free;
@@ -2661,7 +2661,7 @@ xfs_da_read_buf(trace_xfs_da_btree_corrupt (bp, _RET_IP_);XFS_CORRUPTION_ERROR ("xfs_da_do_buf(2)" ,XFS_ERRLEVEL_LOW , mp, info); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ;xfs_trans_brelse (trans, bp); goto out_free; }
fs/xfs/xfs_dir2.c +1 -1
@@ -166,7 +166,7 @@ xfs_dir_ino_validate(xfs_warn (mp,"Invalid inode number 0x%Lx" , (unsigned long long ) ino);XFS_ERROR_REPORT ("xfs_dir_ino_validate" ,XFS_ERRLEVEL_LOW , mp); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }return 0 ; }
fs/xfs/xfs_dir2_block.c +6 -6
@@ -394,7 +394,7 @@ xfs_dir2_block_addname(if (args->op_flags &XFS_DA_OP_JUSTCHECK ) {xfs_trans_brelse (tp, bp);if (!dup) -return XFS_ERROR (ENOSPC ); +return ENOSPC ;return 0 ; }
@@ -404,7 +404,7 @@ xfs_dir2_block_addname(if (!dup) {/* Don't have a space reservation: return no-space. */ if (args->total ==0 ) -return XFS_ERROR (ENOSPC ); +return ENOSPC ;/* * Convert to the next larger format. * Then add the new entry in that format.
@@ -648,7 +648,7 @@ xfs_dir2_block_lookup( args->filetype = dp->d_ops->data_get_ftype (dep); error =xfs_dir_cilookup_result (args, dep->name, dep->namelen);xfs_trans_brelse (args->trans, bp); -return XFS_ERROR (error); +return error; }/*
@@ -704,7 +704,7 @@ xfs_dir2_block_lookup_int(if (low > high) {ASSERT (args->op_flags &XFS_DA_OP_OKNOENT );xfs_trans_brelse (tp, bp); -return XFS_ERROR (ENOENT ); +return ENOENT ; } }/*
@@ -752,7 +752,7 @@ xfs_dir2_block_lookup_int(* No match, release the buffer and return ENOENT. */ xfs_trans_brelse (tp, bp); -return XFS_ERROR (ENOENT ); +return ENOENT ; }/*
@@ -1090,7 +1090,7 @@ xfs_dir2_sf_to_block(*/ if (dp->i_d.di_size < offsetof(xfs_dir2_sf_hdr_t , parent)) {ASSERT (XFS_FORCED_SHUTDOWN (mp)); -return XFS_ERROR (EIO ); +return EIO ; } oldsfp = (xfs_dir2_sf_hdr_t *)ifp->if_u1.if_data;
fs/xfs/xfs_dir2_leaf.c +5 -5
@@ -729,7 +729,7 @@ xfs_dir2_leaf_addname(if ((args->op_flags &XFS_DA_OP_JUSTCHECK ) || args->total ==0 ) {xfs_trans_brelse (tp, lbp); -return XFS_ERROR (ENOSPC ); +return ENOSPC ; }/* * Convert to node form.
@@ -753,7 +753,7 @@ xfs_dir2_leaf_addname(*/ if (args->op_flags &XFS_DA_OP_JUSTCHECK ) {xfs_trans_brelse (tp, lbp); -return use_block ==-1 ?XFS_ERROR (ENOSPC ) :0 ; +return use_block ==-1 ?ENOSPC :0 ; }/* * If no allocations are allowed, return now before we've
@@ -761,7 +761,7 @@ xfs_dir2_leaf_addname(*/ if (args->total ==0 && use_block ==-1 ) {xfs_trans_brelse (tp, lbp); -return XFS_ERROR (ENOSPC ); +return ENOSPC ; }/* * Need to compact the leaf entries, removing stale ones.
@@ -1194,7 +1194,7 @@ xfs_dir2_leaf_lookup( error =xfs_dir_cilookup_result (args, dep->name, dep->namelen);xfs_trans_brelse (tp, dbp);xfs_trans_brelse (tp, lbp); -return XFS_ERROR (error); +return error; }/*
@@ -1327,7 +1327,7 @@ xfs_dir2_leaf_lookup_int(if (dbp)xfs_trans_brelse (tp, dbp);xfs_trans_brelse (tp, lbp); -return XFS_ERROR (ENOENT ); +return ENOENT ; }/*
fs/xfs/xfs_dir2_node.c +8 -8
@@ -406,7 +406,7 @@ xfs_dir2_leafn_add(* into other peoples memory */ if (index <0 ) -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ;/* * If there are already the maximum number of leaf entries in
@@ -417,7 +417,7 @@ xfs_dir2_leafn_add(if (leafhdr.count == dp->d_ops->leaf_max_ents (mp)) {if (!leafhdr.stale) -return XFS_ERROR (ENOSPC ); +return ENOSPC ; compact = leafhdr.stale >1 ; }else compact =0 ;
@@ -626,7 +626,7 @@ xfs_dir2_leafn_lookup_for_addname( XFS_ERRLEVEL_LOW, mp);if (curfdb != newfdb)xfs_trans_brelse (tp, curbp); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } curfdb = newfdb;if (be16_to_cpu (bests[fi]) >= length)
@@ -657,7 +657,7 @@ out:* Return the index, that will be the insertion point. */ *indexp = index; -return XFS_ERROR (ENOENT ); +return ENOENT ; }/*
@@ -783,7 +783,7 @@ xfs_dir2_leafn_lookup_for_entry( curbp->b_ops = &xfs_dir3_data_buf_ops;xfs_trans_buf_set_type (tp, curbp,XFS_BLFT_DIR_DATA_BUF );if (cmp ==XFS_CMP_EXACT ) -return XFS_ERROR (EEXIST ); +return EEXIST ; } }ASSERT (index == leafhdr.count || (args->op_flags &XFS_DA_OP_OKNOENT ));
@@ -806,7 +806,7 @@ xfs_dir2_leafn_lookup_for_entry( state->extravalid =0 ; } *indexp = index; -return XFS_ERROR (ENOENT ); +return ENOENT ; }/*
@@ -1811,7 +1811,7 @@ xfs_dir2_node_addname_int(* Not allowed to allocate, return failure. */ if ((args->op_flags &XFS_DA_OP_JUSTCHECK ) || args->total ==0 ) -return XFS_ERROR (ENOSPC ); +return ENOSPC ;/* * Allocate and initialize the new data block.
@@ -1871,7 +1871,7 @@ xfs_dir2_node_addname_int( }XFS_ERROR_REPORT ("xfs_dir2_node_addname_int" ,XFS_ERRLEVEL_LOW , mp); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }/*
fs/xfs/xfs_dir2_readdir.c +2 -2
@@ -96,7 +96,7 @@ xfs_dir2_sf_getdents(*/ if (dp->i_d.di_size < offsetof(xfs_dir2_sf_hdr_t , parent)) {ASSERT (XFS_FORCED_SHUTDOWN (mp)); -return XFS_ERROR (EIO ); +return EIO ; }ASSERT (dp->i_df.if_bytes == dp->i_d.di_size);
@@ -679,7 +679,7 @@ xfs_readdir(trace_xfs_readdir (dp);if (XFS_FORCED_SHUTDOWN (dp->i_mount)) -return XFS_ERROR (EIO ); +return EIO ;ASSERT (S_ISDIR (dp->i_d.di_mode));XFS_STATS_INC (xs_dir_getdents);
fs/xfs/xfs_dir2_sf.c +12 -12
@@ -307,7 +307,7 @@ xfs_dir2_sf_addname(*/ if (dp->i_d.di_size < offsetof(xfs_dir2_sf_hdr_t , parent)) {ASSERT (XFS_FORCED_SHUTDOWN (dp->i_mount)); -return XFS_ERROR (EIO ); +return EIO ; }ASSERT (dp->i_df.if_bytes == dp->i_d.di_size);ASSERT (dp->i_df.if_u1.if_data !=NULL );
@@ -350,7 +350,7 @@ xfs_dir2_sf_addname(* Just checking or no space reservation, it doesn't fit. */ if ((args->op_flags &XFS_DA_OP_JUSTCHECK ) || args->total ==0 ) -return XFS_ERROR (ENOSPC ); +return ENOSPC ;/* * Convert to block form then add the name. */
@@ -743,7 +743,7 @@ xfs_dir2_sf_lookup(*/ if (dp->i_d.di_size < offsetof(xfs_dir2_sf_hdr_t , parent)) {ASSERT (XFS_FORCED_SHUTDOWN (dp->i_mount)); -return XFS_ERROR (EIO ); +return EIO ; }ASSERT (dp->i_df.if_bytes == dp->i_d.di_size);ASSERT (dp->i_df.if_u1.if_data !=NULL );
@@ -756,7 +756,7 @@ xfs_dir2_sf_lookup( args->inumber = dp->i_ino; args->cmpresult =XFS_CMP_EXACT ; args->filetype =XFS_DIR3_FT_DIR ; -return XFS_ERROR (EEXIST ); +return EEXIST ; }/* * Special case for ..
@@ -766,7 +766,7 @@ xfs_dir2_sf_lookup( args->inumber = dp->d_ops->sf_get_parent_ino (sfp); args->cmpresult =XFS_CMP_EXACT ; args->filetype =XFS_DIR3_FT_DIR ; -return XFS_ERROR (EEXIST ); +return EEXIST ; }/* * Loop over all the entries trying to match ours.
@@ -786,7 +786,7 @@ xfs_dir2_sf_lookup( args->inumber = dp->d_ops->sf_get_ino (sfp, sfep); args->filetype = dp->d_ops->sf_get_ftype (sfep);if (cmp ==XFS_CMP_EXACT ) -return XFS_ERROR (EEXIST ); +return EEXIST ; ci_sfep = sfep; } }
@@ -796,10 +796,10 @@ xfs_dir2_sf_lookup(* If a case-insensitive match was not found, return ENOENT. */ if (!ci_sfep) -return XFS_ERROR (ENOENT ); +return ENOENT ;/* otherwise process the CI match as required by the caller */ error =xfs_dir_cilookup_result (args, ci_sfep->name, ci_sfep->namelen); -return XFS_ERROR (error); +return error; }/*
@@ -829,7 +829,7 @@ xfs_dir2_sf_removename(*/ if (oldsize < offsetof(xfs_dir2_sf_hdr_t , parent)) {ASSERT (XFS_FORCED_SHUTDOWN (dp->i_mount)); -return XFS_ERROR (EIO ); +return EIO ; }ASSERT (dp->i_df.if_bytes == oldsize);ASSERT (dp->i_df.if_u1.if_data !=NULL );
@@ -852,7 +852,7 @@ xfs_dir2_sf_removename(* Didn't find it. */ if (i == sfp->count) -return XFS_ERROR (ENOENT ); +return ENOENT ;/* * Calculate sizes. */
@@ -919,7 +919,7 @@ xfs_dir2_sf_replace(*/ if (dp->i_d.di_size < offsetof(xfs_dir2_sf_hdr_t , parent)) {ASSERT (XFS_FORCED_SHUTDOWN (dp->i_mount)); -return XFS_ERROR (EIO ); +return EIO ; }ASSERT (dp->i_df.if_bytes == dp->i_d.di_size);ASSERT (dp->i_df.if_u1.if_data !=NULL );
@@ -995,7 +995,7 @@ xfs_dir2_sf_replace(if (i8elevated)xfs_dir2_sf_toino4 (args);#endif -return XFS_ERROR (ENOENT ); +return ENOENT ; } }#if XFS_BIG_INUMS
fs/xfs/xfs_discard.c +5 -5
@@ -166,11 +166,11 @@ xfs_ioc_trim(int error, last_error =0 ;if (!capable (CAP_SYS_ADMIN )) -return -XFS_ERROR (EPERM ); +return -EPERM ;if (!blk_queue_discard (q)) -return -XFS_ERROR (EOPNOTSUPP ); +return -EOPNOTSUPP ;if (copy_from_user (&range, urange,sizeof (range))) -return -XFS_ERROR (EFAULT ); +return -EFAULT ;/* * Truncating down the len isn't actually quite correct, but using
@@ -182,7 +182,7 @@ xfs_ioc_trim(if (range.start >=XFS_FSB_TO_B (mp, mp->m_sb.sb_dblocks) || range.minlen >XFS_FSB_TO_B (mp,XFS_ALLOC_AG_MAX_USABLE (mp)) || range.len < mp->m_sb.sb_blocksize) -return -XFS_ERROR (EINVAL ); +return -EINVAL ; start =BTOBB (range.start); end = start +BTOBBT (range.len) -1 ;
@@ -206,7 +206,7 @@ xfs_ioc_trim( range.len =XFS_FSB_TO_B (mp, blocks_trimmed);if (copy_to_user (urange, &range,sizeof (range))) -return -XFS_ERROR (EFAULT ); +return -EFAULT ;return 0 ; }
fs/xfs/xfs_dquot.c +7 -7
@@ -426,7 +426,7 @@ xfs_qm_dqrepair(if (error) {ASSERT (*bpp ==NULL ); -return XFS_ERROR (error); +return error; } (*bpp)->b_ops = &xfs_dquot_buf_ops;
@@ -442,7 +442,7 @@ xfs_qm_dqrepair(if (error) {/* repair failed, we're screwed */ xfs_trans_brelse (tp, *bpp); -return XFS_ERROR (EIO ); +return EIO ; } }
@@ -539,7 +539,7 @@ xfs_qm_dqtobp(if (error) {ASSERT (bp ==NULL ); -return XFS_ERROR (error); +return error; } }
@@ -796,7 +796,7 @@ restart: }else {/* inode stays locked on return */ xfs_qm_dqdestroy (dqp); -return XFS_ERROR (ESRCH ); +return ESRCH ; } }
@@ -1003,7 +1003,7 @@ xfs_qm_dqflush( SHUTDOWN_CORRUPT_INCORE); else spin_unlock(&mp->m_ail->xa_lock); - error =XFS_ERROR (EIO ); + error =EIO ; goto out_unlock; }
@@ -1029,7 +1029,7 @@ xfs_qm_dqflush(xfs_buf_relse (bp);xfs_dqfunlock (dqp);xfs_force_shutdown (mp,SHUTDOWN_CORRUPT_INCORE ); -return XFS_ERROR (EIO ); +return EIO ; }/* This is the only portion of data that needs to persist */
@@ -1082,7 +1082,7 @@ xfs_qm_dqflush( out_unlock:xfs_dqfunlock (dqp); -return XFS_ERROR (EIO ); +return EIO ; }/*
fs/xfs/xfs_error.c +0 -23
@@ -27,29 +27,6 @@#ifdef DEBUG -int xfs_etrap[XFS_ERROR_NTRAP ] = { -0 , -}; - -int -xfs_error_trap (int e) -{ -int i; - -if (!e) -return 0 ; -for (i =0 ; i <XFS_ERROR_NTRAP ; i++) { -if (xfs_etrap[i] ==0 ) -break ; -if (e != xfs_etrap[i]) -continue ; -xfs_notice (NULL ,"%s: error %d" , __func__, e); -BUG (); -break ; - } -return e; -} -int xfs_etest[XFS_NUM_INJECT_ERROR ];int64_t xfs_etest_fsid[XFS_NUM_INJECT_ERROR ];char * xfs_etest_fsname[XFS_NUM_INJECT_ERROR ];
fs/xfs/xfs_error.h +2 -11
@@ -18,15 +18,6 @@#ifndef __XFS_ERROR_H__#define __XFS_ERROR_H__ -#ifdef DEBUG -#define XFS_ERROR_NTRAP 10 -extern int xfs_etrap[XFS_ERROR_NTRAP ]; -extern int xfs_error_trap (int ); -#define XFS_ERROR (e) xfs_error_trap(e) -#else -#define XFS_ERROR (e) (e) -#endif -struct xfs_mount ; extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp,
@@ -56,7 +47,7 @@ extern void xfs_verifier_error(struct xfs_buf *bp);if (unlikely (!fs_is_ok)) { \XFS_ERROR_REPORT ("XFS_WANT_CORRUPTED_GOTO" , \XFS_ERRLEVEL_LOW ,NULL ); \ - error =XFS_ERROR (EFSCORRUPTED ); \ + error =EFSCORRUPTED ; \ goto l; \ } \ }
@@ -68,7 +59,7 @@ extern void xfs_verifier_error(struct xfs_buf *bp);if (unlikely (!fs_is_ok)) { \XFS_ERROR_REPORT ("XFS_WANT_CORRUPTED_RETURN" , \XFS_ERRLEVEL_LOW ,NULL ); \ -return XFS_ERROR (EFSCORRUPTED ); \ +return EFSCORRUPTED ; \ } \ }
fs/xfs/xfs_file.c +4 -4
@@ -179,7 +179,7 @@ xfs_file_fsync(return error;if (XFS_FORCED_SHUTDOWN (mp)) -return -XFS_ERROR (EIO ); +return -EIO ;xfs_iflags_clear (ip,XFS_ITRUNCATED );
@@ -265,7 +265,7 @@ xfs_file_aio_read(if ((pos | size) & target->bt_logical_sectormask) {if (pos ==i_size_read (inode))return 0 ; -return -XFS_ERROR (EINVAL ); +return -EINVAL ; } }
@@ -644,7 +644,7 @@ xfs_file_dio_aio_write(/* DIO must be aligned to device logical sector size */ if ((pos | count) & target->bt_logical_sectormask) -return -XFS_ERROR (EINVAL ); +return -EINVAL ;/* "unaligned" here means not aligned to a filesystem block */ if ((pos & mp->m_blockmask) || ((pos + count) & mp->m_blockmask))
@@ -1339,7 +1339,7 @@ xfs_seek_hole(int error;if (XFS_FORCED_SHUTDOWN (mp)) -return -XFS_ERROR (EIO ); +return -EIO ; lock =xfs_ilock_data_map_shared (ip);
fs/xfs/xfs_fsops.c +10 -10
@@ -169,7 +169,7 @@ xfs_growfs_data_private( nb = in->newblocks; pct = in->imaxpct;if (nb < mp->m_sb.sb_dblocks || pct <0 || pct >100 ) -return XFS_ERROR (EINVAL ); +return EINVAL ;if ((error =xfs_sb_validate_fsb_count (&mp->m_sb, nb)))return error; dpct = pct - mp->m_sb.sb_imax_pct;
@@ -192,7 +192,7 @@ xfs_growfs_data_private( nagcount--; nb = (xfs_rfsblock_t )nagcount * mp->m_sb.sb_agblocks;if (nb < mp->m_sb.sb_dblocks) -return XFS_ERROR (EINVAL ); +return EINVAL ; } new = nb - mp->m_sb.sb_dblocks; oagcount = mp->m_sb.sb_agcount;
@@ -545,17 +545,17 @@ xfs_growfs_log_private( nb = in->newblocks;if (nb <XFS_MIN_LOG_BLOCKS || nb <XFS_B_TO_FSB (mp,XFS_MIN_LOG_BYTES )) -return XFS_ERROR (EINVAL ); +return EINVAL ;if (nb == mp->m_sb.sb_logblocks && in->isint == (mp->m_sb.sb_logstart !=0 )) -return XFS_ERROR (EINVAL ); +return EINVAL ;/* * Moving the log is hard, need new interfaces to sync * the log first, hold off all activity while moving it. * Can have shorter or longer log in the same space, * or transform internal to external log or vice versa. */ -return XFS_ERROR (ENOSYS ); +return ENOSYS ; }/*
@@ -573,9 +573,9 @@ xfs_growfs_data(int error;if (!capable (CAP_SYS_ADMIN )) -return XFS_ERROR (EPERM ); +return EPERM ;if (!mutex_trylock (&mp->m_growlock)) -return XFS_ERROR (EWOULDBLOCK ); +return EWOULDBLOCK ; error =xfs_growfs_data_private (mp, in);mutex_unlock (&mp->m_growlock);return error;
@@ -589,9 +589,9 @@ xfs_growfs_log(int error;if (!capable (CAP_SYS_ADMIN )) -return XFS_ERROR (EPERM ); +return EPERM ;if (!mutex_trylock (&mp->m_growlock)) -return XFS_ERROR (EWOULDBLOCK ); +return EWOULDBLOCK ; error =xfs_growfs_log_private (mp, in);mutex_unlock (&mp->m_growlock);return error;
@@ -787,7 +787,7 @@ xfs_fs_goingdown( SHUTDOWN_FORCE_UMOUNT | SHUTDOWN_LOG_IO_ERROR);break ;default : -return XFS_ERROR (EINVAL ); +return EINVAL ; }return 0 ;
fs/xfs/xfs_ialloc.c +8 -8
@@ -325,7 +325,7 @@ xfs_ialloc_ag_alloc( newlen = args.mp->m_ialloc_inos;if (args.mp->m_maxicount && args.mp->m_sb.sb_icount + newlen > args.mp->m_maxicount) -return XFS_ERROR (ENOSPC ); +return ENOSPC ; args.minlen = args.maxlen = args.mp->m_ialloc_blks;/* * First try to allocate inodes contiguous with the last-allocated
@@ -1095,7 +1095,7 @@ out_alloc:return xfs_dialloc_ag (tp, agbp, parent, inop); out_error:xfs_perag_put (pag); -return XFS_ERROR (error); +return error; }/*
@@ -1137,7 +1137,7 @@ xfs_difree(xfs_warn (mp,"%s: agno >= mp->m_sb.sb_agcount (%d >= %d)." , __func__, agno, mp->m_sb.sb_agcount);ASSERT (0 ); -return XFS_ERROR (EINVAL ); +return EINVAL ; } agino =XFS_INO_TO_AGINO (mp, inode);if (inode !=XFS_AGINO_TO_INO (mp, agno, agino)) {
@@ -1145,14 +1145,14 @@ xfs_difree( __func__, (unsigned long long )inode, (unsigned long long)XFS_AGINO_TO_INO(mp, agno, agino));ASSERT (0 ); -return XFS_ERROR (EINVAL ); +return EINVAL ; } agbno =XFS_AGINO_TO_AGBNO (mp, agino);if (agbno >= mp->m_sb.sb_agblocks) {xfs_warn (mp,"%s: agbno >= mp->m_sb.sb_agblocks (%d >= %d)." , __func__, agbno, mp->m_sb.sb_agblocks);ASSERT (0 ); -return XFS_ERROR (EINVAL ); +return EINVAL ; }/* * Get the allocation group header.
@@ -1366,7 +1366,7 @@ xfs_imap(* as they can be invalid without implying corruption. */ if (flags &XFS_IGET_UNTRUSTED ) -return XFS_ERROR (EINVAL ); +return EINVAL ;if (agno >= mp->m_sb.sb_agcount) { xfs_alert(mp, "%s: agno (%d) >= mp->m_sb.sb_agcount (%d)",
@@ -1386,7 +1386,7 @@ xfs_imap( }xfs_stack_trace ();#endif /* DEBUG */ -return XFS_ERROR (EINVAL ); +return EINVAL ; } blks_per_cluster =xfs_icluster_size_fsb (mp);
@@ -1459,7 +1459,7 @@ out_map: __func__, (unsigned long long ) imap->im_blkno, (unsigned long long ) imap->im_len, XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); -return XFS_ERROR (EINVAL ); +return EINVAL ; }return 0 ; }
fs/xfs/xfs_icache.c +3 -3
@@ -658,7 +658,7 @@ xfs_inode_ag_iterator(break ; } } -return XFS_ERROR (last_error); +return last_error; }int
@@ -687,7 +687,7 @@ xfs_inode_ag_iterator_tag(break ; } } -return XFS_ERROR (last_error); +return last_error; }/*
@@ -1132,7 +1132,7 @@ restart: trylock =0 ; goto restart; } -return XFS_ERROR (last_error); +return last_error; }int
fs/xfs/xfs_inode.c +15 -15
@@ -583,7 +583,7 @@ xfs_lookup(trace_xfs_lookup (dp, name);if (XFS_FORCED_SHUTDOWN (dp->i_mount)) -return XFS_ERROR (EIO ); +return EIO ; lock_mode =xfs_ilock_data_map_shared (dp); error =xfs_dir_lookup (NULL , dp, name, &inum, ci_name);
@@ -923,7 +923,7 @@ xfs_dir_ialloc( }if (!ialloc_context && !ip) { *ipp =NULL ; -return XFS_ERROR (ENOSPC ); +return ENOSPC ; }/*
@@ -1164,7 +1164,7 @@ xfs_create(trace_xfs_create (dp, name);if (XFS_FORCED_SHUTDOWN (mp)) -return XFS_ERROR (EIO ); +return EIO ; prid =xfs_get_initial_prid (dp);
@@ -1349,7 +1349,7 @@ xfs_create_tmpfile(uint resblks;if (XFS_FORCED_SHUTDOWN (mp)) -return XFS_ERROR (EIO ); +return EIO ; prid =xfs_get_initial_prid (dp);
@@ -1457,7 +1457,7 @@ xfs_link(ASSERT (!S_ISDIR (sip->i_d.di_mode));if (XFS_FORCED_SHUTDOWN (mp)) -return XFS_ERROR (EIO ); +return EIO ; error =xfs_qm_dqattach (sip,0 );if (error)
@@ -1492,7 +1492,7 @@ xfs_link(*/ if (unlikely ((tdp->i_d.di_flags &XFS_DIFLAG_PROJINHERIT ) && (xfs_get_projid (tdp) !=xfs_get_projid (sip)))) { - error =XFS_ERROR (EXDEV ); + error =EXDEV ; goto error_return; }
@@ -2552,7 +2552,7 @@ xfs_remove(trace_xfs_remove (dp, name);if (XFS_FORCED_SHUTDOWN (mp)) -return XFS_ERROR (EIO ); +return EIO ; error =xfs_qm_dqattach (dp,0 );if (error)
@@ -2604,11 +2604,11 @@ xfs_remove(if (is_dir) {ASSERT (ip->i_d.di_nlink >=2 );if (ip->i_d.di_nlink !=2 ) { - error =XFS_ERROR (ENOTEMPTY ); + error =ENOTEMPTY ; goto out_trans_cancel; }if (!xfs_dir_isempty (ip)) { - error =XFS_ERROR (ENOTEMPTY ); + error =ENOTEMPTY ; goto out_trans_cancel; }
@@ -2814,7 +2814,7 @@ xfs_rename(*/ if (unlikely ((target_dp->i_d.di_flags &XFS_DIFLAG_PROJINHERIT ) && (xfs_get_projid (target_dp) !=xfs_get_projid (src_ip)))) { - error =XFS_ERROR (EXDEV ); + error =EXDEV ; goto error_return; }
@@ -2862,7 +2862,7 @@ xfs_rename(*/ if (!(xfs_dir_isempty (target_ip)) || (target_ip->i_d.di_nlink >2 )) { - error =XFS_ERROR (EEXIST ); + error =EEXIST ; goto error_return; } }
@@ -3136,7 +3136,7 @@ cluster_corrupt_out:xfs_iflush_abort (iq, false);kmem_free (ilist);xfs_perag_put (pag); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }/*
@@ -3191,7 +3191,7 @@ xfs_iflush(* as we wait for an empty AIL as part of the unmount process. */ if (XFS_FORCED_SHUTDOWN (mp)) { - error =XFS_ERROR (EIO ); + error =EIO ; goto abort_out; }
@@ -3234,7 +3234,7 @@ corrupt_out:xfs_buf_relse (bp);xfs_force_shutdown (mp,SHUTDOWN_CORRUPT_INCORE ); cluster_corrupt_out: - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; abort_out:/* * Unlocks the flush lock
@@ -3428,5 +3428,5 @@ xfs_iflush_int(return 0 ; corrupt_out: -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }
fs/xfs/xfs_inode_buf.c +2 -2
@@ -181,7 +181,7 @@ xfs_imap_to_bp(if (error ==EFSCORRUPTED && (iget_flags &XFS_IGET_UNTRUSTED )) -return XFS_ERROR (EINVAL ); +return EINVAL ;xfs_warn (mp,"%s: xfs_trans_read_buf() returned error %d." , __func__, error);
@@ -390,7 +390,7 @@ xfs_iread( __func__, ip->i_ino);XFS_CORRUPTION_ERROR (__func__,XFS_ERRLEVEL_LOW , mp, dip); - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ; goto out_brelse; }
fs/xfs/xfs_inode_fork.c +15 -15
@@ -102,7 +102,7 @@ xfs_iformat_fork( be64_to_cpu(dip->di_nblocks));XFS_CORRUPTION_ERROR ("xfs_iformat(1)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }if (unlikely (dip->di_forkoff > ip->i_mount->m_sb.sb_inodesize)) {
@@ -111,7 +111,7 @@ xfs_iformat_fork( dip->di_forkoff);XFS_CORRUPTION_ERROR ("xfs_iformat(2)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } if (unlikely((ip->i_d.di_flags & XFS_DIFLAG_REALTIME) &&
@@ -121,7 +121,7 @@ xfs_iformat_fork( ip->i_ino);XFS_CORRUPTION_ERROR ("xfs_iformat(realtime)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }switch (ip->i_d.di_mode &S_IFMT ) {
@@ -132,7 +132,7 @@ xfs_iformat_fork(if (unlikely (dip->di_format !=XFS_DINODE_FMT_DEV )) {XFS_CORRUPTION_ERROR ("xfs_iformat(3)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } ip->i_d.di_size =0 ; ip->i_df.if_u2.if_rdev =xfs_dinode_get_rdev (dip);
@@ -153,7 +153,7 @@ xfs_iformat_fork(XFS_CORRUPTION_ERROR ("xfs_iformat(4)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } di_size =be64_to_cpu (dip->di_size);
@@ -166,7 +166,7 @@ xfs_iformat_fork(XFS_CORRUPTION_ERROR ("xfs_iformat(5)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } size = (int )di_size;
@@ -181,13 +181,13 @@ xfs_iformat_fork(default :XFS_ERROR_REPORT ("xfs_iformat(6)" ,XFS_ERRLEVEL_LOW , ip->i_mount); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }break ;default :XFS_ERROR_REPORT ("xfs_iformat(7)" ,XFS_ERRLEVEL_LOW , ip->i_mount); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; }if (error) {return error;
@@ -211,7 +211,7 @@ xfs_iformat_fork(XFS_CORRUPTION_ERROR ("xfs_iformat(8)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } error =xfs_iformat_local (ip, dip,XFS_ATTR_FORK , size);
@@ -223,7 +223,7 @@ xfs_iformat_fork( error =xfs_iformat_btree (ip, dip,XFS_ATTR_FORK );break ;default : - error =XFS_ERROR (EFSCORRUPTED ); + error =EFSCORRUPTED ;break ; }if (error) {
@@ -266,7 +266,7 @@ xfs_iformat_local( XFS_DFORK_SIZE(dip, ip->i_mount, whichfork));XFS_CORRUPTION_ERROR ("xfs_iformat_local" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } ifp =XFS_IFORK_PTR (ip, whichfork); real_size =0 ;
@@ -322,7 +322,7 @@ xfs_iformat_extents( (unsigned long long) ip->i_ino, nex);XFS_CORRUPTION_ERROR ("xfs_iformat_extents(1)" ,XFS_ERRLEVEL_LOW , ip->i_mount, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } ifp->if_real_bytes =0 ;
@@ -350,7 +350,7 @@ xfs_iformat_extents(XFS_ERROR_REPORT ("xfs_iformat_extents(2)" ,XFS_ERRLEVEL_LOW , ip->i_mount); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } } ifp->if_flags |=XFS_IFEXTENTS ;
@@ -399,7 +399,7 @@ xfs_iformat_btree( (unsigned long long) ip->i_ino);XFS_CORRUPTION_ERROR ("xfs_iformat_btree" ,XFS_ERRLEVEL_LOW , mp, dip); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } ifp->if_broot_bytes = size;
@@ -436,7 +436,7 @@ xfs_iread_extents(if (unlikely (XFS_IFORK_FORMAT (ip, whichfork) !=XFS_DINODE_FMT_BTREE )) {XFS_ERROR_REPORT ("xfs_iread_extents" ,XFS_ERRLEVEL_LOW , ip->i_mount); -return XFS_ERROR (EFSCORRUPTED ); +return EFSCORRUPTED ; } nextents =XFS_IFORK_NEXTENTS (ip, whichfork); ifp =XFS_IFORK_PTR (ip, whichfork);
fs/xfs/xfs_ioctl.c +87 -87
600 lines not on this page · raw message
fs/xfs/xfs_ioctl32.c +41 -41
278 lines not on this page · raw message
fs/xfs/xfs_iomap.c +13 -13
@@ -138,7 +138,7 @@ xfs_iomap_write_direct( error =xfs_qm_dqattach (ip,0 );if (error) -return XFS_ERROR (error); +return error; rt =XFS_IS_REALTIME_INODE (ip); extsz =xfs_get_extsz_hint (ip);
@@ -148,7 +148,7 @@ xfs_iomap_write_direct(if ((offset + count) >XFS_ISIZE (ip)) { error =xfs_iomap_eof_align_last_fsb (mp, ip, extsz, &last_fsb);if (error) -return XFS_ERROR (error); +return error; }else {if (nmaps && (imap->br_startblock ==HOLESTARTBLOCK )) last_fsb = MIN(last_fsb, (xfs_fileoff_t)
@@ -188,7 +188,7 @@ xfs_iomap_write_direct(*/ if (error) {xfs_trans_cancel (tp,0 ); -return XFS_ERROR (error); +return error; }xfs_ilock (ip,XFS_ILOCK_EXCL );
@@ -225,7 +225,7 @@ xfs_iomap_write_direct(* Copy any maps to caller's array and return any error. */ if (nimaps ==0 ) { - error =XFS_ERROR (ENOSPC ); + error =ENOSPC ; goto out_unlock; }
@@ -552,7 +552,7 @@ xfs_iomap_write_delay(*/ error =xfs_qm_dqattach_locked (ip,0 );if (error) -return XFS_ERROR (error); +return error; extsz =xfs_get_extsz_hint (ip); offset_fsb =XFS_B_TO_FSBT (mp, offset);
@@ -600,7 +600,7 @@ retry:case EDQUOT :break ;default : -return XFS_ERROR (error); +return error; }/*
@@ -614,7 +614,7 @@ retry: error =0 ; goto retry; } -return XFS_ERROR (error ? error :ENOSPC ); +return error ? error :ENOSPC ; }if (!(imap[0 ].br_startblock ||XFS_IS_REALTIME_INODE (ip)))
@@ -663,7 +663,7 @@ xfs_iomap_write_allocate(*/ error =xfs_qm_dqattach (ip,0 );if (error) -return XFS_ERROR (error); +return error; offset_fsb =XFS_B_TO_FSBT (mp, offset); count_fsb = imap->br_blockcount;
@@ -690,7 +690,7 @@ xfs_iomap_write_allocate( nres, 0);if (error) {xfs_trans_cancel (tp,0 ); -return XFS_ERROR (error); +return error; }xfs_ilock (ip,XFS_ILOCK_EXCL );xfs_trans_ijoin (tp, ip,0 );
@@ -794,7 +794,7 @@ trans_cancel:xfs_trans_cancel (tp,XFS_TRANS_RELEASE_LOG_RES |XFS_TRANS_ABORT ); error0:xfs_iunlock (ip,XFS_ILOCK_EXCL ); -return XFS_ERROR (error); +return error; }int
@@ -854,7 +854,7 @@ xfs_iomap_write_unwritten( resblks, 0);if (error) {xfs_trans_cancel (tp,0 ); -return XFS_ERROR (error); +return error; }xfs_ilock (ip,XFS_ILOCK_EXCL );
@@ -893,7 +893,7 @@ xfs_iomap_write_unwritten( error =xfs_trans_commit (tp,XFS_TRANS_RELEASE_LOG_RES );xfs_iunlock (ip,XFS_ILOCK_EXCL );if (error) -return XFS_ERROR (error); +return error;if (!(imap.br_startblock ||XFS_IS_REALTIME_INODE (ip)))return xfs_alert_fsblock_zero (ip, &imap);
@@ -916,5 +916,5 @@ error_on_bmapi_transaction:xfs_bmap_cancel (&free_list);xfs_trans_cancel (tp, (XFS_TRANS_RELEASE_LOG_RES |XFS_TRANS_ABORT ));xfs_iunlock (ip,XFS_ILOCK_EXCL ); -return XFS_ERROR (error); +return error; }
fs/xfs/xfs_iops.c +9 -9
@@ -420,7 +420,7 @@ xfs_vn_getattr(trace_xfs_getattr (ip);if (XFS_FORCED_SHUTDOWN (mp)) -return -XFS_ERROR (EIO ); +return -EIO ; stat->size =XFS_ISIZE (ip); stat->dev = inode->i_sb->s_dev;
@@ -525,14 +525,14 @@ xfs_setattr_nonsize(/* If acls are being inherited, we already have this checked */ if (!(flags &XFS_ATTR_NOACL )) {if (mp->m_flags &XFS_MOUNT_RDONLY ) -return XFS_ERROR (EROFS ); +return EROFS ;if (XFS_FORCED_SHUTDOWN (mp)) -return XFS_ERROR (EIO ); +return EIO ; error = -inode_change_ok (inode, iattr);if (error) -return XFS_ERROR (error); +return error; }ASSERT ((mask &ATTR_SIZE ) ==0 );
@@ -682,7 +682,7 @@ xfs_setattr_nonsize(xfs_qm_dqrele (gdqp);if (error) -return XFS_ERROR (error); +return error;/* * XXX(hch): Updating the ACL entries is not atomic vs the i_mode
@@ -694,7 +694,7 @@ xfs_setattr_nonsize(if ((mask &ATTR_MODE ) && !(flags &XFS_ATTR_NOACL )) { error = -posix_acl_chmod (inode, inode->i_mode);if (error) -return XFS_ERROR (error); +return error; }return 0 ;
@@ -727,14 +727,14 @@ xfs_setattr_size(trace_xfs_setattr (ip);if (mp->m_flags &XFS_MOUNT_RDONLY ) -return XFS_ERROR (EROFS ); +return EROFS ;if (XFS_FORCED_SHUTDOWN (mp)) -return XFS_ERROR (EIO ); +return EIO ; error = -inode_change_ok (inode, iattr);if (error) -return XFS_ERROR (error); +return error;ASSERT (xfs_isilocked (ip,XFS_IOLOCK_EXCL ));ASSERT (S_ISREG (ip->i_d.di_mode));
fs/xfs/xfs_itable.c +7 -7
@@ -67,11 +67,11 @@ xfs_bulkstat_one_int( *stat =BULKSTAT_RV_NOTHING ;if (!buffer ||xfs_internal_inum (mp, ino)) -return XFS_ERROR (EINVAL ); +return EINVAL ; buf =kmem_alloc (sizeof (*buf),KM_SLEEP |KM_MAYFAIL );if (!buf) -return XFS_ERROR (ENOMEM ); +return ENOMEM ; error = xfs_iget(mp, NULL, ino, (XFS_IGET_DONTCACHE | XFS_IGET_UNTRUSTED),
@@ -154,9 +154,9 @@ xfs_bulkstat_one_fmt( const xfs_bstat_t *buffer) {if (ubsize <sizeof (*buffer)) -return XFS_ERROR (ENOMEM ); +return ENOMEM ;if (copy_to_user (ubuffer, buffer,sizeof (*buffer))) -return XFS_ERROR (EFAULT ); +return EFAULT ;if (ubused) *ubused =sizeof (*buffer);return 0 ;
@@ -551,7 +551,7 @@ xfs_bulkstat_single(return error;if (count ==0 || (xfs_ino_t)*lastinop != ino)return error ==EFSCORRUPTED ? -XFS_ERROR (EINVAL ) : error; +EINVAL : error;else return 0 ; }
@@ -659,7 +659,7 @@ xfs_inumbers(if (bufidx == bcount) {long written;if (formatter (ubuffer, buffer, bufidx, &written)) { - error =XFS_ERROR (EFAULT ); + error =EFAULT ;break ; } ubuffer += written;
@@ -686,7 +686,7 @@ xfs_inumbers(if (bufidx) {long written;if (formatter (ubuffer, buffer, bufidx, &written)) - error =XFS_ERROR (EFAULT ); + error =EFAULT ;else *count += bufidx; }
fs/xfs/xfs_log.c +16 -16
@@ -283,7 +283,7 @@ xlog_grant_head_wait(return 0 ; shutdown:list_del_init (&tic->t_queue); -return XFS_ERROR (EIO ); +return EIO ; }/*
@@ -377,7 +377,7 @@ xfs_log_regrant(int error =0 ;if (XLOG_FORCED_SHUTDOWN (log)) -return XFS_ERROR (EIO ); +return EIO ;XFS_STATS_INC (xs_try_logspace);
@@ -446,7 +446,7 @@ xfs_log_reserve(ASSERT (client ==XFS_TRANSACTION || client ==XFS_LOG );if (XLOG_FORCED_SHUTDOWN (log)) -return XFS_ERROR (EIO ); +return EIO ;XFS_STATS_INC (xs_try_logspace);
@@ -454,7 +454,7 @@ xfs_log_reserve( tic =xlog_ticket_alloc (log, unit_bytes, cnt, client, permanent,KM_SLEEP |KM_MAYFAIL );if (!tic) -return XFS_ERROR (ENOMEM ); +return ENOMEM ; tic->t_trans_type = t_type; *ticp = tic;
@@ -2323,7 +2323,7 @@ xlog_write( ophdr =xlog_write_setup_ophdr (log, ptr, ticket, flags);if (!ophdr) -return XFS_ERROR (EIO ); +return EIO ;xlog_write_adv_cnt (&ptr, &len, &log_offset,sizeof (struct xlog_op_header ));
@@ -2822,7 +2822,7 @@ restart:spin_lock (&log->l_icloglock);if (XLOG_FORCED_SHUTDOWN (log)) {spin_unlock (&log->l_icloglock); -return XFS_ERROR (EIO ); +return EIO ; } iclog = log->l_iclog;
@@ -3010,7 +3010,7 @@ xlog_state_release_iclog(int sync =0 ;/* do we sync? */ if (iclog->ic_state &XLOG_STATE_IOERROR ) -return XFS_ERROR (EIO ); +return EIO ;ASSERT (atomic_read (&iclog->ic_refcnt) >0 );if (!atomic_dec_and_lock (&iclog->ic_refcnt, &log->l_icloglock))
@@ -3018,7 +3018,7 @@ xlog_state_release_iclog(if (iclog->ic_state &XLOG_STATE_IOERROR ) {spin_unlock (&log->l_icloglock); -return XFS_ERROR (EIO ); +return EIO ; }ASSERT (iclog->ic_state ==XLOG_STATE_ACTIVE || iclog->ic_state ==XLOG_STATE_WANT_SYNC );
@@ -3135,7 +3135,7 @@ _xfs_log_force( iclog = log->l_iclog;if (iclog->ic_state &XLOG_STATE_IOERROR ) {spin_unlock (&log->l_icloglock); -return XFS_ERROR (EIO ); +return EIO ; }/* If the head iclog is not active nor dirty, we just attach
@@ -3173,7 +3173,7 @@ _xfs_log_force(spin_unlock (&log->l_icloglock);if (xlog_state_release_iclog (log, iclog)) -return XFS_ERROR (EIO ); +return EIO ;if (log_flushed) *log_flushed =1 ;
@@ -3209,7 +3209,7 @@ maybe_sleep:*/ if (iclog->ic_state &XLOG_STATE_IOERROR ) {spin_unlock (&log->l_icloglock); -return XFS_ERROR (EIO ); +return EIO ; }XFS_STATS_INC (xs_log_force_sleep);xlog_wait (&iclog->ic_force_wait, &log->l_icloglock);
@@ -3219,7 +3219,7 @@ maybe_sleep:* and the memory read should be atomic. */ if (iclog->ic_state &XLOG_STATE_IOERROR ) -return XFS_ERROR (EIO ); +return EIO ;if (log_flushed) *log_flushed =1 ; }else {
@@ -3287,7 +3287,7 @@ try_again: iclog = log->l_iclog;if (iclog->ic_state &XLOG_STATE_IOERROR ) {spin_unlock (&log->l_icloglock); -return XFS_ERROR (EIO ); +return EIO ; } do {
@@ -3338,7 +3338,7 @@ try_again:xlog_state_switch_iclogs (log, iclog,0 );spin_unlock (&log->l_icloglock);if (xlog_state_release_iclog (log, iclog)) -return XFS_ERROR (EIO ); +return EIO ;if (log_flushed) *log_flushed =1 ;spin_lock (&log->l_icloglock);
@@ -3353,7 +3353,7 @@ try_again:*/ if (iclog->ic_state &XLOG_STATE_IOERROR ) {spin_unlock (&log->l_icloglock); -return XFS_ERROR (EIO ); +return EIO ; }XFS_STATS_INC (xs_log_force_sleep);xlog_wait (&iclog->ic_force_wait, &log->l_icloglock);
@@ -3363,7 +3363,7 @@ try_again:* and the memory read should be atomic. */ if (iclog->ic_state &XLOG_STATE_IOERROR ) -return XFS_ERROR (EIO ); +return EIO ;if (log_flushed) *log_flushed =1 ;
fs/xfs/xfs_log_cil.c +1 -1
@@ -615,7 +615,7 @@ out_abort_free_ticket:xfs_log_ticket_put (tic); out_abort:xlog_cil_committed (ctx,XFS_LI_ABORTED ); -return XFS_ERROR (EIO ); +return EIO ; } static void
fs/xfs/xfs_log_recover.c +35 -35
235 lines not on this page · raw message
fs/xfs/xfs_mount.c +24 -24
48 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Part of the diff is not shown here. View the raw message.
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
Quoted 6 lines · Eric Sandeen
XFS_ERRORwas designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap, using something like:probe module("xfs").function("xfs_*").return { if (@defined($return) && $return == VALUE) { ... } }
Gives me a version just using ftrace, or at least a kprobes based module that we can merged in the kernel tree and this would be fine for me.
Requiring a massive blob of questionable out of tree module code and a compiler is an absolute no-go.
NAK for now.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
Quoted 6 lines · Christoph Hellwig
Quoted 5 lines · Eric Sandeen
XFS_ERRORwas designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap, using something like:
Quoted 7 lines
Quoted 1 line
probe module("xfs").function("xfs_*").return { if (@defined($return) && $return == VALUE) { ... } }
Gives me a version just using ftrace, or at least a kprobes based module that we can merged in the kernel tree and this would be fine for me.
Requiring a massive blob of questionable out of tree module code and a compiler is an absolute no-go.
Ok, fair point.
Quoted 1 line
NAK for now.
Even if we don't have a replacement, I have yet to find anyone who has ever used it...
Anyway, I'll look into options besides systemtap.
Thanks,
-Eric
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
Quoted 15 lines · Eric Sandeen
Quoted 6 lines · Christoph Hellwig
Quoted 5 lines · Eric Sandeen
XFS_ERRORwas designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap, using something like:Quoted 7 lines
Quoted 1 line
probe module("xfs").function("xfs_*").return { if (@defined($return) && $return == VALUE) { ... } }
Gives me a version just using ftrace, or at least a kprobes based module that we can merged in the kernel tree and this would be fine for me.
Requiring a massive blob of questionable out of tree module code and a compiler is an absolute no-go.
Quoted 8 lines
Ok, fair point.
Quoted 1 line
NAK for now.
Even if we don't have a replacement, I have yet to find anyone who has ever used it...
Anyway, I'll look into options besides systemtap.
Here's the "best" I've come up with so far...
# for FUNCTION in `grep "t xfs_" /proc/kallsyms | awk '{print $3}'`; do echo "r:ret_$FUNCTION $FUNCTION \$retval" >> /sys/kernel/debug/tracing/kprobe_events; done# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 1 > $ENABLE; done
run a test that fails:
# dd if=/dev/zero of=newfile bs=513 oflag=direct dd: writing `newfile': Invalid argument
# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 0 > $ENABLE; done
# cat /sys/kernel/debug/tracing/trace
<snip>
<...>-63791 [000] d... 705435.568913: ret_xfs_vn_mknod: (xfs_vn_create+0x13/0x20 [xfs] <- xfs_vn_mknod) arg1=0
<...>-63791 [000] d... 705435.568913: ret_xfs_vn_create: (vfs_create+0xdb/0x100 <- xfs_vn_create) arg1=0
<...>-63791 [000] d... 705435.568918: ret_xfs_file_open: (do_dentry_open+0x24e/0x2e0 <- xfs_file_open) arg1=0
<...>-63791 [000] d... 705435.568934: ret_xfs_file_dio_aio_write: (xfs_file_aio_write+0x147/0x150 [xfs] <- xfs_file_dio_aio_write) arg1=ffffffffffffffeaHey look, it's "-22" in hex! ;)
so it's possible, but bleah.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
[ cc the tracing expert ]
Quoted 45 lines · Eric Sandeen
Quoted 15 lines · Eric Sandeen
Quoted 6 lines · Christoph Hellwig
Quoted 5 lines · Eric Sandeen
XFS_ERRORwas designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap, using something like:Quoted 7 lines
Quoted 1 line
probe module("xfs").function("xfs_*").return { if (@defined($return) && $return == VALUE) { ... } }
Gives me a version just using ftrace, or at least a kprobes based module that we can merged in the kernel tree and this would be fine for me.
Requiring a massive blob of questionable out of tree module code and a compiler is an absolute no-go.
Quoted 8 lines
Ok, fair point.
Quoted 1 line
NAK for now.
Even if we don't have a replacement, I have yet to find anyone who has ever used it...
Anyway, I'll look into options besides systemtap.
Here's the "best" I've come up with so far...
# for FUNCTION in `grep "t xfs_" /proc/kallsyms | awk '{print $3}'`; do echo "r:ret_$FUNCTION $FUNCTION \$retval" >> /sys/kernel/debug/tracing/kprobe_events; done# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 1 > $ENABLE; donerun a test that fails:
# dd if=/dev/zero of=newfile bs=513 oflag=direct dd: writing `newfile': Invalid argument# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 0 > $ENABLE; done# cat /sys/kernel/debug/tracing/trace <snip> <...>-63791 [000] d... 705435.568913: ret_xfs_vn_mknod: (xfs_vn_create+0x13/0x20 [xfs] <- xfs_vn_mknod) arg1=0 <...>-63791 [000] d... 705435.568913: ret_xfs_vn_create: (vfs_create+0xdb/0x100 <- xfs_vn_create) arg1=0 <...>-63791 [000] d... 705435.568918: ret_xfs_file_open: (do_dentry_open+0x24e/0x2e0 <- xfs_file_open) arg1=0 <...>-63791 [000] d... 705435.568934: ret_xfs_file_dio_aio_write: (xfs_file_aio_write+0x147/0x150 [xfs] <- xfs_file_dio_aio_write) arg1=ffffffffffffffea
Quoted 3 lines
Hey look, it's "-22" in hex! ;)
so it's possible, but bleah.
Steve, we want to be able to trap specific return codes from functions. Say, for example, the first function that returns EINVAL/-EINVAL in XFS under a given workload.
What's the most efficient way to do that with ftrace?
And can that be set up as a trigger so we can use it to dump a snapshot of the last N events into the trace buffer or do other interesting things with that event?
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
Quoted 3 lines · On Thu, 17 Apr 2014 08:08:08 +1000 Dave Chinner <[email protected]> wrote:
Quoted 3 lines
Here's the "best" I've come up with so far...
# for FUNCTION in `grep "t xfs_" /proc/kallsyms | awk '{print $3}'`; do echo "r:ret_$FUNCTION $FUNCTION \$retval" >> /sys/kernel/debug/tracing/kprobe_events; done
BTW, it's usually better to do:
grep 't xfs_' /proc/kallsyms | awk '{print $3}' ; while read FUNCTION; do ....
Quoted 25 lines
Quoted 17 lines
# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 1 > $ENABLE; donerun a test that fails:
# dd if=/dev/zero of=newfile bs=513 oflag=direct dd: writing `newfile': Invalid argument# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 0 > $ENABLE; done# cat /sys/kernel/debug/tracing/trace <snip> <...>-63791 [000] d... 705435.568913: ret_xfs_vn_mknod: (xfs_vn_create+0x13/0x20 [xfs] <- xfs_vn_mknod) arg1=0 <...>-63791 [000] d... 705435.568913: ret_xfs_vn_create: (vfs_create+0xdb/0x100 <- xfs_vn_create) arg1=0 <...>-63791 [000] d... 705435.568918: ret_xfs_file_open: (do_dentry_open+0x24e/0x2e0 <- xfs_file_open) arg1=0 <...>-63791 [000] d... 705435.568934: ret_xfs_file_dio_aio_write: (xfs_file_aio_write+0x147/0x150 [xfs] <- xfs_file_dio_aio_write) arg1=ffffffffffffffeaQuoted 3 lines
Hey look, it's "-22" in hex! ;)
so it's possible, but bleah.
Steve, we want to be able to trap specific return codes from functions. Say, for example, the first function that returns EINVAL/-EINVAL in XFS under a given workload.
Quoted 5 lines
What's the most efficient way to do that with ftrace?
And can that be set up as a trigger so we can use it to dump a snapshot of the last N events into the trace buffer or do other interesting things with that event?
Well, after you do the above, you could also do a while loop to all those events and update the filter:
echo 'arg1 > 0xffffffffffffff00' > /debug/tracing/events/kprobes/filter
Which would trace only those functions that had an error code (assuming the error code is less than 256). You could also use the trigger files:
echo 'traceoff if arg1 > 0xffffffffffffff00' > /debug/tracing/events/kprobes/*/trigger
The above wont actually work as is, you would need to do another while loop of trigger files and set them each individually.
-- Steve
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
Quoted 11 lines · Steven Rostedt
Quoted 3 lines · On Thu, 17 Apr 2014 08:08:08 +1000 Dave Chinner <[email protected]> wrote:
Quoted 3 lines
Here's the "best" I've come up with so far...
# for FUNCTION in `grep "t xfs_" /proc/kallsyms | awk '{print $3}'`; do echo "r:ret_$FUNCTION $FUNCTION \$retval" >> /sys/kernel/debug/tracing/kprobe_events; doneBTW, it's usually better to do:
grep 't
xfs_'/proc/kallsyms| awk '{print $3}' ; while read FUNCTION; do ....
grep -i 't xfs' .....
Quoted 35 lines
Quoted 24 lines
Quoted 16 lines
# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 1 > $ENABLE; donerun a test that fails:
# dd if=/dev/zero of=newfile bs=513 oflag=direct dd: writing `newfile': Invalid argument# for ENABLE in /sys/kernel/debug/tracing/events/kprobes/ret_xfs_*/enable; do echo 0 > $ENABLE; done# cat /sys/kernel/debug/tracing/trace <snip> <...>-63791 [000] d... 705435.568913: ret_xfs_vn_mknod: (xfs_vn_create+0x13/0x20 [xfs] <- xfs_vn_mknod) arg1=0 <...>-63791 [000] d... 705435.568913: ret_xfs_vn_create: (vfs_create+0xdb/0x100 <- xfs_vn_create) arg1=0 <...>-63791 [000] d... 705435.568918: ret_xfs_file_open: (do_dentry_open+0x24e/0x2e0 <- xfs_file_open) arg1=0 <...>-63791 [000] d... 705435.568934: ret_xfs_file_dio_aio_write: (xfs_file_aio_write+0x147/0x150 [xfs] <- xfs_file_dio_aio_write) arg1=ffffffffffffffeaQuoted 3 lines
Hey look, it's "-22" in hex! ;)
so it's possible, but bleah.
Steve, we want to be able to trap specific return codes from functions. Say, for example, the first function that returns EINVAL/-EINVAL in XFS under a given workload.
Quoted 5 lines
What's the most efficient way to do that with ftrace?
And can that be set up as a trigger so we can use it to dump a snapshot of the last N events into the trace buffer or do other interesting things with that event?
Well, after you do the above, you could also do a while loop to all those events and update the filter:
echo 'arg1 >
0xffffffffffffff00' > /debug/tracing/events/kprobes/filter
Quoted 7 lines
Which would trace only those functions that had an error code (assuming the error code is less than 256). You could also use the trigger files:
echo 'traceoff if arg1 >
0xffffffffffffff00' > /debug/tracing/events/kprobes/*/triggerThe above wont actually work as is, you would need to do another while loop of trigger files and set them each individually.
so, basically a script that does:
#!/bin/bash
TRACEDIR=/sys/kernel/debug/tracing
grep -i 't xfs_' /proc/kallsyms | awk '{print $3}' ; while read F; do
echo "r:ret_$F $F \$retval" >> $TRACEDIR/kprobe_events
done
for E in $TRACEDIR/events/kprobes/ret_xfs_*/enable; do
echo 1 > $E
done;
echo 'arg1 > 0xffffffffffffff00' > $TRACEDIR/events/kprobes/filter
for T in $TRACEDIR/events/kprobes/ret_xfs_*/trigger; do
echo 'traceoff if arg1 > 0xffffffffffffff00' > $T
done
And that gives:
# dd if=/dev/zero of=/mnt/scratch/newfile bs=513 oflag=direct
dd: error writing ¿/mnt/scratch/newfile¿: Invalid argument
1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000259882 s, 0.0 kB/s
root@test4:~# cat /sys/kernel/debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 1/1 #P:16
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
<...>-8073 [006] d... 145740.460546: ret_xfs_file_dio_aio_write: (xfs_file_aio_write+0x170/0x180 <- xfs_file_dio_aio_write) arg1=0xffffffffffffffeaWhich is precisely the detection that XFS_ERROR would have given us. Ok, so I guess we can now add whatever need need to that trigger...
Basically, pass in teh XFs function names you want to trace, the sets up teh events, whatever trigger beahviour you want, and we're off to the races...
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
Quoted 67 lines · Dave Chinner
Quoted 17 lines · Steven Rostedt
Quoted 9 lines · On Thu, 17 Apr 2014 08:08:08 +1000 Dave Chinner <[email protected]> wrote:
Steve, we want to be able to trap specific return codes from functions. Say, for example, the first function that returns EINVAL/-EINVAL in XFS under a given workload.
What's the most efficient way to do that with ftrace?
And can that be set up as a trigger so we can use it to dump a snapshot of the last N events into the trace buffer or do other interesting things with that event?
Well, after you do the above, you could also do a while loop to all those events and update the filter:
echo 'arg1 >
0xffffffffffffff00' > /debug/tracing/events/kprobes/filterQuoted 7 lines
Which would trace only those functions that had an error code (assuming the error code is less than 256). You could also use the trigger files:
echo 'traceoff if arg1 >
0xffffffffffffff00' > /debug/tracing/events/kprobes/*/triggerThe above wont actually work as is, you would need to do another while loop of trigger files and set them each individually.
so, basically a script that does:
#!/bin/bash
TRACEDIR=/sys/kernel/debug/tracing
grep -i 't
xfs_'/proc/kallsyms| awk '{print $3}' ; while read F; do
echo "r:ret_$F $F \$retval" >> $TRACEDIR/kprobe_events
donefor E in $TRACEDIR/events/kprobes/ret_xfs_*/enable; do
echo 1 > $Edone;
echo 'arg1 >
0xffffffffffffff00' > $TRACEDIR/events/kprobes/filterfor T in $TRACEDIR/events/kprobes/ret_xfs_*/trigger; do
echo 'traceoff if arg1 > 0xffffffffffffff00' > $Tdone
And that gives:
# dd if=/dev/zero of=/mnt/scratch/newfile bs=513 oflag=direct dd: error writing ¿/mnt/scratch/newfile¿: Invalid argument 1+0 records in 0+0 records out 0 bytes (0 B) copied, 0.000259882 s, 0.0 kB/s root@test4:~# cat /sys/kernel/debug/tracing/trace # tracer: nop # # entries-in-buffer/entries-written: 1/1 #P:16 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | <...>-8073 [006] d... 145740.460546: ret_xfs_file_dio_aio_write: (xfs_file_aio_write+0x170/0x180 <- xfs_file_dio_aio_write) arg1=0xffffffffffffffea
Quoted 6 lines
Which is precisely the detection that
XFS_ERRORwould have given us. Ok, so I guess we can now add whatever need need to that trigger...Basically, pass in teh XFs function names you want to trace, the sets up teh events, whatever trigger beahviour you want, and we're off to the races...
FWIW, this strikes me as something that would be useful for trace-cmd to be able to control, creating the kprobes dynamically based on the function name specification given on the command line similar to how we specify the events we want it to trace..
I'm sure there's more people that just us that want to know what function a specific error first comes from and how it propagates back up through the code....
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
In reply to Dave ChinnerQuoted 11 lines · Dave Chinner
so, basically a script that does:
#!/bin/bash
TRACEDIR=/sys/kernel/debug/tracing
grep -i 't
xfs_'/proc/kallsyms| awk '{print $3}' ; while read F; do
echo "r:ret_$F $F \$retval" >> $TRACEDIR/kprobe_events
donefor E in $TRACEDIR/events/kprobes/ret_xfs_*/enable; do
Quoted 8 lines
echo 1 > $Edone;
echo 'arg1 >
0xffffffffffffff00' > $TRACEDIR/events/kprobes/filterfor T in $TRACEDIR/events/kprobes/ret_xfs_*/trigger; do
echo 'traceoff if arg1 > 0xffffffffffffff00' > $Tdone
This looks incredibly useful! Can we throw this into Documentation/ as a helper script (and make the xfs a command line parameter so it's genericly useful)?
One think that would be nice is to specify a module instead of relying on a clean namespace, but to replace the XFS functionality the one above is more than enough.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
Quoted 17 lines · Christoph Hellwig
Quoted 16 lines · Dave Chinner
so, basically a script that does:
#!/bin/bash
TRACEDIR=/sys/kernel/debug/tracing
grep -i 't
xfs_'/proc/kallsyms| awk '{print $3}' ; while read F; do
echo "r:ret_$F $F \$retval" >> $TRACEDIR/kprobe_events
donefor E in $TRACEDIR/events/kprobes/ret_xfs_*/enable; do
echo 1 > $Edone;
echo 'arg1 >
0xffffffffffffff00' > $TRACEDIR/events/kprobes/filter
Quoted 7 lines
Quoted 3 lines
for T in $TRACEDIR/events/kprobes/ret_xfs_*/trigger; do
echo 'traceoff if arg1 > 0xffffffffffffff00' > $Tdone
This looks incredibly useful! Can we throw this into
Documentation/as a helper script (and make the xfs a command line parameter so it's genericly useful)?
So does that mean you have no more objections to removing XFS_ERROR()?
The thing is, that's a quick hack that spews errors all over the place, especially if you run it twice. It needs a counterpart to turn off the tracing, clean up the triggers, etc....
FWIW, what I'd really like is a trace event trigger that triggers a BUG(), so that we can use it to drop into kernel debuggers or get kdump to generate a core that can be analysed offline...
Quoted 3 lines
One think that would be nice is to specify a module instead of relying on a clean namespace, but to replace the XFS functionality the one above is more than enough.
My current hack is invoked like this:
$ grep -i 't xfs_' /proc/kallsyms | retval_filter.sh
Makes it completely independent of how you supply the symbols to the function. Hence my coments about how it'd be really cool to have this built into in trace-cmd, because the mechanism is independent of how you specify the function list...
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
In reply to Christoph HellwigQuoted 8 lines · Christoph Hellwig
Quoted 6 lines · Eric Sandeen
XFS_ERRORwas designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap, using something like:probe module("xfs").function("xfs_*").return { if (@defined($return) && $return == VALUE) { ... } }
Quoted 7 lines
Gives me a version just using ftrace, or at least a kprobes based module that we can merged in the kernel tree and this would be fine for me.
Requiring a massive blob of questionable out of tree module code and a compiler is an absolute no-go.
NAK for now.
I think regardless of the systemtap/ftrace replacement, nobody uses this at the moment, and it's not been used for a long time. It's a compile time configurable, debug only error trap that is far less useful than adding printk() or tracepoints at the appropriate points.
If you've got to recompile the kernel to use it, then you may as well add meaningful debug rather than hope an error trap that panics the kernel tells you what you need. i.e. the error trap code as it stands is only useful for those running kernel debuggers, and very few developers actually do that these days.
And, FWIW, it only allows detection of then initial error instance - too bad if you want the second or third occurrence of the error.
IOWs, I can't see how this is at all useful anymore....
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Re: [PATCH 2/2] xfs: Nuke XFS_ERROR macro
In reply to Eric SandeenQuoted 10 lines · Eric Sandeen
XFS_ERRORwas designed long ago to trap return values, but it's not runtime configurable, it's not consistently used, and we can do the same thing today with systemtap, using something like:probe module("xfs").function("xfs_*").return { if (@defined($return) && $return == VALUE) { ... } }
Just nuke
XFS_ERRORand associated bits.Signed-off-by Eric Sandeen <[email protected]>
Eric, given the rebasing impact of this change on other pending work, I think we should plan to merge this just prior to the next upstream merge. Perhaps regenerate it against the for-next branch a week before the merge window is likely to open, and then apply it? That way we (well, I) don't have to spend a alrge proportion of this merge window fixing up patch mismatches vs the master branch?
Is that an acceptible approach for everyone?
(Note: I'm assuming Christoph is OK with this given the ftrace scripts we can use to replace this macro...)
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs