Commit Graph

7357 Commits

Author SHA1 Message Date
Sage Weil
1eae016846 osd: make add_next_entry behave when we start at backlog split point
Weaken the assertions a bit and just adjust missing appropriately.
Things may not match up perfectly if the split point is a backlog
entry, so just make missing what it should be a worry less about
what it was.

Here is the specific crash:

09.06.18 16:29:15.085353 1124096336 osd1 10 pg[1.8( v 5'4/3'2 (0'0,5'4] n=2 ec=2 les=10 10/3) r=1 lcod 0'0 stray m=1] my log = log(0'0,5'4]+backlog
3'1 (0'0) m 200.00000000/head by mds0.1:1 09.06.18 16:20:07.524996 indexed
3'2 (0'0) m 2.00000000/head by mds0.1:5 09.06.18 16:20:07.527454 indexed
5'3 (3'1) m 200.00000000/head by mds0.1:23 09.06.18 16:20:25.128842 indexed
5'4 (5'3) m 200.00000000/head by mds0.1:35 09.06.18 16:20:48.623669 indexed

09.06.18 16:29:15.085393 1124096336 osd1 10 pg[1.8( v 5'4/3'2 (0'0,5'4] n=2 ec=2 les=10 10/3) r=1 lcod 0'0 stray m=1] osd2 log = log(8'68,9'69]+backlog
3'2 (0'0) b 2.00000000/head by mds0.1:5 09.06.18 16:20:07.527454
9'69 (8'68) m 200.00000000/head by mds0.1:1114 09.06.18 16:28:08.837907

