Add sparse read to ./blockstore_test, link blockstore to libblockstore.so
parent
cf819eb442
commit
5739b02de8
38
Makefile
38
Makefile
|
@ -1,30 +1,46 @@
|
||||||
BLOCKSTORE_OBJS := allocator.o blockstore.o blockstore_impl.o blockstore_init.o blockstore_open.o blockstore_journal.o blockstore_read.o \
|
BLOCKSTORE_OBJS := allocator.o blockstore.o blockstore_impl.o blockstore_init.o blockstore_open.o blockstore_journal.o blockstore_read.o \
|
||||||
blockstore_write.o blockstore_sync.o blockstore_stable.o blockstore_flush.o crc32c.o ringloop.o timerfd_interval.o
|
blockstore_write.o blockstore_sync.o blockstore_stable.o blockstore_flush.o crc32c.o ringloop.o timerfd_interval.o
|
||||||
CXXFLAGS := -g -O3 -Wall -Wno-sign-compare -Wno-comment -Wno-parentheses -Wno-pointer-arith -fPIC -fdiagnostics-color=always
|
CXXFLAGS := -g -O3 -Wall -Wno-sign-compare -Wno-comment -Wno-parentheses -Wno-pointer-arith -fPIC -fdiagnostics-color=always
|
||||||
all: $(BLOCKSTORE_OBJS) test test_blockstore libfio_blockstore.so osd libfio_sec_osd.so
|
all: $(BLOCKSTORE_OBJS) libfio_blockstore.so osd libfio_sec_osd.so test_blockstore
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o
|
rm -f *.o
|
||||||
|
|
||||||
crc32c.o: crc32c.c
|
crc32c.o: crc32c.c
|
||||||
g++ $(CXXFLAGS) -c -o $@ $<
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
json11.o: json11/json11.cpp
|
json11.o: json11/json11.cpp
|
||||||
g++ $(CXXFLAGS) -c -o json11.o json11/json11.cpp
|
g++ $(CXXFLAGS) -c -o json11.o json11/json11.cpp
|
||||||
|
allocator.o: allocator.cpp allocator.h
|
||||||
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
|
ringloop.o: ringloop.cpp ringloop.h
|
||||||
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
|
timerfd_interval.o: timerfd_interval.cpp timerfd_interval.h
|
||||||
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
%.o: %.cpp allocator.h blockstore_flush.h blockstore.h blockstore_impl.h blockstore_init.h blockstore_journal.h crc32c.h ringloop.h xor.h timerfd_interval.h object_id.h
|
%.o: %.cpp allocator.h blockstore_flush.h blockstore.h blockstore_impl.h blockstore_init.h blockstore_journal.h crc32c.h ringloop.h xor.h timerfd_interval.h object_id.h
|
||||||
g++ $(CXXFLAGS) -c -o $@ $<
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
libblockstore.so: $(BLOCKSTORE_OBJS)
|
||||||
|
g++ $(CXXFLAGS) -o libblockstore.so -shared $(BLOCKSTORE_OBJS) -ltcmalloc_minimal -luring
|
||||||
|
libfio_blockstore.so: ./libblockstore.so fio_engine.cpp
|
||||||
|
g++ $(CXXFLAGS) -shared -o libfio_blockstore.so fio_engine.cpp ./libblockstore.so -ltcmalloc_minimal -luring
|
||||||
|
|
||||||
osd_exec_secondary.o: osd_exec_secondary.cpp osd.h osd_ops.h
|
osd_exec_secondary.o: osd_exec_secondary.cpp osd.h osd_ops.h
|
||||||
g++ $(CXXFLAGS) -c -o $@ $<
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
osd_read.o: osd_read.cpp osd.h osd_ops.h
|
osd_read.o: osd_read.cpp osd.h osd_ops.h
|
||||||
g++ $(CXXFLAGS) -c -o $@ $<
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
osd_send.o: osd_send.cpp osd.h osd_ops.h
|
osd_send.o: osd_send.cpp osd.h osd_ops.h
|
||||||
g++ $(CXXFLAGS) -c -o $@ $<
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
osd: $(BLOCKSTORE_OBJS) osd_main.cpp osd.h osd_ops.h osd.o osd_exec_secondary.o osd_read.o osd_send.o json11.o
|
osd.o: osd.cpp osd.h osd_ops.h
|
||||||
g++ $(CXXFLAGS) -ltcmalloc_minimal -o osd osd_main.cpp osd.o osd_exec_secondary.o osd_read.o osd_send.o json11.o $(BLOCKSTORE_OBJS) -luring
|
g++ $(CXXFLAGS) -c -o $@ $<
|
||||||
test: test.cpp
|
osd: ./libblockstore.so osd_main.cpp osd.h osd_ops.h osd.o osd_exec_secondary.o osd_read.o osd_send.o json11.o
|
||||||
g++ $(CXXFLAGS) -o test test.cpp -luring
|
g++ $(CXXFLAGS) -o osd osd_main.cpp osd.o osd_exec_secondary.o osd_read.o osd_send.o json11.o ./libblockstore.so -ltcmalloc_minimal -luring
|
||||||
test_blockstore: $(BLOCKSTORE_OBJS) test_blockstore.cpp
|
|
||||||
g++ $(CXXFLAGS) -o test_blockstore -ltcmalloc_minimal test_blockstore.cpp $(BLOCKSTORE_OBJS) -luring
|
|
||||||
test_allocator: test_allocator.cpp allocator.o
|
|
||||||
g++ $(CXXFLAGS) -o test_allocator test_allocator.cpp allocator.o
|
|
||||||
libfio_blockstore.so: fio_engine.cpp $(BLOCKSTORE_OBJS)
|
|
||||||
g++ $(CXXFLAGS) -ltcmalloc_minimal -shared -o libfio_blockstore.so fio_engine.cpp $(BLOCKSTORE_OBJS) -luring
|
|
||||||
libfio_sec_osd.so: fio_sec_osd.cpp osd_ops.h
|
libfio_sec_osd.so: fio_sec_osd.cpp osd_ops.h
|
||||||
g++ $(CXXFLAGS) -ltcmalloc_minimal -shared -o libfio_sec_osd.so fio_sec_osd.cpp -luring
|
g++ $(CXXFLAGS) -ltcmalloc_minimal -shared -o libfio_sec_osd.so fio_sec_osd.cpp -luring
|
||||||
|
|
||||||
|
test_blockstore: ./libblockstore.so test_blockstore.cpp
|
||||||
|
g++ $(CXXFLAGS) -o test_blockstore test_blockstore.cpp ./libblockstore.so -ltcmalloc_minimal -luring
|
||||||
|
test: test.cpp
|
||||||
|
g++ $(CXXFLAGS) -o test test.cpp -luring
|
||||||
|
test_allocator: test_allocator.cpp allocator.o
|
||||||
|
g++ $(CXXFLAGS) -o test_allocator test_allocator.cpp allocator.o
|
||||||
|
|
|
@ -28,6 +28,10 @@ int main(int narg, char *args[])
|
||||||
main_state = 4;
|
main_state = 4;
|
||||||
else if (main_state == 5)
|
else if (main_state == 5)
|
||||||
main_state = 6;
|
main_state = 6;
|
||||||
|
else if (main_state == 7)
|
||||||
|
main_state = 8;
|
||||||
|
else if (main_state == 9)
|
||||||
|
main_state = 10;
|
||||||
};
|
};
|
||||||
main_cons.loop = [&]()
|
main_cons.loop = [&]()
|
||||||
{
|
{
|
||||||
|
@ -39,9 +43,9 @@ int main(int narg, char *args[])
|
||||||
op.opcode = BS_OP_WRITE;
|
op.opcode = BS_OP_WRITE;
|
||||||
op.oid = { .inode = 1, .stripe = 0 };
|
op.oid = { .inode = 1, .stripe = 0 };
|
||||||
op.version = 0;
|
op.version = 0;
|
||||||
op.offset = 4096;
|
op.offset = 16384;
|
||||||
op.len = 4096;
|
op.len = 4096;
|
||||||
op.buf = (uint8_t*)memalign(512, 4096);
|
op.buf = (uint8_t*)memalign(512, 128*1024);
|
||||||
memset(op.buf, 0xaa, 4096);
|
memset(op.buf, 0xaa, 4096);
|
||||||
bs->enqueue_op(&op);
|
bs->enqueue_op(&op);
|
||||||
main_state = 1;
|
main_state = 1;
|
||||||
|
@ -67,6 +71,48 @@ int main(int narg, char *args[])
|
||||||
bs->enqueue_op(&op);
|
bs->enqueue_op(&op);
|
||||||
main_state = 5;
|
main_state = 5;
|
||||||
}
|
}
|
||||||
|
else if (main_state == 6)
|
||||||
|
{
|
||||||
|
printf("stabilizing version %lu\n", version);
|
||||||
|
op.opcode = BS_OP_STABLE;
|
||||||
|
op.len = 1;
|
||||||
|
*((obj_ver_id*)op.buf) = {
|
||||||
|
.oid = { .inode = 1, .stripe = 0 },
|
||||||
|
.version = version,
|
||||||
|
};
|
||||||
|
bs->enqueue_op(&op);
|
||||||
|
main_state = 7;
|
||||||
|
}
|
||||||
|
else if (main_state == 8)
|
||||||
|
{
|
||||||
|
printf("reading 0-128K\n");
|
||||||
|
op.opcode = BS_OP_READ;
|
||||||
|
op.oid = { .inode = 1, .stripe = 0 };
|
||||||
|
op.version = UINT64_MAX;
|
||||||
|
op.offset = 0;
|
||||||
|
op.len = 128*1024;
|
||||||
|
bs->enqueue_op(&op);
|
||||||
|
main_state = 9;
|
||||||
|
}
|
||||||
|
else if (main_state == 10)
|
||||||
|
{
|
||||||
|
void *cmp = memalign(512, 128*1024);
|
||||||
|
memset(cmp, 0, 128*1024);
|
||||||
|
memset(cmp+16384, 0xaa, 4096);
|
||||||
|
int ok = 1;
|
||||||
|
for (int i = 0; i < 128*1024; i += 4096)
|
||||||
|
{
|
||||||
|
if (memcmp(cmp+i, op.buf+i, 4096) != 0)
|
||||||
|
{
|
||||||
|
printf("bitmap works incorrectly, bytes %d - %d differ (%02x, should be %02x)\n", i, i+4096, ((uint8_t*)op.buf)[i], ((uint8_t*)cmp)[i]);
|
||||||
|
ok = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ok)
|
||||||
|
printf("bitmap works correctly\n");
|
||||||
|
free(cmp);
|
||||||
|
main_state = 11;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ringloop->register_consumer(main_cons);
|
ringloop->register_consumer(main_cons);
|
||||||
|
|
Loading…
Reference in New Issue