X-Git-Url: http://git.tuebingen.mpg.de/?p=osl.git;a=blobdiff_plain;f=fsck.c;h=68e31078892e08edcd4fc7e193b5ebdbd9ccf54f;hp=6f136719358a1889816f245862ed00caeee4efe8;hb=6d7dce7f277fc8606fb8d5ed6360660c13a218af;hpb=e7cfbde4fc1a29fa5edad3a526802d8281acfa10 diff --git a/fsck.c b/fsck.c index 6f13671..68e3107 100644 --- a/fsck.c +++ b/fsck.c @@ -15,7 +15,7 @@ #include "log.h" #include "osl.h" #include "error.h" -#include "fd.h" +#include "util.h" #include "osl_core.h" #include "fsck.cmdline.h" @@ -407,13 +407,8 @@ static int check_index_ranges(struct osl_table *t) continue; ret = check_range(t, i, j); if (ret < 0) { - if (ret != -E_OSL_INVALID_OBJECT && - ret != -E_FSCK_RANGE_VIOLATION) + if (ret != -E_FSCK_RANGE_VIOLATION) goto err; - if (ret == -E_OSL_INVALID_OBJECT) { - CRIT_LOG("row %d, col %d maps to an " - "invalid object\n", i, j); - } ret = mark_row_invalid(t, i); if (ret < 0) goto err; @@ -517,14 +512,9 @@ static int check_for_invalid_objects(struct osl_table *t, uint32_t **lost_bytes) for (j = 0; j < t->num_rows; j++) { struct osl_object obj; ret = get_mapped_object(t, i, j, &obj); - if (ret >= 0) { - loss[i] -= obj.size + 1; /* add one for header byte */ - continue; - } - if (ret != -E_OSL_INVALID_OBJECT) + if (ret < 0) goto err; - CRIT_LOG("row %d, col %d points to an invalid " - "mapped object, bad\n", j, i); + loss[i] -= obj.size; } } ret = 0; @@ -754,7 +744,7 @@ static unsigned files_pruned; int prune_disk_storage_file(const char *path, void *private_data) { HASH_TYPE hash[HASH_SIZE]; - unsigned flags = *(unsigned *)private_data; + uint8_t flags = *(uint8_t *)private_data; struct osl_object obj = {.data = hash, .size = HASH_SIZE}; struct osl_row *row; int ret = -1; @@ -811,8 +801,9 @@ static int prune_disk_storage_files(struct osl_table *t) INFO_LOG("looking for unreferenced disk storage files\n"); FOR_EACH_DISK_STORAGE_COLUMN(i, t, cd) { char *dirname = column_filename(t, i); + uint8_t flags = t->desc->flags; ret = for_each_file_in_dir(dirname, prune_disk_storage_file, - (unsigned *)&t->desc->flags); + &flags); free(dirname); } if (files_pruned)