Skip to content

Commit 517fd6a

Browse files
committed
all tests pass
1 parent d5e71a2 commit 517fd6a

File tree

7 files changed

+171
-126
lines changed

7 files changed

+171
-126
lines changed

run_client.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
pushd ./build/bin || exit 1 # Exit if cd fails
66
export PDC_DEBUG=1
7-
#"./region_transfer_all_append"
8-
"./sandbox"
7+
"./region_transfer_all_append"
8+
#"./sandbox"
99
popd
1010

run_server.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ set -e
66

77
echo "killing previous pdc_server.exe"
88
pkill -f pdc_server.exe || true
9+
lsof -t -i :8000 | xargs -r kill -9
910

1011
echo "deleting existing data"
1112
rm -rf /home/nlewi26/src/work_space/source/pdc/build/bin/pdc_data
1213

1314
pushd ./build/bin
1415
export PDC_DEBUG=1
15-
$1 ./pdc_server.exe
16+
#gdb -ex run --args /pdc_server.exe
17+
gdb -ex "file ./pdc_server.exe" -ex run
1618
popd

run_test.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ echo "deleting existing data"
1111
rm -rf /home/nlewi26/src/work_space/source/pdc/build/bin/pdc_data
1212

1313
pushd ./build
14-
#ctest -L serial --stop-on-failure --output-on-failure
15-
ctest -L serial -I 1,37 -I 39,68
14+
ctest -L serial --stop-on-failure --output-on-failure
15+
#ctest -L serial -I 1,37 -I 39,68
1616
popd

src/server/pdc_client_server_common.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#include <math.h>
5151
#include <sys/shm.h>
5252
#include <sys/mman.h>
53+
#include <errno.h>
5354
#include "pdc_timing.h"
5455
#include "pdc_server_region_cache.h"
5556

@@ -411,12 +412,19 @@ PDC_mkdir(const char *dir)
411412

412413
snprintf(tmp, sizeof(tmp), "%s", dir);
413414

414-
for (p = tmp + 1; *p; p++)
415+
for (p = tmp + 1; *p; p++) {
415416
if (*p == '/') {
416-
*p = 0;
417-
mkdir(tmp, S_IRWXU | S_IRWXG);
417+
*p = '\0';
418+
errno = 0;
419+
if (mkdir(tmp, S_IRWXU | S_IRWXG) < 0) {
420+
if(errno != EEXIST) {
421+
fprintf(stderr, "mkdir failed at %s: ", tmp);
422+
perror("mkdir");
423+
}
424+
}
418425
*p = '/';
419426
}
427+
}
420428

421429
FUNC_LEAVE_VOID;
422430
}

