projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Kill afd->current_play_mode.
[paraslash.git]
/
fsck.c
diff --git
a/fsck.c
b/fsck.c
index 5f95b74fa1ed74dd5aca25e4bad749b42aa7068f..48fae27d490bf2021f85682616e2503341f5fe83 100644
(file)
--- a/
fsck.c
+++ b/
fsck.c
@@
-176,7
+176,7
@@
static int map_index(const struct osl_table_description *desc, struct osl_object
char *filename = index_filename(desc);
int ret;
char *filename = index_filename(desc);
int ret;
- ret = mmap_full_file(filename, O_RDWR,
map
);
+ ret = mmap_full_file(filename, O_RDWR,
&map->data, &map->size, NULL
);
PARA_INFO_LOG("mapping index %s: ret: %d, size: %zu\n", filename, ret, map->size);
free(filename);
return ret;
PARA_INFO_LOG("mapping index %s: ret: %d, size: %zu\n", filename, ret, map->size);
free(filename);
return ret;
@@
-571,6
+571,7
@@
static int check_disk_storage_columns(struct osl_table *t)
out_close_hash_tree:
osl_close_table(hash_tree_table, 0);
free(hashes);
out_close_hash_tree:
osl_close_table(hash_tree_table, 0);
free(hashes);
+ hashes = NULL;
out:
clear_rbtrees(t); /* TODO why are we doing that here? Seems odd */
return ret;
out:
clear_rbtrees(t); /* TODO why are we doing that here? Seems odd */
return ret;
@@
-750,14
+751,14
@@
static int dump_row(struct osl_table *t, unsigned row_num, const char *row_dir)
if (!t->num_disk_storage_columns)
return 1;
dsnc = t->disk_storage_name_column;
if (!t->num_disk_storage_columns)
return 1;
dsnc = t->disk_storage_name_column;
- ret = get_mapped_object(t, dsnc,
i
, &obj);
+ ret = get_mapped_object(t, dsnc,
row_num
, &obj);
if (ret < 0)
return ret;
hash_object(&obj, hash);
ds_name = disk_storage_name_of_hash(t, hash);
FOR_EACH_DISK_STORAGE_COLUMN(i, t, cd) {
filename = disk_storage_path(t, i, ds_name);
if (ret < 0)
return ret;
hash_object(&obj, hash);
ds_name = disk_storage_name_of_hash(t, hash);
FOR_EACH_DISK_STORAGE_COLUMN(i, t, cd) {
filename = disk_storage_path(t, i, ds_name);
- ret = mmap_full_file(filename, O_RDONLY, &obj);
+ ret = mmap_full_file(filename, O_RDONLY, &obj
.data, &obj.size, NULL
);
free(filename);
if (ret < 0)
goto out;
free(filename);
if (ret < 0)
goto out;
@@
-788,12
+789,12
@@
static int dump_rows(char *dump_dir, struct osl_table *t)
current_dir = make_message("%s/rows_%u-%u", dump_dir, i, i + 999);
PARA_NOTICE_LOG("dumping rows %u - %u\n", i, i + 999);
ret = para_mkdir(current_dir, 0777);
current_dir = make_message("%s/rows_%u-%u", dump_dir, i, i + 999);
PARA_NOTICE_LOG("dumping rows %u - %u\n", i, i + 999);
ret = para_mkdir(current_dir, 0777);
- if (ret < 0)
+ if (ret < 0
&& !is_errno(-ret, EEXIST)
)
goto out;
}
row_dir = make_message("%s/row_%03u", current_dir, i);
ret = para_mkdir(row_dir, 0777);
goto out;
}
row_dir = make_message("%s/row_%03u", current_dir, i);
ret = para_mkdir(row_dir, 0777);
- if (ret < 0) {
+ if (ret < 0
&& !is_errno(-ret, EEXIST)
) {
free(row_dir);
goto out;
}
free(row_dir);
goto out;
}
@@
-812,13
+813,18
@@
static int dump_table(char *dump_dir, struct osl_table_description *desc)
struct osl_table *t = NULL;
int fd, ret = fsck_init(desc, &t);
char *desc_file;
struct osl_table *t = NULL;
int fd, ret = fsck_init(desc, &t);
char *desc_file;
+ char *table_dump_dir = NULL;
if (ret < 0)
goto out;
ret = para_mkdir(dump_dir, 0777);
if (ret < 0)
goto out;
ret = para_mkdir(dump_dir, 0777);
- if (ret < 0)
+ if (ret < 0 && !is_errno(-ret, EEXIST))
+ goto out;
+ table_dump_dir = make_message("%s/%s", dump_dir, desc->name);
+ ret = para_mkdir(table_dump_dir, 0777);
+ if (ret < 0 && !is_errno(-ret, EEXIST))
goto out;
goto out;
- desc_file = make_message("%s/table_description.c", dump_dir);
+ desc_file = make_message("%s/table_description.c",
table_
dump_dir);
ret = para_open(desc_file, O_WRONLY | O_CREAT | O_EXCL, 0644);
free(desc_file);
if (ret < 0)
ret = para_open(desc_file, O_WRONLY | O_CREAT | O_EXCL, 0644);
free(desc_file);
if (ret < 0)
@@
-828,8
+834,9
@@
static int dump_table(char *dump_dir, struct osl_table_description *desc)
close(fd);
if (ret < 0)
goto out;
close(fd);
if (ret < 0)
goto out;
- ret = dump_rows(dump_dir, t);
+ ret = dump_rows(
table_
dump_dir, t);
out:
out:
+ free(table_dump_dir);
fsck_cleanup(t);
return ret;
}
fsck_cleanup(t);
return ret;
}
@@
-920,7
+927,7
@@
static int check_all_tables(char *base_dir)
return ret;
}
return ret;
}
-int main(
__a_unused
int argc, char **argv)
+int main(int argc, char **argv)
{
int i, ret;
char *base_dir = NULL;
{
int i, ret;
char *base_dir = NULL;