Detected during an fsx run where a refresh and CoR were occurring
concurrently. The refresh held the snap_lock and was waiting on
the object_map_lock, while the CoR held object_map_lock and was
waiting for snap_lock.
Fixes: #11577
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
When running tests in parallel with make -jX, the ulimit -u (number of
processor / thread per user) needs to be at least X * 1024. If not it
will fail in mysterious ways. Since there is no convenient way to figure
out the value of X ( see
http://blog.jgc.org/2015/03/gnu-make-insanity-finding-value-of-j.html
for a non trivial an entertaining solution) add a very conservative
check that assumes the user will run make -jX where X is nproc / 2.
It will be annoying for users who want to run make check, not use -j,
and have a low ulimit -u. But the error suggest a way to override this
with
make CHECK_ULIMIT=false check
This is a minor irritation compared to the puzzling behavior of make
check when ulimit is exceeded.
http://tracker.ceph.com/issues/11532Fixes: #11532
Signed-off-by: Loic Dachary <ldachary@redhat.com>
Previously, on an error such as a pool not existing,
the caller doing the check would error out, but
anyone waiting on waiting_for_pool_perm would
block indefinitely (symptom was that reads on a
file with a bogus layout would block forever).
Fix by triggering the wait list on errors and
clear the CHECKING state so that the other callers
also perform the check and find the error.
Additionally, don't return the RADOS error code
up to filesystem users, because it can be
misleading. For example, nonexistent pool is
ENOENT, but we shouldn't give ENOENT on IO
to a file which does exist, we should give EIO.
Signed-off-by: John Spray <john.spray@redhat.com>
Add nss and nspr include dirs to CXX_FLAGS if all dependencies
are found.
the ceph-authtool target needs also ${CRYPTO_LIBS}.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Libnss needs also to check for libnspr and add the related
-l targets to CRYPTO_LIBS, otherwise the build will fail.
Make sure USE_NSS is set correctly to 0 if cryptopp found
and in case nss was found set USE_CRYPTOPP also to 0.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
The nss lib needs the nspr library to build. Add file to
get the nspr lib/includes from the pc file.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
* Explain the development cycle and stable release cycle
* Replace the 18 month duration with the LTS+2 overlap logic
* Explain that the estimated retirement is an educated guess
that depends on the stable release frequency
* Replace Support with Stable in LTS to avoid confusion with
professional services
* Do not promise bugs will be handled, only that they will be triaged
Signed-off-by: Loic Dachary <ldachary@redhat.com>
The modified copyup behavior will need to update snapshot object
maps when performing a copyup since the object will now exist within
all snapshots of the image.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
When the deep-flatten feature is enabled, the remove_parent
class method should also remove the parent from all snapshots.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
AIO operations can be executed with a different snapshot
context from the IoCtx. librbd takes advantage of this
capability to perform a deep object copyup.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
This allows child object to exist through all existing
snapshots as well as HEAD. If the operation was a CoW,
issue the write ops as a separate RADOS op with the
correct snapshot context.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Move AbstractWrite's invocation of copyup to the CopyupRequest
class. The AioRequest write path will now always create a
CopyupRequest, which will now append the actual write ops to the
copyup.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Copy-on-read/write will now use an empty snapshot context to
deep-copy the object through all existing snapshots. With the
deep-flatten feature enabled, the flatten operation will now
disconnect a child image from its parent even if it has existing
snapshots.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
With the fast-diff feature enabled, if the object map marks the
object as _EXISTS, it can only occur due to a write -- otherwise
it would be _EXISTS_CLEAN. Therefore, ensure it is properly
flagged as an updated object for diff_iterate.
Fixes: #11553
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
librbd/librbd.cc: In member function 'int librbd::Image::metadata_get(const string&, std::string*)':
librbd/librbd.cc:845:76: warning: suggest braces around empty body in an 'else' statement [-Wempty-body]
Signed-off-by: Sage Weil <sage@redhat.com>