{
int error;
+ /*
+ * Disable the normal reclaim path for zpl_putpage(). This
+ * ensures that all memory allocations under this call path
+ * will never enter direct reclaim. If this were to happen
+ * the VM might try to write out additional pages by calling
+ * zpl_putpage() again resulting in a deadlock.
+ */
+ current->flags |= PF_MEMALLOC;
error = -zfs_putpage(pp, wbc, data);
+ current->flags &= ~PF_MEMALLOC;
if (error) {
SetPageError(pp);