Re: [PATCH 2/2 V7] xfs: Properly retry failed inode items in case of error during buffer writeback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Christoph,

On Fri, Aug 11, 2017 at 06:09:57AM -0700, Christoph Hellwig wrote:
> >  }
> >  #endif
> > +
> > +static inline void
> > +xfs_clear_li_failed(
> > +	struct xfs_log_item	*lip)
> > +{
> > +	struct xfs_buf	*bp = lip->li_buf;
> > +
> > +	ASSERT(lip->li_flags & XFS_LI_IN_AIL);
> > +	lockdep_assert_held(&lip->li_ailp->xa_lock);
> > +
> > +	if (lip->li_flags & XFS_LI_FAILED) {
> > +		lip->li_flags &= ~XFS_LI_FAILED;
> > +		lip->li_buf = NULL;
> > +		xfs_buf_rele(bp);
> 
> This means we now nest pag->pag_buf_lock and bp->b_lock inside
> ailp->xa_lock.  I couldn't find any place where we take
> it in a different order, but it makes me feel a little nervous.
> 

If it makes you feel less nervous, I plan to remove the xa_lock there, and use
atomic operations instead, to set/clear the lip->li_flags, as discussed in
previous versions.

> Also I think the set/clear failed helper might better be out of line
> instead of bloating the callers.
> 

Sure, I have no problem in making it a not inline function, My goal in making it
inlined was to not add another call in the stack just to remove the flags, but,
maybe a stupid question, but, what would be the benefit in making it a regular
function instead of inline?


> Except for that the patch looks fine to me.

Thanks for the review.

Cheers

-- 
Carlos
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux