* service. The flag cannot be used on policies that use
* \e PTLRPC_NRS_FL_REG_EXTERN
*/
- PTLRPC_NRS_FL_FALLBACK = (1 << 0),
+ PTLRPC_NRS_FL_FALLBACK = BIT(0),
/**
* Start policy immediately after registering.
*/
- PTLRPC_NRS_FL_REG_START = (1 << 1),
+ PTLRPC_NRS_FL_REG_START = BIT(1),
/**
* This is a policy registering from a module different to the one NRS
* core ships in (currently ptlrpc).
*/
- PTLRPC_NRS_FL_REG_EXTERN = (1 << 2),
+ PTLRPC_NRS_FL_REG_EXTERN = BIT(2),
};
/**
* in a service.
*/
enum ptlrpc_nrs_queue_type {
- PTLRPC_NRS_QUEUE_REG = (1 << 0),
- PTLRPC_NRS_QUEUE_HP = (1 << 1),
+ PTLRPC_NRS_QUEUE_REG = BIT(0),
+ PTLRPC_NRS_QUEUE_HP = BIT(1),
PTLRPC_NRS_QUEUE_BOTH = (PTLRPC_NRS_QUEUE_REG | PTLRPC_NRS_QUEUE_HP)
};
};
#include <lustre_nrs_fifo.h>
+/**
+ * Binary heap node.
+ *
+ * Objects of this type are embedded into objects of the ordered set that is to
+ * be maintained by a \e struct binheap instance.
+ */
+struct binheap_node {
+ /** Index into the binary tree */
+ unsigned int chn_index;
+};
+#ifdef HAVE_SERVER_SUPPORT
#include <lustre_nrs_tbf.h>
#include <lustre_nrs_crr.h>
#include <lustre_nrs_orr.h>
+#endif /* HAVE_SERVER_SUPPORT */
+#include <lustre_nrs_delay.h>
/**
* NRS request
unsigned nr_enqueued:1;
unsigned nr_started:1;
unsigned nr_finalized:1;
- cfs_binheap_node_t nr_node;
+ struct binheap_node nr_node;
/**
* Policy-specific fields, used for determining a request's scheduling
* Fields for the FIFO policy
*/
struct nrs_fifo_req fifo;
+#ifdef HAVE_SERVER_SUPPORT
/**
* CRR-N request defintion
*/
* TBF request definition
*/
struct nrs_tbf_req tbf;
+#endif /* HAVE_SERVER_SUPPORT */
+ /**
+ * Fields for the delay policy
+ */
+ struct nrs_delay_req delay;
} nr_u;
/**
* Externally-registering policies may want to use this to allocate