2.6.32 kernel add VM_FAULT_RETRY option in handle page fault, we
need handle it as well.
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I71d1c51bc297d1e0e8cc38e11b8a724edf9d1ae7
Reviewed-on: http://review.whamcloud.com/997
Tested-by: Hudson
Reviewed-by: Jinshan Xiong <jay@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
#define FMODE_EXEC 0
#endif
#define FMODE_EXEC 0
#endif
+#ifndef VM_FAULT_RETRY
+#define VM_FAULT_RETRY 0
+#endif
+
/** Only used on client-side for indicating the tail of dir hash/offset. */
#define LL_DIR_END_OFF 0x7fffffffffffffffULL
#define LL_DIR_END_OFF_32BIT 0x7fffffffUL
/** Only used on client-side for indicating the tail of dir hash/offset. */
#define LL_DIR_END_OFF 0x7fffffffffffffffULL
#define LL_DIR_END_OFF_32BIT 0x7fffffffUL
fault_ret = vio->u.fault.fault.ft_flags;
out_err:
fault_ret = vio->u.fault.fault.ft_flags;
out_err:
+ if ((result != 0) && !(fault_ret & VM_FAULT_RETRY))
fault_ret |= VM_FAULT_ERROR;
vma->vm_flags |= ra_flags;
fault_ret |= VM_FAULT_ERROR;
vma->vm_flags |= ra_flags;
+ if (unlikely(cfio->fault.ft_flags & VM_FAULT_RETRY))
+ return -EAGAIN;
+
CERROR("unknow error in page fault!\n");
return -EINVAL;
}
CERROR("unknow error in page fault!\n");
return -EINVAL;
}