09.06.18 16:29:15.085416 1124096336 osd1 10 pg[1.8( v 5'4/3'2 (0'0,5'4] n=2 ec=2 les=10 10/3) r=1 lcod 0'0 stray m=1] merge_log log(8'68,9'69]+backlog from osd2 into log(0'0,5'4]+backlog
09.06.18 16:29:15.085456 1124096336 osd1 10 pg[1.8( v 5'4/3'2 (0'0,5'4] n=2 ec=2 les=10 10/3) r=1 (log bound mismatch, actual=[3'2,9'69] len=2) lcod 0'0 stray m=1] merge_log split point is 3'2 (0'0) b 2.00000000/head by mds0.1:5 09.06.18 16:20:07.527454
09.06.18 16:29:15.085472 1124096336 osd1 10 pg[1.8( v 5'4/3'2 (0'0,5'4] n=2 ec=2 les=10 10/3) r=1 (log bound mismatch, actual=[3'2,9'69] len=2) lcod 0'0 stray m=1] merge_log merging 3'2 (0'0) b 2.00000000/head by mds0.1:5 09.06.18 16:20:07.527454
09.06.18 16:29:15.085493 1124096336 osd1 10 pg[1.8( v 5'4/3'2 (0'0,5'4] n=2 ec=2 les=10 10/3) r=1 (log bound mismatch, actual=[3'2,9'69] len=2) lcod 0'0 stray m=2] merge_log merging 9'69 (8'68) m 200.00000000/head by mds0.1:1114 09.06.18 16:28:08.837907
osd/PG.h: In function 'void PG::Missing::add_next_event(PG::Log::Entry&)':
osd/PG.h:494: FAILED assert(missing[e.soid].need == e.prior_version)
2009-06-18 16:42:35 -07:00
Sage Weil
8b35425381 uclient: wait for mds sessions close on unmount 2009-06-18 16:42:35 -07:00
Sage Weil
9c7cf29fa4 mds: only use send_message_client for caps, lease, and snap msgs
Otherwise we screw up the session seq count.
2009-06-18 16:42:35 -07:00
Sage Weil
048c61b3b9 uclient: init, shutdown objecter
This fixes longstanding problems with csyn stalling.
2009-06-18 16:42:35 -07:00
Sage Weil
663e482aab osd: consolidate trim logic in calc_trim_to()
And call it from trim_peers(), so that we always apply the same
conditions on log trimming.

This ensures we don't trim the logs while degraded through one of
the other paths.
2009-06-18 16:42:34 -07:00
Sage Weil
2bb0b097f9 todo 2009-06-18 16:42:34 -07:00
Sage Weil
b86731e861 kclient: fix whitespace 2009-06-18 14:29:12 -07:00
Sage Weil
a1623d57b5 kclient: include fs/staging patch in series 2009-06-18 14:28:35 -07:00
Sage Weil
03217f4abe crush: fix coding style, whitespace 2009-06-18 14:23:43 -07:00
Sage Weil
eaf39b2a9c crush: redefine hash using __u32, for consistency across 32/64 bit
I'm pretty sure this was giving inconsistent results across archs,
because bits would get shifted into the high 32 and then back again
on x86_64 but not x86_32.
2009-06-18 14:23:29 -07:00
Sage Weil
c9b39bbade mark v0.9 2009-06-18 13:31:04 -07:00
Sage Weil
45b21c03a9 Makefile: add missing includes 2009-06-18 13:30:49 -07:00
Sage Weil
0eca313986 Makefile: kill cls_trivialmap 2009-06-18 13:24:09 -07:00
Sage Weil
7e769185a6 kclient: avoid i_ino of 0 on 32-bit platforms
This confuses ls.  How lame!

Reported-by: Jeremy Hanmer <jeremy@hq.newdream.net>
2009-06-18 13:10:34 -07:00
Sage Weil
fffc9f3855 osd: trim pg logs on recovery completion
When replica finds itself fully up to date (last_complete ==
last_update) it tells the primary.  Primary checks the same.
If the primary find the min_last_complete_ondisk has changed,
it sends out a trim command.

This will let us drop huge pg logs out of memory after a recovery
without waiting for IO and the usual piggybacked trimming logic
to kick in.
2009-06-18 11:40:55 -07:00
Sage Weil
754e686cdf osd: track last_complete_ondisk over pushes, too. 2009-06-18 11:19:47 -07:00
Sage Weil
e635d0eaba osd: revamp complete_thru code
Use last_complete_ondisk terminology throughout.
2009-06-18 11:07:03 -07:00
Sage Weil
9603162003 osd: some infrastructure for primary to trim replica logs 2009-06-18 09:37:03 -07:00
Sage Weil
e0719d469f osd: fix pg log trim on the non-primary 2009-06-17 20:48:50 -07:00
Sage Weil
4247691d63 rados: less chatty 2009-06-17 16:36:08 -07:00
Sage Weil
cd6cbff391 rados: shutdown on exit 2009-06-17 16:35:24 -07:00
Sage Weil
7371074a7d librados: add shutdown to c++ interface 2009-06-17 16:35:19 -07:00
Sage Weil
841827015c kclient: initialize readdir next_offset on dir open
Otherwise we don't compensate for . and .. properly.
2009-06-17 16:15:15 -07:00
Sage Weil
04455b859a kclient: update client for statfs changes 2009-06-17 16:08:21 -07:00
Sage Weil
1309477e32 osd: add pg log sizes, bottoms to pg_stat_t et al
This will allow us to see the pg logging overhead, esp once pg
logs are kept for longer on disk.
2009-06-17 16:00:14 -07:00
Sage Weil
7d14cafa16 kclient: clean out old debug cruft 2009-06-17 15:54:18 -07:00
Sage Weil
923e9a9d17 rados: fix statfs definition
Isolate posix lameness to uclient only.  Unify 'rados df' and
'rados dfpools'
2009-06-17 15:51:08 -07:00
Sage Weil
b5024a1db0 mds: change readdir wire format again
Do not include dentry offsets; they're not useful.
2009-06-17 15:23:17 -07:00
Sage Weil
4e54d1176f kclient: fix readdir vs rm
Okay, do not rely on MDS to provide dentry positioning information,
since it is all relative to the start _string_ we provide, and that
can change directory position without notice.

Simplify readdir a bit wrt seeks.  A seek to 0, a new frag, or
prior to the current chunk resets buffered state.

For each frag, we walk through chunks, always in order.  We set
dentry positions/offsets based on the frag and position within our
sweep across the frag.  Successive chunks are grabbed from the MDS
relative to a filename (not offset), so concurrent
insertions/removals don't bother us (although we will not see
insertions lexicographically prior to our position).
2009-06-17 15:23:17 -07:00
Sage Weil
5fc7fe0ebd objectstore: use nstrings to store all attrs
Holding const char *'s isn't really ever safe, since it's not clear
that they are string constants, or that that is even safe.
2009-06-17 14:02:30 -07:00
Sage Weil
4f0c30be1e rados: prettify dfpools output 2009-06-17 14:02:30 -07:00
Sage Weil
ab7d2b21f4 kclient: fix dout() macro protection of x, mask 2009-06-17 13:27:51 -07:00
Sage Weil
2abc25aec8 kclient: fix pps calculation to factor in pg pool
This was missed the first time around.
2009-06-17 12:53:50 -07:00
Sage Weil
9d6538ceb2 osd: fix pps calculation from pgid.ps() and pgid.pool()
The final placement seed needs to factor in pool, but that can't be
fed into stable_mod or you get weird results (for example, 1.ff and
1.adff won't necessary map to the same thing because of the
stable_mod).  Add pool to the stable_mod result, instead.  The seed
itself doesn't need to be bounded; it's just an input for CRUSH.
Just so long as there are a limited number of such inputs for a given
pool.
2009-06-17 12:51:08 -07:00
Greg Farnum
1f086d9b63 rados: Now properly writes 0-byte files on a get.
There are more debug statements in librados and Objercter too.
2009-06-17 11:23:14 -07:00
Sage Weil
b59e70a6b1 mon: implement 'mds setmap <epoch>' to (re)set mdsmap 2009-06-17 10:34:23 -07:00
Sage Weil
dc9042c8fd mon: clean up some mdsmon stuff
last_beacon should include pending_inc mds's, no more, no
less.

Make the osdmon bcast send to non-in mds's too.
2009-06-17 10:34:23 -07:00
Greg Farnum
52a9ea6320 librados: added a write-full method.
Switched ./rados to use it for put.
2009-06-16 16:56:47 -07:00
Sage Weil
119c339b83 rados: clean up output a bit 2009-06-16 16:48:18 -07:00
Sage Weil
e83ad7c41d librados: clean up librados debug output a bit 2009-06-16 16:48:10 -07:00
Sage Weil
e725f38ae2 config: no -p shorthand for --pid-file
It's not used by anything anyway.
2009-06-16 16:39:58 -07:00
Sage Weil
d01b24973d Merge commit '114ad5177f281b96ba6bbebe9ed85e2a4aec783f' into rados
Conflicts:

	src/include/ceph_fs.h
2009-06-16 16:34:03 -07:00
Sage Weil
114ad5177f kclient: fix skipped entires in dcache_readdir
I'm not sure why the old code incremented f_pos and looked at the
prev entry, but it was wrong.
2009-06-16 16:31:38 -07:00
Sage Weil
3efb869af1 kclient: fix non-dcache readdir offset calculation
Needs to factor in frag_is_leftmost to account for . and .., just
like the fi->offset calculation in readdir_prepopulate.  Fixes the
problem where an ls on a large dir returns duplicate entries.
2009-06-16 16:31:38 -07:00
Sage Weil
92c48b0374 kclient: specify smallish blksize for directories
This is mainly just because /bin/ls will use the size, or blocks,
or blksize to decide how big of a buffer to allocate for getdents,
and the default of 4MB is unreasonably big.  64k seems like an
okay number, I guess.
2009-06-16 16:31:38 -07:00
Sage Weil
a07894d17e osd: fix cloned object context
Screws up subsequent reads on cloned objects.  And the bad ref
counting was leaking memory.
2009-06-16 16:00:31 -07:00
Greg Farnum
e3105a06df Objecter: fixed a bug in snaps.
Worked around a situtation where you could delete a callback before it was followed.
2009-06-16 15:49:34 -07:00
Greg Farnum
3e6819052a mon/Objecter: Snapshot creation/removal now waits for proper epoch to return. 2009-06-16 15:22:16 -07:00
Sage Weil
9b621fe1da rev osd disk format, protocol due to crush, osdmap mapping changes 2009-06-16 15:17:41 -07:00
Sage Weil
d9cf568454 osdmaptool: crush regression test 2009-06-16 15:07:54 -07:00