static void rds_message_purge(struct rds_message *rm) { unsigned long i; if (unlikely(test_bit(RDS_MSG_PAGEVEC, &rm->m_flags))) return; for (i = 0; i < rm->m_nents; i++) { rdsdebug("putting data page %p\n", (void *)sg_page(&rm->m_sg[i])); /* XXX will have to put_page for page refs */ __free_page(sg_page(&rm->m_sg[i])); } rm->m_nents = 0; if (rm->m_rdma_op) rds_rdma_free_op(rm->m_rdma_op); if (rm->m_rdma_mr) rds_mr_put(rm->m_rdma_mr); }
static void rds_message_purge(struct rds_message *rm) { unsigned long i; if (unlikely(test_bit(RDS_MSG_PAGEVEC, &rm->m_flags))) return; for (i = 0; i < rm->data.op_nents; i++) { rdsdebug("putting data page %p\n", (void *)sg_page(&rm->data.op_sg[i])); __free_page(sg_page(&rm->data.op_sg[i])); } rm->data.op_nents = 0; if (rm->rdma.op_active) rds_rdma_free_op(&rm->rdma); if (rm->rdma.op_rdma_mr) rds_mr_put(rm->rdma.op_rdma_mr); if (rm->atomic.op_active) rds_atomic_free_op(&rm->atomic); if (rm->atomic.op_rdma_mr) rds_mr_put(rm->atomic.op_rdma_mr); }