diff --git a/Makefile b/Makefile index 8dcc3890d..52da996bd 100644 --- a/Makefile +++ b/Makefile @@ -41,15 +41,15 @@ osd.o: osd.cpp osd.h osd_ops.h osd_peering_pg.h g++ $(CXXFLAGS) -c -o $@ $< osd: ./libblockstore.so osd_main.cpp osd.h osd_ops.h $(OSD_OBJS) g++ $(CXXFLAGS) -o osd osd_main.cpp $(OSD_OBJS) ./libblockstore.so -ltcmalloc_minimal -luring -stub_osd: stub_osd.cpp osd_ops.h - g++ $(CXXFLAGS) -o stub_osd stub_osd.cpp -ltcmalloc_minimal +stub_osd: stub_osd.cpp osd_ops.h rw_blocking.o + g++ $(CXXFLAGS) -o stub_osd stub_osd.cpp rw_blocking.o -ltcmalloc_minimal rw_blocking.o: rw_blocking.cpp rw_blocking.h g++ $(CXXFLAGS) -c -o $@ $< test_osd: test_osd.cpp osd_ops.h rw_blocking.o g++ $(CXXFLAGS) -o test_osd test_osd.cpp rw_blocking.o -ltcmalloc_minimal -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 +libfio_sec_osd.so: fio_sec_osd.cpp osd_ops.h rw_blocking.o + g++ $(CXXFLAGS) -ltcmalloc_minimal -shared -o libfio_sec_osd.so fio_sec_osd.cpp rw_blocking.o -luring test_blockstore: ./libblockstore.so test_blockstore.cpp g++ $(CXXFLAGS) -o test_blockstore test_blockstore.cpp ./libblockstore.so -ltcmalloc_minimal -luring diff --git a/fio_sec_osd.cpp b/fio_sec_osd.cpp index a2ad4acc8..9db76a6fe 100644 --- a/fio_sec_osd.cpp +++ b/fio_sec_osd.cpp @@ -25,6 +25,7 @@ #include #include +#include "rw_blocking.h" #include "osd_ops.h" extern "C" { #define CONFIG_PWRITEV2 @@ -75,9 +76,6 @@ static struct fio_option options[] = { }, }; -static int read_blocking(int fd, void *read_buf, size_t remaining); -static int write_blocking(int fd, void *write_buf, size_t remaining); - static int sec_setup(struct thread_data *td) { sec_data *bsd; @@ -226,54 +224,6 @@ static enum fio_q_status sec_queue(struct thread_data *td, struct io_u *io) return FIO_Q_QUEUED; } - -static int read_blocking(int fd, void *read_buf, size_t remaining) -{ - size_t done = 0; - while (done < remaining) - { - size_t r = read(fd, read_buf, remaining-done); - if (r <= 0) - { - if (!errno) - { - // EOF - return done; - } - else if (errno != EAGAIN && errno != EPIPE) - { - perror("read"); - exit(1); - } - continue; - } - done += r; - read_buf += r; - } - return done; -} - -static int write_blocking(int fd, void *write_buf, size_t remaining) -{ - size_t done = 0; - while (done < remaining) - { - size_t r = write(fd, write_buf, remaining-done); - if (r < 0) - { - if (errno != EAGAIN && errno != EPIPE) - { - perror("write"); - exit(1); - } - continue; - } - done += r; - write_buf += r; - } - return done; -} - static int sec_getevents(struct thread_data *td, unsigned int min, unsigned int max, const struct timespec *t) { sec_data *bsd = (sec_data*)td->io_ops_data; diff --git a/stub_osd.cpp b/stub_osd.cpp index c0e4b24ee..623530c2f 100644 --- a/stub_osd.cpp +++ b/stub_osd.cpp @@ -34,16 +34,13 @@ #include +#include "rw_blocking.h" #include "osd_ops.h" int bind_stub(const char *bind_address, int bind_port); void run_stub(int peer_fd); -static int write_blocking(int fd, void *write_buf, size_t remaining); - -static int read_blocking(int fd, void *read_buf, size_t remaining); - int main(int narg, char *args[]) { int listen_fd = bind_stub("0.0.0.0", 11203); @@ -180,50 +177,3 @@ void run_stub(int peer_fd) } free(buf); } - -static int read_blocking(int fd, void *read_buf, size_t remaining) -{ - size_t done = 0; - while (done < remaining) - { - size_t r = read(fd, read_buf, remaining-done); - if (r <= 0) - { - if (!errno) - { - // EOF - return done; - } - else if (errno != EAGAIN && errno != EPIPE) - { - perror("read"); - exit(1); - } - continue; - } - done += r; - read_buf += r; - } - return done; -} - -static int write_blocking(int fd, void *write_buf, size_t remaining) -{ - size_t done = 0; - while (done < remaining) - { - size_t r = write(fd, write_buf, remaining-done); - if (r < 0) - { - if (errno != EAGAIN && errno != EPIPE) - { - perror("write"); - exit(1); - } - continue; - } - done += r; - write_buf += r; - } - return done; -}