pcloudcc-lneely/pclsync/debug/pfstasks_debug.c

52 lines
2.0 KiB
C

// debug/pfstasks_debug.c - debug implementations for pfstasks debug helpers
#include "pdbg.h"
#include "pfstasks.h"
#include "pfstasks_internal.h"
void pfstasks_debug_check_folder_consistency(psync_fstask_folder_t *folder) {
if ((!!folder->taskscnt) !=
(folder->creats || folder->mkdirs || folder->rmdirs || folder->unlinks))
pdbg_logf(D_ERROR, "taskcnt=%u, c=%p, m=%p, r=%p, u=%p",
(unsigned)folder->taskscnt, folder->creats, folder->mkdirs,
folder->rmdirs, folder->unlinks);
}
void pfs_task_dump_state() {
psync_fstask_folder_t *folder;
psync_fstask_mkdir_t *mk;
psync_fstask_rmdir_t *rm;
psync_fstask_creat_t *cr;
psync_fstask_unlink_t *un;
uint32_t cnt;
ptree_for_each_element(folder, folders, psync_fstask_folder_t, tree) {
pdbg_logf(D_NOTICE, "open folderid %ld taskcnt %u refcnt %u",
(long)folder->folderid, (unsigned)folder->taskscnt,
(unsigned)folder->refcnt);
cnt = 0;
ptree_for_each_element(mk, folder->mkdirs, psync_fstask_mkdir_t, tree) {
pdbg_logf(D_NOTICE, " mkdir %s folderid %ld taskid %lu", mk->name,
(long)mk->folderid, (unsigned long)mk->taskid);
cnt++;
}
ptree_for_each_element(rm, folder->rmdirs, psync_fstask_rmdir_t, tree) {
pdbg_logf(D_NOTICE, " mkdir %s folderid %ld taskid %lu", rm->name,
(long)rm->folderid, (unsigned long)rm->taskid);
cnt++;
}
ptree_for_each_element(cr, folder->creats, psync_fstask_creat_t, tree) {
pdbg_logf(D_NOTICE, " creat %s fileid %ld taskid %lu", cr->name,
(long)cr->fileid, (unsigned long)cr->taskid);
cnt++;
}
ptree_for_each_element(un, folder->unlinks, psync_fstask_unlink_t, tree) {
pdbg_logf(D_NOTICE, " unlink %s fileid %ld taskid %lu", un->name,
(long)un->fileid, (unsigned long)un->taskid);
cnt++;
}
if (cnt != folder->taskscnt)
pdbg_logf(D_ERROR, "inconsistency found, counted taskcnt %u != taskcnt %u",
(unsigned)cnt, (unsigned)folder->taskscnt);
}
}