Sage Weil [Thu, 26 Aug 2010 18:28:25 +0000 (11:28 -0700)]
osd: always mark down old hb peers; send map update via cluster link
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.
Sage Weil [Fri, 20 Aug 2010 16:26:34 +0000 (09:26 -0700)]
crush: return error instead of BUGing on bad forcefed mapping
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).
Sage Weil [Fri, 20 Aug 2010 04:47:19 +0000 (21:47 -0700)]
mds: fix ENOTEMPTY checking on rmdir/rename
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.
Sage Weil [Wed, 4 Aug 2010 16:51:12 +0000 (09:51 -0700)]
osd: fix heartbeat to/from map updates
- 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
Takuya ASADA [Tue, 3 Aug 2010 12:21:10 +0000 (21:21 +0900)]
librados.hpp fix
[ 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.
Sage Weil [Mon, 2 Aug 2010 23:27:18 +0000 (16:27 -0700)]
mds: fix cap encoding skipping when snaprealm differs
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).
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.
Sage Weil [Mon, 2 Aug 2010 19:57:36 +0000 (12:57 -0700)]
osd: avoid most of handle_osd_map if there are no new maps in message
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).
Thomas Mueller [Thu, 29 Jul 2010 15:58:17 +0000 (15:58 +0000)]
debian/ceph.logrotate: enhance postrotate for "service" util
[ 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. ]
Thomas Mueller [Thu, 29 Jul 2010 13:02:07 +0000 (15:02 +0200)]
debian: ceph-cfuse: move ceph from Recommends to Suggests
on a standalone fuse client ceph serverside is not needed. if it's
"Recommended" the default behaviour is to install it too. Move it to "Suggests"
that it's not installed by default if one installs just ceph-fuse.
from debian policy:
Suggests:
This is used to declare that one package may be more useful with one or more
others. Using this field tells the packaging system and the user that the listed
packages are related to this one and can perhaps enhance its usefulness, but
that installing this one without them is perfectly reasonable.
Sage Weil [Wed, 28 Jul 2010 19:47:21 +0000 (12:47 -0700)]
osd: drop broken (and useless) PG::merge_log assert
The assert should be olog.backlog, not log.backlog. But it's the same
condition as the if guard that's 3 lines up, making it pretty useless.
Just drop it.
mds: handle this log replay error better:
Log it to the central log so it gets noticed, and
delete the "wrong inode" instead of just unlinking it, to prevent later crashiness.
Sage Weil [Tue, 27 Jul 2010 19:53:20 +0000 (12:53 -0700)]
mds: fix uninitialized LeaseStat for null lease
./include/encoding.h: In member function void
Locker::issue_client_lease(CDentry*, client_t, ceph::bufferlist&, utime_t,
Session*):
./include/encoding.h:80: warning: e.LeaseStat::duration_ms may be used
uninitialized in this function
Before, we would provide "have" and a bool "onetime" flag. The struct was
also screwed up with an extra __le64. Then have=0 was a special case
that meant "give me the latest".
The problem is this is ambiguous between the usual "give me everything
since X" and "give me your latest", because you might actually have 0 and
want 1..current.
Changes protocol and cleans up the struct:
- now "start" and "flags", where only 1 flag (ONETIME) is defined
- clean up sub_want_* methods throughout
- fix all sub_want callers to ask for _start_ (not have) epoch, or 0 for
any/latest
- add a feature bit; talks old clients w/o that bit