On Sat, Feb 02, 2019 at 08:30:07AM -0800, Christoph Hellwig wrote: > Nitpick: why hoist here and refactor in the previous patches subject? Will change. > > + xfs_agino_t target_agino, > > + xfs_ino_t *ino, > > + struct xfs_imap *imap, > > + struct xfs_dinode **dipp, > > + struct xfs_buf **bpp) > > +{ > > + struct xfs_imap last_imap; > > + struct xfs_mount *mp = tp->t_mountp; > > + struct xfs_buf *last_ibp = NULL; > > + struct xfs_dinode *last_dip; > > + xfs_ino_t next_ino = NULLFSINO; > > + xfs_agino_t next_agino; > > + int error; > > + > > + ASSERT(head_agino != target_agino); > > + > > + next_agino = head_agino; > > + while (next_agino != target_agino) { > > + xfs_agino_t unlinked_agino; > > + > > + if (last_ibp) > > + xfs_trans_brelse(tp, last_ibp); > > + > > + next_ino = XFS_AGINO_TO_INO(mp, pag->pag_agno, next_agino); > > + error = xfs_iunlink_map_ino(tp, next_ino, &last_imap, > > + &last_dip, &last_ibp); > > And reason we stop formatting directly into the passed in imap, > as the old code did? General prinicple of not formatting into the caller's variables until we're sure we're returning 0 but I'll change it to format directly since it'll save stack space. --D