If we don't mark down the hb link immediately, we'll forget about it
because it won't be in the from or to set anymore, and if it does go down
later we'll end up with garbage in the logs.
Instead, always mark it down. Since we want to share our map with old
peers that are still up, do that via the cluster link instead, which is
reliably marked down if/when the peer goes down.
Signed-off-by: Sage Weil <sage@newdream.net>
The forcefed mapping relies on a parent map. However, the current
implementation assumes that the parent mapping is unique for all rules. If
that is not the case (i.e., some osd exists in multiple hierarchies) then
we cannot assert that the TAKE matches the calculated force_context.
For now, we can just fail the mapping in that case (we don't use forcefed
mappings yet). The real solution is probably to define parent maps for
all possible hierarchies (i.e., starting at each unique TAKE starting
point).
Signed-off-by: Sage Weil <sage@newdream.net>
We can't trust the inode rstat size without holding the locks. We can
look at our auth frags and though without fear of a false positive
ENOTEMPTY, however.
Rename the function, introduce a helper for the locked check, update
comments, etc.
This fixes a race when reading and deleting objects, as evidenced by
cp bigfile a
mkdir .snap/foo
rmdir a
diff bigfile .snap/foo/a <-- reads cloned object before it hits disk
Reproduced by snaptest-snap-rm-cmp.sh.
Signed-off-by: Sage Weil <sage@newdream.net>
- always make _inst match _to and _from (don't adjust in note_down_osd)
- only mark down old hb connection in update_heartbeat_peers
- if old peer isn't down, send them a map
- don't print dup new/old messages
Signed-off-by: Sage Weil <sage@newdream.net>
We can safely reply if oldv is _older_ than what's on disk. Otherwise the
request ends up on the list and never gets removed again.
Signed-off-by: Sage Weil <sage@newdream.net>
[ The following text is in the "UTF-8" character set. ]
[ Your display is set for the "iso-8859-1" character set. ]
[ Some characters may be displayed incorrectly. ]
Hi,
I just realized librados.hpp could compile only if "using namespace
std;" is declared before "#include <rados/librados.hpp>", because
"vector" used without std namespace, and I think it's wrong.
It can fix following patch.
syuu
Signed-off-by: Sage Weil <sage@newdream.net>
We were avoiding adding a new cap, but _any_ issue is problematic, not just
adds (which we can't really be sure about anyway due to races with client
cap release).
Signed-off-by: Sage Weil <sage@newdream.net>
The only thing I've found, is that the *.so files are included in the -devel
rpm. This leads to the fact that the 'find' in cclass doesn't return any
files. I'd suggest the attached change in the script.
Christian
Signed-off-by: Sage Weil <sage@newdream.net>
We don't want to take the time to flush things to disk and shut down all
the worker threads if there is nothing new in the osdmap update (as is
usually the case).
Signed-off-by: Sage Weil <sage@newdream.net>
the reload command prints to stdout. example:
# service ceph reload
=== mon.0 ===
Reloading Ceph mon0 on hoe001...kill -1 22197...done
=== osd.0 ===
Reloading Ceph osd0 on hoe001...kill -1 22263...done
"properly" configured systems will send the output by mail to
the administrator - this is not desired in case of successfull
reloading.
Signed-off-by: Thomas Mueller <thomas@chaschperli.ch>
Signed-off-by: Sage Weil <sage@newdream.net>