<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana'; COLOR: #000000">
<DIV
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana'; COLOR: #000000">
<DIV>Hello Dave,</DIV>
<DIV> </DIV>
<DIV>Looking at the patch, I see that now we call xfs_idestroy_fork() in RCU
callback. This can do the following chain:</DIV>
<DIV> </DIV>
<DIV>xfs_iext_destroy => xfs_iext_irec_remove =>
xfs_iext_realloc_indirect=> kmem_realloc => kmem_alloc => kmem_alloc
=> congestion_wait()</DIV>
<DIV> </DIV>
<DIV>At least according to documentation, the RCU callback cannot block, since
it may be called from softirq context. Is this fine?</DIV>
<DIV> </DIV>
<DIV>Thanks,</DIV>
<DIV>Alex.</DIV>
<DIV> </DIV>
<DIV>P.S.: I have submitted a patch called “[PATCH] xfs: optimize destruction of
the indirection array”, which changes xfs_iext_destroy to call only kmem_free().
But this patch got stuck in the spam filter of the mailing list, and Brent is
working to release it from there.</DIV>
<DIV> </DIV>
<DIV> </DIV><PRE> </PRE></DIV></DIV></DIV></DIV></DIV></BODY></HTML>