From c07df76eded572ed39a7370a903b57ab55e65592 Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Thu, 6 Oct 2016 21:16:07 +0100 Subject: [PATCH 1/4] This fixes the compiler warning pointer-to-int-cast in serve.c ``` In file included from src/server/bitset.h:4:0, from src/server/mirror.h:8, from src/server/flexnbd.h:5, from src/server/serve.h:8, from src/server/serve.c:1: src/server/serve.c: In function 'tryjoin_client_thread': src/server/serve.c:258:6: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] (uint64_t)status); ^ ``` --- src/server/serve.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/serve.c b/src/server/serve.c index 649bd5e..de6b871 100644 --- a/src/server/serve.c +++ b/src/server/serve.c @@ -255,7 +255,7 @@ int tryjoin_client_thread( struct client_tbl_entry *entry, int (*joinfunc)(pthre debug("nbd thread %016x exited (%s) with status %ld", entry->thread, s_client_address, - (uint64_t)status); + (uintptr_t)status); client_destroy( entry->client ); entry->client = NULL; entry->thread = 0; From d279eb757068d5fecdd5c4a80522b9f0d5ea5e69 Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Thu, 6 Oct 2016 21:19:15 +0100 Subject: [PATCH 2/4] Fix up "wrong" handle type from char* to uint64_t Following from the NBD handle comparison simplifications. --- tests/unit/check_readwrite.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/unit/check_readwrite.c b/tests/unit/check_readwrite.c index 2432a13..c158d7b 100644 --- a/tests/unit/check_readwrite.c +++ b/tests/unit/check_readwrite.c @@ -46,8 +46,7 @@ void * responder( void *respond_uncast ) struct respond * resp = (struct respond *) respond_uncast; int sock_fd = resp->sock_fds[1]; struct nbd_request_raw request_raw; - char wrong_handle[] = "WHOOPSIE"; - + uint64_t wrong_handle = 0x80; if( fd_read_request( sock_fd, &request_raw ) == -1){ fprintf(stderr, "Problem with fd_read_request\n"); From 52b45e6b4074d4bce86d0f2f38a7f5588d1854d9 Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Thu, 6 Oct 2016 21:22:53 +0100 Subject: [PATCH 3/4] fix check_bitset test on 32-bit platforms The use of `unsigned long` and `UL` suffices caused this test to fail on 32 bit platforms, where these are just 4, not 8 bits long. ``` tests/unit/check_bitset.c:73:F:bit:test_bit_ranges:0: longs[32] = 0 SHOULD BE ffffffff ``` --- tests/unit/check_bitset.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/check_bitset.c b/tests/unit/check_bitset.c index 1dda229..36b4e55 100644 --- a/tests/unit/check_bitset.c +++ b/tests/unit/check_bitset.c @@ -59,7 +59,7 @@ END_TEST START_TEST(test_bit_ranges) { bitfield_word_t buffer[BIT_WORDS_FOR_SIZE(4160)]; - uint64_t *longs = (unsigned long*) buffer; + uint64_t *longs = (uint64_t *) buffer; uint64_t i; memset(buffer, 0, 4160); @@ -67,9 +67,9 @@ START_TEST(test_bit_ranges) for (i=0; i<64; i++) { bit_set_range(buffer, i*64, i); fail_unless( - longs[i] == (1UL< Date: Thu, 6 Oct 2016 21:42:52 +0100 Subject: [PATCH 4/4] Skip large file test on 32-bit platforms This test cannot run on 32-bit machines as they cannot access files large than 2G. Makes flexnbd on 32-bit a bit useless really.. --- tests/acceptance/test_happy_path.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/acceptance/test_happy_path.rb b/tests/acceptance/test_happy_path.rb index c69c117..0a286c8 100644 --- a/tests/acceptance/test_happy_path.rb +++ b/tests/acceptance/test_happy_path.rb @@ -115,6 +115,11 @@ class TestHappyPath < Test::Unit::TestCase def test_write_to_high_block + # + # This test does not work on 32 bit platforms. + # + skip("Not relevant on 32-bit platforms") if ( ["a"].pack("p").size < 8 ) + # Create a large file, then try to write to somewhere after the 2G boundary @env.truncate1 "4G" @env.serve1