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;
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);
- 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;
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);
- if (ret < 0) {
+ if (ret < 0 && !is_errno(-ret, EEXIST)) {
free(row_dir);
goto out;
}
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)
+ 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;
- 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)
close(fd);
if (ret < 0)
goto out;
- ret = dump_rows(dump_dir, t);
+ ret = dump_rows(table_dump_dir, t);
out:
+ free(table_dump_dir);
fsck_cleanup(t);
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;