int
ksocknal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
{
+ int mpflag = 0;
int type = lntmsg->msg_type;
lnet_process_id_t target = lntmsg->msg_target;
unsigned int payload_niov = lntmsg->msg_niov;
desc_size = offsetof(ksock_tx_t,
tx_frags.paged.kiov[payload_niov]);
+ if (lntmsg->msg_vmflush)
+ mpflag = cfs_memory_pressure_get_and_set();
tx = ksocknal_alloc_tx(KSOCK_MSG_LNET, desc_size);
if (tx == NULL) {
CERROR("Can't allocate tx desc type %d size %d\n",
type, desc_size);
+ if (lntmsg->msg_vmflush)
+ cfs_memory_pressure_restore(mpflag);
return (-ENOMEM);
}
/* The first fragment will be set later in pro_pack */
rc = ksocknal_launch_packet(ni, tx, target);
+ if (lntmsg->msg_vmflush)
+ cfs_memory_pressure_restore(mpflag);
if (rc == 0)
return (0);