src/server/pdc_server_region/pdc_server_data.c

Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ fill_storage_path(char *storage_location, pdcid_t obj_id, uint64_t region_index)
107107
// Data file name s$pdc_server_rank_g$region_index$.bin
108108
snprintf(storage_location, ADDR_MAX, "%s/pdc_data/%" PRIu64 "/server%d/s%04d_%lu.bin", data_path, obj_id,
109109
pdc_server_rank_g, pdc_server_rank_g, region_index);
110+
111+
printf("HERE\n");
110112
PDC_mkdir(storage_location);
111113
#ifdef ENABLE_LUSTRE
112114
if (pdc_nost_per_file_g != 1)
@@ -380,8 +382,11 @@ PDC_Server_register_obj_region_by_pointer(data_server_region_t **new_obj_reg_ptr
380382

381383
FUNC_ENTER(NULL);
382384

385+
LOG_JUST_PRINT("1\n");
386+
383387
if (new_obj_reg == NULL) {
384-
new_obj_reg = (data_server_region_t *)malloc(sizeof(struct data_server_region_t));
388+
LOG_JUST_PRINT("2\n");
389+
new_obj_reg = (data_server_region_t *)calloc(1, sizeof(struct data_server_region_t));
385390
if (new_obj_reg == NULL) {
386391
ret_value = FAIL;
387392
}
@@ -391,34 +396,33 @@ PDC_Server_register_obj_region_by_pointer(data_server_region_t **new_obj_reg_ptr
391396
new_obj_reg->region_lock_request_head = NULL;
392397
new_obj_reg->region_storage_head = NULL;
393398
new_obj_reg->close_flag = close_flag;
394-
// FIXME: (Noah)
395-
new_obj_reg->storage_location[region_index] = (char *)malloc(sizeof(char) * ADDR_MAX);
399+
new_obj_reg->storage_location[region_index] = (char *)calloc(ADDR_MAX, sizeof(char));
396400
new_obj_reg->region_size_elements = UNITIALIZED_DATA_SERVER_REGION_SIZE_ELEMENTS;
397401
new_obj_reg->fd =
398402
server_open_storage(new_obj_reg->storage_location[region_index], obj_id, region_index);
399403

400404
if (new_obj_reg->fd < 0) {
405+
LOG_ERROR("Failed to open file %s\n", new_obj_reg->storage_location[region_index]);
401406
goto done;
402407
}
403408
DL_APPEND(dataserver_region_g, new_obj_reg);
404409
}
405410
else {
406-
if (new_obj_reg->fd == -1) {
407-
// FIXME: (Noah)
408-
new_obj_reg->storage_location[region_index] = (char *)malloc(sizeof(char) * ADDR_MAX);
411+
LOG_JUST_PRINT("3\n");
412+
if(new_obj_reg->storage_location[region_index] == NULL) {
413+
new_obj_reg->storage_location[region_index] = (char *)calloc(ADDR_MAX, sizeof(char));
414+
}
415+
if(new_obj_reg->storage_location[region_index][0] == 0) {
409416
fill_storage_path(new_obj_reg->storage_location[region_index], obj_id, region_index);
410417
}
418+
411419
if (new_obj_reg->fd < 0) {
412-
if (new_obj_reg->storage_location[region_index] == NULL) {
413-
new_obj_reg->storage_location[region_index] = (char *)malloc(sizeof(char) * ADDR_MAX);
414-
fill_storage_path(new_obj_reg->storage_location[region_index], obj_id, region_index);
415-
}
420+
LOG_JUST_PRINT("4\n");
416421
new_obj_reg->close_flag = close_flag;
417-
// FIXME: (Noah)
418-
new_obj_reg->fd = open(new_obj_reg->storage_location[region_index], O_RDWR | O_CREAT, 0666);
422+
new_obj_reg->fd = server_open_storage(new_obj_reg->storage_location[region_index], obj_id, region_index);
423+
419424
if (new_obj_reg->fd < 0) {
420425
LOG_ERROR("Failed to open file %s\n", new_obj_reg->storage_location[region_index]);
421-
perror("open");
422426
goto done;
423427
}
424428
}
@@ -435,11 +439,12 @@ PDC_Server_unregister_obj_region_by_pointer(data_server_region_t *new_obj_reg, i
435439
perr_t ret_value = SUCCEED;
436440

437441
FUNC_ENTER(NULL);
438-
if (new_obj_reg->close_flag == close_flag && new_obj_reg != NULL) {
442+
if (new_obj_reg != NULL && new_obj_reg->close_flag == close_flag) {
439443
close(new_obj_reg->fd);
440444
new_obj_reg->fd = -2;
441445
}
442446

447+
done:
443448
FUNC_LEAVE(ret_value);
444449
} // End PDC_Server_unregister_obj_region
445450

@@ -4509,6 +4514,10 @@ typedef enum {
45094514
REGION_PER_FILE_IO_TYPE_WRITE,
45104515
} REGION_PER_FILE_IO_TYPE;
45114516

4517+
static int is_fd_valid(int fd) {
4518+
return fcntl(fd, F_GETFD) != -1 || errno != EBADF;
4519+
}
4520+
45124521
static perr_t
45134522
PDC_Server_data_io_from_region_per_file(uint64_t obj_id, struct pdc_region_info *region_info, void *buf,
45144523
size_t unit, REGION_PER_FILE_IO_TYPE io_type)
@@ -4582,6 +4591,10 @@ PDC_Server_data_io_from_region_per_file(uint64_t obj_id, struct pdc_region_info
45824591
// Register the initial region
45834592
PDC_Server_register_obj_region_by_pointer(&region, obj_id, 0, region_index);
45844593

4594+
if(region == NULL) {
4595+
PGOTO_ERROR(FAIL, "Failed to register obj_region by pointer");
4596+
}
4597+
45854598
if (region->region_size_elements == UNITIALIZED_DATA_SERVER_REGION_SIZE_ELEMENTS) {
45864599
region->region_size_elements = num_elements;
45874600
}
@@ -4593,7 +4606,7 @@ PDC_Server_data_io_from_region_per_file(uint64_t obj_id, struct pdc_region_info
45934606
}
45944607

45954608
for (uint64_t count = 0; count < num_elements; count++) {
4596-
printf("cur count: %d\n", count);
4609+
//printf("\tcur count: %d\n", count);
45974610
// Compute flat index
45984611
uint64_t flat_index = 0;
45994612
uint64_t temp_stride = 1;
@@ -4608,10 +4621,18 @@ PDC_Server_data_io_from_region_per_file(uint64_t obj_id, struct pdc_region_info
46084621
uint64_t old_region_size = region->region_size_elements;
46094622
if (region) {
46104623
PDC_Server_unregister_obj_region_by_pointer(region, 0);
4611-
region = NULL;
4624+
region->fd = -1;
46124625
}
4626+
LOG_JUST_PRINT("\told region index: %d\n", region_index);
4627+
LOG_JUST_PRINT("\tnew region index: %d\n", new_region_index);
4628+
LOG_JUST_PRINT("\tflat index: %d\n", flat_index);
46134629
region_index = new_region_index;
46144630
PDC_Server_register_obj_region_by_pointer(&region, obj_id, 0, region_index);
4631+
4632+
if(region == NULL) {
4633+
PGOTO_ERROR(FAIL, "Failed to register obj_region by pointer");
4634+
}
4635+
46154636
region->region_size_elements = old_region_size;
46164637
}
46174638

@@ -4633,14 +4654,19 @@ PDC_Server_data_io_from_region_per_file(uint64_t obj_id, struct pdc_region_info
46334654
}
46344655

46354656
if (res != (ssize_t)unit) {
4657+
if(is_fd_valid(region->fd)) {
4658+
LOG_JUST_PRINT("region->fd was valid\n");
4659+
} else {
4660+
LOG_JUST_PRINT("region->fd %d was invalid\n", region->fd);
4661+
}
46364662
LOG_JUST_PRINT("expected io size %d: actual io size %d\n", unit, res);
46374663
LOG_JUST_PRINT("region size %d, region index: %d\n", region->region_size_elements, region_index);
46384664
LOG_JUST_PRINT("io error storage location: %s\n", region->storage_location[region_index]);
46394665
perror(io_type == REGION_PER_FILE_IO_TYPE_READ ? "pread" : "pwrite");
46404666
PGOTO_ERROR(FAIL, "I/O operation failed\n");
46414667
}
46424668
else {
4643-
LOG_JUST_PRINT("io storage location: %s\n", region->storage_location[region_index]);
4669+
//LOG_JUST_PRINT("\tio storage location: %s\n", region->storage_location[region_index]);
46444670
}
46454671

46464672
// Advance indices
@@ -4658,7 +4684,7 @@ PDC_Server_data_io_from_region_per_file(uint64_t obj_id, struct pdc_region_info
46584684
done:
46594685
if (region) {
46604686
PDC_Server_unregister_obj_region_by_pointer(region, 0);
4661-
region = NULL;
4687+
region->fd = -1;
46624688
}
46634689

46644690
if (indices)

src/server/pdc_server_region/pdc_server_region_request_handler.h

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,24 @@ transfer_request_all_bulk_transfer_read_cb(const struct hg_cb_info *info)
7474
ptr = local_bulk_args2->data_buf;
7575

7676
#ifndef PDC_SERVER_CACHE
77+
78+
LOG_JUST_PRINT("========================READ REQUEST ALL INFO===============================\n");
7779
data_server_region_t **temp_ptrs =
7880
(data_server_region_t **)malloc(sizeof(data_server_region_t *) * request_data.n_objs);
7981
for (i = 0; i < request_data.n_objs; ++i) {
80-
temp_ptrs[i] = PDC_Server_get_obj_region(request_data.obj_id[i]);
81-
// FIXME: Noah
82-
if (temp_ptrs[i]->region_size_elements == UNITIALIZED_DATA_SERVER_REGION_SIZE_ELEMENTS) {
83-
LOG_ERROR("GOING TO GENERATE INCORRECT REGION INDEXES\n");
82+
LOG_JUST_PRINT("obj_id: %d\n", request_data.obj_id[i]);
83+
LOG_JUST_PRINT("\tread io\n");
84+
LOG_JUST_PRINT("\tobj ndim: %d\n", request_data.obj_ndim[i]);
85+
LOG_JUST_PRINT("\tobj unit: %d\n", request_data.unit[i]);
86+
LOG_JUST_PRINT("\tregion ndim[%d]=%d\n", i, request_data.remote_ndim[i]);
87+
for (j = 0; j < request_data.remote_ndim[i]; j++) {
88+
LOG_JUST_PRINT("\tregion size[%d]=%d\n", j, request_data.remote_length[i][j]);
89+
LOG_JUST_PRINT("\tregion offset[%d]=%d\n", j, request_data.remote_offset[i][j]);
8490
}
85-
PDC_Server_register_obj_region_by_pointer(&(temp_ptrs[i]), request_data.obj_id[i], 1, 0);
91+
temp_ptrs[i] = PDC_Server_get_obj_region(request_data.obj_id[i]);
92+
//PDC_Server_register_obj_region_by_pointer(&(temp_ptrs[i]), request_data.obj_id[i], 1, 0);
8693
}
94+
LOG_JUST_PRINT("=====================================END=====================================\n");
8795
#endif
8896
for (i = 0; i < request_data.n_objs; ++i) {
8997
remote_reg_info->ndim = request_data.remote_ndim[i];
@@ -115,7 +123,7 @@ transfer_request_all_bulk_transfer_read_cb(const struct hg_cb_info *info)
115123
}
116124
#ifndef PDC_SERVER_CACHE
117125
for (i = 0; i < request_data.n_objs; ++i) {
118-
PDC_Server_unregister_obj_region_by_pointer(temp_ptrs[i], 1);
126+
//PDC_Server_unregister_obj_region_by_pointer(temp_ptrs[i], 1);
119127
}
120128
free(temp_ptrs);
121129
#endif
@@ -193,9 +201,10 @@ transfer_request_all_bulk_transfer_write_cb(const struct hg_cb_info *info)
193201
data_server_region_t **temp_ptrs =
194202
(data_server_region_t **)malloc(sizeof(data_server_region_t *) * request_data.n_objs);
195203

196-
LOG_JUST_PRINT("========================REQUEST ALL INFO===============================\n");
204+
LOG_JUST_PRINT("========================WRITE REQUEST ALL INFO===============================\n");
197205
for (i = 0; i < request_data.n_objs; ++i) {
198206
LOG_JUST_PRINT("obj_id: %d\n", request_data.obj_id[i]);
207+
LOG_JUST_PRINT("\twrite io\n");
199208
LOG_JUST_PRINT("\tobj ndim: %d\n", request_data.obj_ndim[i]);
200209
LOG_JUST_PRINT("\tobj unit: %d\n", request_data.unit[i]);
201210
LOG_JUST_PRINT("\tregion ndim[%d]=%d\n", i, request_data.remote_ndim[i]);
@@ -208,35 +217,35 @@ transfer_request_all_bulk_transfer_write_cb(const struct hg_cb_info *info)
208217

209218
// FIXME: Noah
210219
// Compute total number of elements
211-
uint64_t num_elements = 1;
220+
/*uint64_t num_elements = 1;
212221
// FIXME: this loops through the obj_ndim instead of the remote ndim
213222
for (int j = 0; j < request_data.obj_ndim[i]; j++) {
214223
num_elements *= request_data.remote_length[i][j];
215224
}
216225
217226
if (temp_ptrs[i]->region_size_elements == UNITIALIZED_DATA_SERVER_REGION_SIZE_ELEMENTS) {
218227
temp_ptrs[i]->region_size_elements = num_elements;
219-
}
228+
}*/
220229

221-
uint64_t region_index = num_elements / temp_ptrs[i]->region_size_elements;
222-
PDC_Server_register_obj_region_by_pointer(temp_ptrs + i, request_data.obj_id[i], 1, region_index);
230+
//uint64_t region_index = num_elements / temp_ptrs[i]->region_size_elements;
231+
//PDC_Server_register_obj_region_by_pointer(temp_ptrs + i, request_data.obj_id[i], 1, 0);
223232
}
224-
LOG_JUST_PRINT("=====================================END===============================\n");
233+
LOG_JUST_PRINT("=====================================END=====================================\n");
225234
#endif
226235

227236
for (i = 0; i < request_data.n_objs; ++i) {
228237
remote_reg_info->ndim = request_data.remote_ndim[i];
229238
remote_reg_info->offset = request_data.remote_offset[i];
230239
remote_reg_info->size = request_data.remote_length[i];
231-
#ifdef PDC_SERVER_CACHE
240+
/*#ifdef PDC_SERVER_CACHE
232241
PDC_transfer_request_data_write_out(request_data.obj_id[i], request_data.obj_ndim[i],
233242
request_data.obj_dims[i], remote_reg_info,
234243
(void *)request_data.data_buf[i], request_data.unit[i]);
235-
#else
244+
#else*/
236245
PDC_Server_transfer_request_io(request_data.obj_id[i], request_data.obj_ndim[i],
237246
request_data.obj_dims[i], remote_reg_info,
238247
(void *)request_data.data_buf[i], request_data.unit[i], 1);
239-
#endif
248+
//#endif
240249

241250
#if 0
242251
uint64_t j;
@@ -257,9 +266,9 @@ transfer_request_all_bulk_transfer_write_cb(const struct hg_cb_info *info)
257266
#endif
258267

259268
#ifndef PDC_SERVER_CACHE
260-
for (i = 0; i < request_data.n_objs; ++i) {
261-
PDC_Server_unregister_obj_region_by_pointer(temp_ptrs[i], 1);
262-
}
269+
//for (i = 0; i < request_data.n_objs; ++i) {
270+
//PDC_Server_unregister_obj_region_by_pointer(temp_ptrs[i], 1);
271+
//}
263272
free(temp_ptrs);
264273
#endif
265274

0 commit comments

Comments
 (0)