sosd: Fix uninitialized variable use.
In break lock, instead of cheking the return value of the rados call, weerroneously checked an uninitialized local variable.
peer.c: Call custom peer finalize with st_threads
mapperd: Fix signaling bug when load/open fails.
When a map load/open fails, any other threads that tried to get the map duringthese operations wait on the map. If any of these operations fail, the cache wasdropped, without signaling any of the waiters. This commit fixes this bug, by...
mapperd: Add debug messages for copyup target
bench: Fix target to not include null termination.
Request of the target must not be null terminated. Remove null termination fromthe requests constructed by peers.
Rename archipelago peers with archip- prefix
mapperd: Add debug message to signal map and put map
Adjust mt-sosd to the new RADOS lock API.
mapperd: Always sleep before checking request state.(cherry picked from commit e0f306aa00f5aefa72dc4f607876ee87ddc2ea37)
Add wrapper function for ST peerd loop.(cherry picked from commit d932df7a6a3ae8b17d9e0981fcb3ee2af059324c)
Conflicts: xseg/peers/user/peer.c
Fix bug in mapperd.
When signaling map, use signal_broadcast to wake up all waiters instead of justone, to avoid missing signals when cached is dropped for the map.(cherry picked from commit 2b91a67a55cdd9b6a16fd54e3e87389aa181a7ee)
Make peers close stdin when entering daemon mode.(cherry picked from commit 04ea45339fd0e5a92c3290807805766acc1e7223)
Remove async unsafe functions from signal handlers(cherry picked from commit 2d2a24a26ff9f3a7fd651b1c2386fbd31166a5e1)
peer: Move peerd_loop plug out of peer_reqs loop
The plugging of generic_peerd_loop to peerd_loop was falsely done insidea loop where peer_reqs were initialized. The plugging has now been movedout of this loop.
bench: Flush stdout when printing progress results
bench: Fix issuing of read/write requests
Due to no initialization of struct bench, some "ifs" in the code wouldshow different behavior depending on the junk values they would check.Now however, there is proper initialization of struct bench.
Add progress report for bench
Progress report is turned on by default. It reports every 5% the currentrequest status.Also, we now make sure to terminate only if all peer requests are free.
bench: Change prefixes of static functions
In this repo, a static helpder function is prefixed with "__". However,some static helper functions in bench-utils.c where prefixed with asingle underscore ("_"), so we updated their names to be consistent with...
bench: Include bandwidth and IOPS in results
Add a fallback clock for portability reasons
Remove unused stuff and reduce warnings
Remove unused pthread_* stuff and modify variable location to reduce warningsbecause of the define-based compilation.
Split peer request queues.
Each thread has its own peer request queue, frow which it allocates data. Ifthis queue is empty, it tries to "steal" from the "next" thread. This greatlyreduces lock congestion to the peer request queue.
Fix peer termination.
Peer checks if all peer requests are free in all thread, and then proceeds togracefull shutdown.
Also introduce pthread specific variable, holding the struct thread for eachthread.
Fix queue size of per thread queue.
Add compilation warning about MT and ST_THREADS
Add check to not respond request if none associated.
Fix clean option in Makefile
Build only the necessary peers.
Fix LFSR spin bug
Style changes
Add option for read/write ops to hit unique objs
Read/write ops can now use the -to option, instead of the -ts option, tomake each read/write request touch a different object.
Add request cap
Implemented by popular request, the request cap option allows thebenchmarking peer to stop the benchmark earlier, at a given numberof received requests.
Fix verification full mode
Improve LFSR implementation
Also, prepare the code for the addition of verification support
Add skeleton for verification in write path
Refactor struct bench and appropriate code paths
Changes:
1. Move flag values (such as pattern, insanity, verify) in a specific bit-field.2. Create a struct req_status where the status of requests will be stored.3. Tidy up code.
Rationale:
1. For parameters that can have only a few different values, it's an...
Add partial support for verification
Adds an option to choose between verification modes:
1. meta: On this mode, we write our signature both at the start and the end of the chunk size. It should be very fast and moderately safe, due to the fact that corruptions happen it the chunk's edges....
Change input option to bench
Since -dp is reserved in peer as defer port number, we change the -dpoption in bench (which stood for "destination port") to -tp, whichstands for "target port".
Get correct iodepth
Allow LFSR to be used for sizes smaller than 2^3
Minor fixes
Add support for seed values given by the user
A new option has been added (--seed) which allows the user to pre-definethe seed that he/she wants. This has the following effects:
Print more useful results
Make bench snappier when asked to terminate
Fix identation
Fix incorrect reading of "insanity" parameter
Fix LFSR behavior
Tweak performance of bench
Fix signal handling of peers
Implement most semi-finished functionalities
Summary of new functionalities:
Increment completed requests of insane timers
Even if a timer is not used for a benchmark, we need to increment itscompleted requests since these are needed to calculate how many requestsare left etc.
Fix target names and chunk offsets
Fix flag handling of struct bench
Design the program's skeleton for new features
Bench peer must be able to test all xseg operations in a synchronous orasynchronous way. Also, it must have a validation mode to sanity-checkif xseg requests are issued properly. Most of the above are present in...
Add utility functions to header file
Add an LFSR PRNG for bench
The PRNG introduced by this commit is a Galois-XNOR LFSR, which cangenerate unique pseudorandom numbers. Also, seeded with the sameseed, it will produce the same sequence.
This implementation is driven by the needs of XSEG for a blazing fast...
Make bench send requests faster
Alpha release of bench peer
On this release, the bench peer can measure the total elapsed timeof the benchmark. TODO:
Initial support for xseg ops
Fix segfault, parameters validation
Fix missing function declaration
Simplify port binding code
Complete unification of thread_loop/peerd_loop
Fix timers and add them to critical paths
Fixed incorrect handling of elapsed time and used appropriate timers tobenchmark crtical paths.
Keep naming in peerd_loop consistent
Fix segfault
Unify thread loop with peerd_loop
Since peerd_loop with thread_loop don't have many differences betweenthem, they can be unified in a single loop. TODO is to choose a unifiedname for both threads and peers, as well as fault check theimplementation.
Add support for custom peer loop
There is a new field in struct peerd called "custom_peerd_loop". If anypeer wants to use its own loop instead of the generic loop, it can plugit in that field.
Add timer implementation
This an initial timer implementation. It is not very polished at themomment and some implementation choices will have to be reviewed lateron.
Add initial support for benchmarking xseg
Parse and error-check arguments
Add S_IWUSR permission bit for O_CREAT
In Ubuntu haven't tested it elsewhere yet gcc has a global cflagcalled "D_FORTIFY_SOURCE=2" that errs when files are not createdwith explicit user permissions. Since files are O_WRONLY, I addedthe S_IWUSR permission bit.
Add defer support to peers
Add support to peer skeleton to defer requests to another peer, by forwardingrequests to another port.
Reimplement xseg paths and add xseg_forward
Reimplement xseg paths. Paths are a tool for the administrator to dynamicallyalter a running xseg setup, by forcing a request to be submitted to a differentport than the original destination.
xseg_forward, on the other hand, allows a peer to alter the normal path of a...
Remove dummy, vlmc-xseg, pfiled from peers build.
Mapper: use merkle hash to calculate name of snapshot
Fix compilation warnings
Fix warning for possibly uninitialized value
Make xsegbd use xseg_reply_info struct
add python bindings support to vlmc tool
Fix wrong mapper op
Add debug messages in vlmcd.
Also fix vlmc, vlmc-xseg tool to send snapshot requests to vlmcd
Add volume freeze functionality for certain ops to vlmcd
Fix request resizing in mapper snapshot
add snapshot support to vlmc-xseg tool
add snapshot functionality in xseg-tool
add mt-sosd stat before writing in snapshotting
fix output when stat is successful in snapshot
make mapper delete the old object in a snapshot
add snapshot support in mt-sosd
add snapshot support in mapperd
Refactor the build system
Add make install support
fix mapper to handle X_OPEN.
Also fix nr_obj in cloned volume
change open/close to acquire/release xseg ops. also add handle_open
add support for X_OPEN to vlmcd.
change open/close to acquire release in mt-sosd
change open/close to acquire/release in mt-pfiled
make peers use macros for reading args. also remove some peer compilation warnings