Fixes: #8169
Backport: firefly
We didn't calculate the user manifest's object etag at all. The etag
needs to be the md5 of the contantenation of all the parts' etags.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
There is a race with copy_from cancellation. The internal Objecter
completion decodes a bunch of data and copies it into pointers provided
when the op is queued. When we cancel, we need to ensure that we can cope
until control passes back to our provided completion.
Once we *do* get into the (ReplicatedPG) callbacks, we will bail out
because the tid in the CopyOp or FlushOp no longer matches.
Fix this by carrying a ref to keep the copy-from targets alive, and
clearing out the tids that we cancel.
Note that previously, the trigger for this was that the tid changes when
we handle a redirect, which made the op_cancel() call fail. With the
coming Objecter changes, this will no longer be the case. However, there
are also locking and threading changes that will make cancellation racy,
so we will not be able to rely on it always preventing the callback.
Either way, this will avoid the problem.
Fixes: #7588
Signed-off-by: Sage Weil <sage@inktank.com>
Two users have reported this fixes a problem with using --dmcrypt.
Fixes: #6966
Tested-by: Eric Eastman <eric0e@aol.com>
Signed-off-by: Sage Weil <sage@inktank.com>
It's "/sys/bus/rbd/devices/<id>", but libudev works with devices and
not busses, so it's really "/sys/devices/rbd/<id>/".
Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Init 'snap_protected' with false to fix:
rbd.cc:544:35: warning: variable 'snap_protected' may be uninitialized
when used here [-Wconditional-uninitialized]
f->dump_string("protected", snap_protected ? "true" : "false");
^~~~~~~~~~~~~~
rbd.cc:482:22: note: initialize the variable 'snap_protected' to silence
this warning
bool snap_protected;
^
= false
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Init 'rbd' in open_rbd_image() with NULL and add a check for
'rbd' before dereference it to fix:
rbd_fuse/rbd-fuse.c:182:29: warning: variable 'rbd' may be uninitialized
when used here [-Wconditional-uninitialized]
int ret = rbd_open(ioctx, rbd->image_name, &(rbd->image), NULL);
^~~
rbd_fuse/rbd-fuse.c:151:27: note: initialize the variable 'rbd' to silence
this warning
struct rbd_openimage *rbd;
^
= NULL
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Init 'bool done' with 'false' to fix:
osdc/Objecter.h:915:27: warning: implicit conversion los: variable 'done'
may be uninitialized when used here [-Wconditional-uninitialized]
while (!done)
^~~~
osdc/ObjectCacher.cc:1399:14: note: initialize the variable 'done' to
silence this warning
bool done;
^
= false
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Init best_locality to fix:
osdc/Objecter.cc:1519:26: warning: variable 'best_locality' may be
uninitialized when used here [-Wconditional-uninitialized]
(locality >= 0 && best_locality >= 0 &&
^~~~~~~~~~~~~
osdc/Objecter.cc:1511:19: note: initialize the variable 'best_locality'
to silence this warning
int best_locality;
^
= 0
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Clang:
os/FileJournal.h:224:8: warning: private field 'is_bdev' is not used
[-Wunused-private-field]
Signed-off-by: John Spray <john.spray@inktank.com>
Caught by clang warning that this is a conversion
from "unsigned long" to "unsigned int" which can
lose precision. However, this is the conversion
we want because our serialization format defines
sizes as 4 bytes.
Signed-off-by: John Spray <john.spray@inktank.com>
This fn had a while(1) with no break: if anyone
had called it it would block forever.
Caught by clang's "function 'verify' could be declared
with attribute 'noreturn'" warning.
Signed-off-by: John Spray <john.spray@inktank.com>
When active MDS wants to fragment a replica dirfrag, it should set
the 'replay' parameter of MDCache::adjust_dir_fragments() to false.
It makes sure that CDir::merge/split wake up any dentry waiter.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
After ScatterLock::infer_state_from_strong_rejoin() set scatterlock
to LOCK_MIX state, don't change the scatterlock to other state.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Otherwise the flushing flag may confuse Locker::eval_gather() if MDS later
imports lock's parent inode.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
This used to be handled in _unlink() and _rmdir() even when a trace was
present in the reply, but this is cleaner.
Signed-off-by: Sage Weil <sage@inktank.com>
The graph in quick-ceph-deploy.rst applies to
quick-start-preflight.rst.
The graph in deploy seems more complete, so I put the common
documentation in quick-common.rst and had it included.
doc/conf.py has 'start/quick-common.rst' in exclude patterns so that
sphinx does not complain about this file not being in toc.
Signed-off-by: Kevin Dalley <kevin@kelphead.org>
Fix for cppcheck issue:
[src/osd/ECUtil.h:61]: (style) Clarify calculation
precedence for '%' and '?'.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>