# This makes it less annoying to build on non-mpi hosts for dev work, and seems to
# behave just fine... change ${CC} back to mpicxx if you get paranoid.
CC = g++
-CFLAGS = -g -I. -D_FILE_OFFSET_BITS=64 -DMPICH_IGNORE_CXX_SEEK -D_REENTRANT -D_THREAD_SAFE
+CFLAGS = -pg -g -I. -D_FILE_OFFSET_BITS=64 -DMPICH_IGNORE_CXX_SEEK -D_REENTRANT -D_THREAD_SAFE
LIBS = -lpthread -lrt
#for normal machines
common/Timer.o\
config.o
-OBFS_OBJS= \
- obfs/uofs_mem.o\
- obfs/uofs_disk_io.o\
- obfs/uofs_alloc.o\
- obfs/uofs_mapping.o\
- obfs/uofs_cache.o\
- obfs/uofs_onode.o\
- obfs/uofs_rw.o\
- obfs/uofs_stat.o\
- obfs/uofs.o
-
TEST_TARGETS = fakemds mpitest
-TARGETS = import singleclient mpifuse fakefuse mpisyn
+TARGETS = import singleclient mpifuse fakefuse mpisyn fakesyn tcpsyn
SRCS=*.cc */*.cc
${MPICC} -DUSE_OBFS ${MPICFLAGS} ${MPILIBS} $^ -o $@ ../uofs/uofs.a
fakesyn: fakesyn.cc mds/allmds.o client/Client.o client/SyntheticClient.o osd/OSD.o msg/FakeMessenger.o ${COMMON_OBJS}
- ${CC} -pg ${CFLAGS} ${LIBS} $^ -o $@
+ ${CC} ${CFLAGS} ${LIBS} $^ -o $@
fakefuse: fakefuse.cc mds/allmds.o client/Client.o osd/OSD.o client/fuse.o msg/FakeMessenger.cc ${COMMON_OBJS}
${CC} -pg ${CFLAGS} ${LIBS} -lfuse $^ -o $@
else if (strcmp(argv[i], "--log_name") == 0)
g_conf.log_name = argv[++i];
+ else if (strcmp(argv[i], "--fakemessenger_serialize") == 0)
+ g_conf.fakemessenger_serialize = atoi(argv[++i]);
+
else if (strcmp(argv[i], "--mds_cache_size") == 0)
g_conf.mds_cache_size = atoi(argv[++i]);
// assignment operator
bufferptr& operator=(const bufferptr& other) {
// discard old
- if (_buffer && _buffer->_put() == 0)
- delete _buffer;
+ discard_buffer();
// new
_buffer = other._buffer;
}
~bufferptr() {
+ discard_buffer();
+ }
+
+ void discard_buffer() {
if (_buffer) {
bufferlock.Lock();
if (_buffer->_put() == 0)
// just add another buffer.
// alloc a bit extra, in case we do a bunch of appends. FIXME be smarter!
- if (alen < 128) alen = 128;
- push_back(new buffer(data, len, BUFFER_MODE_DEFAULT, alen));
+ if (alen < 1024) alen = 1024;
+ push_back(new buffer(data, len, BUFFER_MODE_DEFAULT, len+alen));
}
void append(bufferptr& bp) {
push_back(bp);
m->reset_payload();
m->encode_payload();
msg_envelope_t env = m->get_envelope();
- bufferlist bl = m->get_payload();
+ bufferlist bl;
+ bl.claim( m->get_payload() );
+ bl.c_str(); // condense into 1 buffer
delete m;
// decode
m = decode_message(env, bl);
assert(m);
- }
+ }
didone = true;