Example #1
0
int
seaf_fsck (GList *repo_id_list)
{
    if (!repo_id_list)
        repo_id_list = seaf_repo_manager_get_repo_id_list (seaf->repo_mgr);

    GList *ptr;
    char *repo_id;
    SeafRepo *repo;

    for (ptr = repo_id_list; ptr; ptr = ptr->next) {
        repo_id = ptr->data;

        seaf_message ("Running fsck for repo %.8s.\n", repo_id);

        repo = seaf_repo_manager_get_repo (seaf->repo_mgr, repo_id);
        if (!repo) {
            if (recover_corrupted_repo_head (repo_id) < 0) {
                seaf_warning ("Failed to recover repo %.8s.\n\n", repo_id);
            } else
                seaf_message ("Fsck finished for repo %.8s.\n\n", repo_id);
            continue;
        }

        check_and_reset_consistent_state (repo);

        seaf_message ("Fsck finished for repo %.8s.\n\n", repo_id);

        seaf_repo_unref (repo);
    }
    return 0;
}
Example #2
0
File: fsck.c Project: rptec/seafile
int
seaf_fsck (GList *repo_id_list, gboolean repair, gboolean esync)
{
    if (!repo_id_list)
        repo_id_list = seaf_repo_manager_get_repo_id_list (seaf->repo_mgr);

    if (esync) {
        enable_sync_repos (repo_id_list);
    } else {
        repair_repos (repo_id_list, repair);
    }

    while (repo_id_list) {
        g_free (repo_id_list->data);
        repo_id_list = g_list_delete_link (repo_id_list, repo_id_list);
    }

    return 0;
}