Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagec
/**
 * Reserve WAL space and acquire next unused transaction ID
 *
 * \param[in]   mi          Meta instance
 * \param[out]  tx_id       Next unused transaction ID
 *
 * \return                  Zero on success, negative value on error
 */
int bio_wal_reserve(struct bio_meta_instance *mi, uint64_t *tx_id);
 
 /**
  * Compare two transaction IDs (from same WAL instance)
  *
  * \param[in]  mi          Meta instance
  * \param[in]  id1         Transaction ID1
  * \param[in]  id2         Transaction ID2
  *
  * \return                 1: id1 > id2; -1: id1 < id2; 0: id1 == id2;
  */
int bio_wal_id_cmp(struct bio_meta_instance *mi, uint64_t id1, uint64_t id2);

/**
 * Commit WAL transaction
 *
 * \param[in]   mi          Meta instance
 * \param[in]   tx_id       Transaction ID to be committed
 * \param[in]   actv        Vector for changes involved in transaction
 * \param[in]   act_nr      Vector size
 * \param[in]   biod        BIO IO descriptor (Optional)
 *
 * \return                  Zero on success, negative value on error
 */
int bio_wal_commit(struct bio_meta_instance *mi, uint64_t tx_id,
                  struct umem_action *actv, unsigned int act_nr,
                  struct bio_desc *biod);

/**
 * Start checkpoint procedure
 *
 * \param[in]   mi          Meta instance
 * \param[out]  last_id     Highest transaction ID to be checkpointed
 *
 * \return                  Zero on success, negative value on error
 */
int bio_wal_ckp_start(struct bio_meta_instance *mi, uint64_t *last_id);

/**
 * End checkpoint procedure, update WAL header, reclaim log space
 *
 * \param[in]   mi          Meta instance
 * \param[in]   last_id     Highest checkpointed transaction ID
 *
 * \return                  Zero on success, negative value on error
 */
int bio_wal_ckp_end(struct bio_meta_instance *mi, uint64_t last_id);

/**
 * Replay committed transactions on post-crash recovery
 *
 * \param[in]   mi          Meta instance
 * \param[in]   replay_cb   Callback for transaction replay
 *
\param[in]   max_nr      Max number of transactions can be replayed
 *
 * \return                  0:Zero   Nothing to be replayed;
 *                          +ve: Number of replayed transaction;
 *                          -ve: Error on replay;on success, negative value on error
 */
int bio_wal_replay(struct bio_meta_instance *mi,
                  int (*replay_cb)(struct umem_action *actv, unsigned int act_nr),
                  unsigned int max_replay_nr);

Asynchronous bio_iod_post()

...