刘小飞
刘小飞
这家伙很懒,什么也没写!

注册于 4年前

回答
6
文章
2
关注者
0

发布于4年前

image.png
这里更改版本号进行更改判断

  1. static void kv_auto_update(fdb_kvdb_t db)//这个代码是自动更新的源码
  2. {
  3. size_t saved_ver_num, setting_ver_num = db->ver_num;
  4. if (get_kv(db, VER_NUM_KV_NAME, &saved_ver_num, sizeof(size_t), NULL) > 0) {
  5. /* check version number */
  6. if (saved_ver_num != setting_ver_num) {//判断是否更新
  7. struct fdb_kv kv;
  8. size_t i, value_len;
  9. struct kvdb_sec_info sector;
  10. FDB_DEBUG("Update the KV from version %u to %u.\n", saved_ver_num, setting_ver_num);
  11. for (i = 0; i < db->default_kvs.num; i++) {
  12. /* add a new KV when it's not found */
  13. if (!find_kv(db, db->default_kvs.kvs[i].key, &kv)) {
  14. /* It seems to be a string when value length is 0.
  15. * This mechanism is for compatibility with older versions (less then V4.0). */
  16. if (db->default_kvs.kvs[i].value_len == 0) {
  17. value_len = strlen(db->default_kvs.kvs[i].value);
  18. } else {
  19. value_len = db->default_kvs.kvs[i].value_len;
  20. }
  21. sector.empty_kv = FAILED_ADDR;
  22. create_kv_blob(db, §or, db->default_kvs.kvs[i].key, db->default_kvs.kvs[i].value, value_len);
  23. }
  24. }
  25. } else {
  26. /* version number not changed now return */
  27. return;
  28. }
  29. }
  30. set_kv(db, VER_NUM_KV_NAME, &setting_ver_num, sizeof(size_t));
  31. }

回到
顶部

发布
问题

投诉
建议