Rework how git is run to avoid deadlock. The previous version would fork git and then collect its output and wait for it to die - *without* processing puffs operations. This seems harmless, since it looks as though git should never touch the gitfs mount. But if git wants a vnode and the kernel tries to get one by reclaiming an old gitfs vnode, it can. So we need to make sure that, while we're waiting for git, we process puffs requests. There is still a theoretical possibility of deadlock if - Process P tries to access a vnode for which we have to run git - We fork git - git takes long enough for P to give up (typically via EINTR) - git wants a new vnode - Kernel tries to reclaim, or at least inactive, that same vnode because we do not process further requests for the vnode we're blocking on git for, only on other vnodes. I'm not sure whether this is enough of a risk to be worth fixing. Arguably we should process INACTIVE and RECLAIM on even the vndoe we're blocking on, and I may someday implement that.