]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
15 years agoMerge remote branch 'origin/testing' into unstable
Sage Weil [Mon, 23 Aug 2010 17:32:18 +0000 (10:32 -0700)]
Merge remote branch 'origin/testing' into unstable

15 years agomds: eval inodes with caps after import
Sage Weil [Mon, 23 Aug 2010 16:36:10 +0000 (09:36 -0700)]
mds: eval inodes with caps after import

15 years agoqa: add test for snapcap writeback of auth bits
Sage Weil [Sun, 22 Aug 2010 20:49:52 +0000 (13:49 -0700)]
qa: add test for snapcap writeback of auth bits

15 years agoqa: test xattr snap wb
Sage Weil [Sun, 22 Aug 2010 22:18:21 +0000 (15:18 -0700)]
qa: test xattr snap wb

15 years agoosd: disable potentially dangerous dead code
Sage Weil [Thu, 19 Aug 2010 23:06:24 +0000 (16:06 -0700)]
osd: disable potentially dangerous dead code

Greg got a segfault accessing the OSDOP& first reference. Not clear why,
but this whole block is dead code.

15 years agobacktrace: fix segfault in tcmalloc.
Greg Farnum [Thu, 19 Aug 2010 19:01:11 +0000 (12:01 -0700)]
backtrace: fix segfault in tcmalloc.
The print function is only called when we're about to crash anyway,
and the datamember 'foo' is allocated by ptmalloc, not tcmalloc. Freeing
it via tcmalloc causes its own crash which pollutes our debugging and
incorrectly sticks tcmalloc into the stack. So, just don't free.

15 years agomds: drop old thrash_exports time limit
Sage Weil [Fri, 20 Aug 2010 16:57:07 +0000 (09:57 -0700)]
mds: drop old thrash_exports time limit

15 years agoosdmaptool: print useful error instead of crashing if osdmap is corrupt
Sage Weil [Fri, 20 Aug 2010 16:31:49 +0000 (09:31 -0700)]
osdmaptool: print useful error instead of crashing if osdmap is corrupt

15 years agocrush: return error instead of BUGing on bad forcefed mapping
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).

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agomds: return error to client on invalid mds op
Sage Weil [Fri, 20 Aug 2010 05:01:54 +0000 (22:01 -0700)]
mds: return error to client on invalid mds op

e.g., if the client sends a filelock request and we don't support it :)

15 years agomds: fix ENOTEMPTY checking on rmdir/rename
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.

15 years agomds: fix pick_inode_snap
Sage Weil [Thu, 19 Aug 2010 23:21:47 +0000 (16:21 -0700)]
mds: fix pick_inode_snap

Return when we find something.

15 years agomds: fix intermediate snapped inode updates
Sage Weil [Thu, 19 Aug 2010 23:21:18 +0000 (16:21 -0700)]
mds: fix intermediate snapped inode updates

Pass head inode to pick_inode_snap!

15 years agoosd: disable potentially dangerous dead code
Sage Weil [Thu, 19 Aug 2010 23:06:24 +0000 (16:06 -0700)]
osd: disable potentially dangerous dead code

Greg got a segfault accessing the OSDOP& first reference. Not clear why,
but this whole block is dead code.

15 years agoutime: microsecond -> nanosecond resolution
Sage Weil [Thu, 19 Aug 2010 23:00:45 +0000 (16:00 -0700)]
utime: microsecond -> nanosecond resolution

Strictly speaking, this changes the encoding.  But, the encoding was
broken before, because ceph_timespec in ns but we were actually encoding
us.

But it's all subsecond resolution, so who cares.  Just change it!

15 years agoMerge branch 'testing' into unstable
Sage Weil [Thu, 19 Aug 2010 17:47:19 +0000 (10:47 -0700)]
Merge branch 'testing' into unstable

15 years agomds: make null snapflush helper, and call on cap removal too
Sage Weil [Thu, 19 Aug 2010 17:13:38 +0000 (10:13 -0700)]
mds: make null snapflush helper, and call on cap removal too

Move remove_client_cap() from MDCache->Locker while we're at it!

15 years agomds: simplify/fix early null snapflush check, clean up comment
Sage Weil [Thu, 19 Aug 2010 16:57:50 +0000 (09:57 -0700)]
mds: simplify/fix early null snapflush check, clean up comment

15 years agoosd: carry ondisk write lock for cloned objects
Sage Weil [Thu, 19 Aug 2010 16:52:33 +0000 (09:52 -0700)]
osd: carry ondisk write lock for cloned objects

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>
15 years agomds: fix crash when REQSCATTER races with an actual scatter/MIX
Sage Weil [Wed, 18 Aug 2010 22:17:55 +0000 (15:17 -0700)]
mds: fix crash when REQSCATTER races with an actual scatter/MIX

15 years agomds: fix null snapflush logic
Sage Weil [Wed, 18 Aug 2010 20:49:11 +0000 (13:49 -0700)]
mds: fix null snapflush logic

We only want to do a null snapflush if we _know_ there isn't another one
coming: that is, there aren't any outstanding issued excl/wr cap bits at
the client.  The old test has the bitwise NOT backwards.  We can also
limit the test to the bits we care about.

15 years agomds: don't send null ack in do_snap_update
Sage Weil [Wed, 18 Aug 2010 20:45:43 +0000 (13:45 -0700)]
mds: don't send null ack in do_snap_update

(In this case, it's a null flushsnap.)

15 years agoqa: add snaptest-snap-rm-cmp
Sage Weil [Wed, 18 Aug 2010 20:44:34 +0000 (13:44 -0700)]
qa: add snaptest-snap-rm-cmp

This (usually) reproduced a bug where:

 - we write a big file
 - snap it
 - remove it.  this makes the mds cow it.
 - cp the snapped version.
   - mds syncs the head
   - client starts writeback
   - (sometimes!) client sends other caps back to the mds
     - mds does null flushsnap, not realizing a real one is still coming

15 years agomds: remove forward-on-nonauth-rdlock behavior
Sage Weil [Wed, 18 Aug 2010 20:16:57 +0000 (13:16 -0700)]
mds: remove forward-on-nonauth-rdlock behavior

The problem is that we may be rdlocking items with a different auth than
the main item we are modifying, so forwarding based on lock state is
inconsistent with our requirement that we be on the modified item's auth.

Either we can somehow mark whether the locked item is the "main thing" we
are operating on, or we can drop the forward behavior from the locker and
put any forwarding heuristics elsewhere.  I'm opting for the latter.

15 years agoauth: fix skipping of ~/ if $HOME subst fails
Sage Weil [Wed, 18 Aug 2010 19:56:53 +0000 (12:56 -0700)]
auth: fix skipping of ~/ if $HOME subst fails

We were breaking out of the loop entirely, and failing to check the rest
of the items in the path list.  Doh!

15 years agomds: oops, fix null snapflush fix
Sage Weil [Wed, 18 Aug 2010 17:38:40 +0000 (10:38 -0700)]
mds: oops, fix null snapflush fix

15 years agomds: clean up {have,get}_inode() definitions
Sage Weil [Wed, 18 Aug 2010 17:18:33 +0000 (10:18 -0700)]
mds: clean up {have,get}_inode() definitions

15 years agomds: fix null snapflush inode lookup
Sage Weil [Wed, 18 Aug 2010 17:18:21 +0000 (10:18 -0700)]
mds: fix null snapflush inode lookup

Don't use pick_inode_snap is totally wrong (it depends on the current set
of snaps, etc.).. look up the inode directly via the ino and last snapid,
which we have.  Fixes a failure at the assert.

Reported-by: Thomas Mueller <thomas@chaschperli.ch>
Signed-off-by: Sage Weil <sage@newdream.net>
15 years agorgw: fix commit warning.
Greg Farnum [Wed, 18 Aug 2010 17:27:48 +0000 (10:27 -0700)]
rgw: fix commit warning.
size_t is a long unsigned, not a long long unsigned.

15 years agoqa: add simple snaprealm test script.
Greg Farnum [Tue, 17 Aug 2010 21:24:46 +0000 (14:24 -0700)]
qa: add simple snaprealm test script.

15 years agomds: handle no flushsnap
Sage Weil [Tue, 17 Aug 2010 23:38:20 +0000 (16:38 -0700)]
mds: handle no flushsnap

We won't get a flushsnap when the client has EXCL/WR caps but no dirty
data.  The MDS needs to release the snapped inode's locks when it gets a
normal update but no FLUSHSNAP.

15 years agoqa: snaptest-capwb check no snapflush case first
Sage Weil [Tue, 17 Aug 2010 21:23:19 +0000 (14:23 -0700)]
qa: snaptest-capwb check no snapflush case first

15 years agoqa: snaptest-upchildreams.sh should clean up after itself
Sage Weil [Tue, 17 Aug 2010 21:22:56 +0000 (14:22 -0700)]
qa: snaptest-upchildreams.sh should clean up after itself

15 years agoqa: add capwb check for case where client doesn't send flushsnap
Sage Weil [Tue, 17 Aug 2010 19:47:36 +0000 (12:47 -0700)]
qa: add capwb check for case where client doesn't send flushsnap

15 years agomds: fix rdlock referral on snapped inode to head
Sage Weil [Tue, 17 Aug 2010 19:47:19 +0000 (12:47 -0700)]
mds: fix rdlock referral on snapped inode to head

Note: this still needs some fixing, as the head and snapped inodes may be
on different MDSs!

15 years agomds: drop x/wrlocks before, rdlocks after sending reply
Sage Weil [Tue, 17 Aug 2010 19:16:02 +0000 (12:16 -0700)]
mds: drop x/wrlocks before, rdlocks after sending reply

This lets us issue the most leases/caps possible.  It also ensure we can
issue caps in the snapped namespace when we are still on the head inode
(previously, releasing the rdlock twiddled the state, the client didn't
get say Frc, and hung indefinitely).

15 years agoclient: direct requests in snapped namespace based on nonsnap parent
Sage Weil [Tue, 17 Aug 2010 18:50:38 +0000 (11:50 -0700)]
client: direct requests in snapped namespace based on nonsnap parent

We fixed snapdir before.. but we need to do the same for the entire snapped
portion of the namespace.

15 years agoqa: add snaptest-estale.sh
Sage Weil [Tue, 17 Aug 2010 18:37:42 +0000 (11:37 -0700)]
qa: add snaptest-estale.sh

Verify requests withing snapped namespace are directed to the proper
MDS.  We should never get ESTALE, only ENOENT.

15 years agoqa: make snaptest-2 output less ugly
Sage Weil [Mon, 16 Aug 2010 23:45:26 +0000 (16:45 -0700)]
qa: make snaptest-2 output less ugly

15 years agomds: make inode first track dn first on rename
Sage Weil [Mon, 16 Aug 2010 23:45:14 +0000 (16:45 -0700)]
mds: make inode first track dn first on rename

This mirrors the logic in cc8f5ac47c77d1e336e16d8deb024d507e0e8c59.  Make
the renamed inode first match the destdn to avoid problems down the line.
Do this after we've (potentially) cowed the inode in the journal_cow_dentry
on srcdn.

15 years agomds: make new inodes follow dn->first
Sage Weil [Mon, 16 Aug 2010 23:01:30 +0000 (16:01 -0700)]
mds: make new inodes follow dn->first

We can get a dn->first that is greater than the parent dir's seq.  Notably,
when we do something like

 mkdir foo
 mkdir foo/.snap/a
 rmdir foo/.snap/a
 rmdir foo

Here, the foo dentry has a high seq, and subsequent mkdir foo should make
sure we give the new foo dir inode the same seq (and not a lower one from
the parent).  Otherwise, things get confused later on.

15 years agomds: flush log on cap writeback if !dirty and unstable locks
Sage Weil [Mon, 16 Aug 2010 21:27:34 +0000 (14:27 -0700)]
mds: flush log on cap writeback if !dirty and unstable locks

The problem is if we revoke caps, nothing is dirty, but we do writeback
because we are adjusting max_size.  Then we have to wait for the log to
flush even though the revocation should proceed immediately.  To move
things along, flush the log immediately.

This still isn't ideal.. it would be nice to allow the locking to continue
and adjust max_size in parallel, but that isn't always possible, and will
require some more thought.

15 years agomds: show cdentry authpin debug state
Sage Weil [Mon, 16 Aug 2010 21:03:40 +0000 (14:03 -0700)]
mds: show cdentry authpin debug state

15 years agoqa: show rm/cp progress on snaptest-2
Sage Weil [Mon, 16 Aug 2010 21:03:19 +0000 (14:03 -0700)]
qa: show rm/cp progress on snaptest-2

15 years agoqa: add test that client updates realm children on snap update
Sage Weil [Mon, 16 Aug 2010 20:35:54 +0000 (13:35 -0700)]
qa: add test that client updates realm children on snap update

15 years agoclient: correctly direct snapdir requests
Sage Weil [Mon, 16 Aug 2010 18:22:45 +0000 (11:22 -0700)]
client: correctly direct snapdir requests

Use real dir (and its caps), not the virtual snapdir.

15 years agoqa: add snap-rm-diff.sh to look for issues with snapshot integrity.
Greg Farnum [Mon, 16 Aug 2010 18:48:12 +0000 (11:48 -0700)]
qa: add snap-rm-diff.sh to look for issues with snapshot integrity.
Currently passes the script, although running these steps manually
(especially with smaller files) fails a fair percentage of the time for me.

15 years agomds: only kick head on snap rdlock if in SNAP_SYNC state
Sage Weil [Fri, 13 Aug 2010 21:20:39 +0000 (14:20 -0700)]
mds: only kick head on snap rdlock if in SNAP_SYNC state

We may, e.g., be in the SCAN state, which is totally unrelated to the
head!

15 years agomonclient: gracefully error out when given an invalid monmap path
Sage Weil [Mon, 16 Aug 2010 02:49:17 +0000 (19:49 -0700)]
monclient: gracefully error out when given an invalid monmap path

15 years agoosd: update missing_loc earlier in push
Sage Weil [Tue, 10 Aug 2010 22:31:29 +0000 (15:31 -0700)]
osd: update missing_loc earlier in push

This just avoids l=-1 from showing up in the logs, makes the logic a bit
cleaner (keeps missing and missing_loc in sync).

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agodebian: fix tcmalloc dependency
Sage Weil [Fri, 13 Aug 2010 22:12:34 +0000 (15:12 -0700)]
debian: fix tcmalloc dependency

Depend on libgoogle-perftools0, not libtcmalloc-minimal0, since we link
against libtcmalloc, not libtcmalloc-minimal.  Duh.

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agoclient: fix xattr cap writeback
Sage Weil [Fri, 13 Aug 2010 22:01:51 +0000 (15:01 -0700)]
client: fix xattr cap writeback

15 years agoclient: fix capsnap writeback of uid/gid/mode/xattrs
Sage Weil [Fri, 13 Aug 2010 22:01:37 +0000 (15:01 -0700)]
client: fix capsnap writeback of uid/gid/mode/xattrs

Some metadata wasn't making it into CapSnap and was subsequently getting
written back zeroed to the MDS.

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agoMerge branch 'tcmalloc' into unstable
Sage Weil [Thu, 12 Aug 2010 23:32:42 +0000 (16:32 -0700)]
Merge branch 'tcmalloc' into unstable

15 years agoceph.spec.in: require, build with tcmalloc
Sage Weil [Thu, 12 Aug 2010 23:32:10 +0000 (16:32 -0700)]
ceph.spec.in: require, build with tcmalloc

15 years agodebian: require tcmalloc
Sage Weil [Thu, 12 Aug 2010 23:32:01 +0000 (16:32 -0700)]
debian: require tcmalloc

15 years agomds: only kick head on snap rdlock if auth
Sage Weil [Thu, 12 Aug 2010 20:28:47 +0000 (13:28 -0700)]
mds: only kick head on snap rdlock if auth

- If we are non-auth, stick with the snap, and the auth will do the
inference.
- If we are auth, the head had better exist, because our lock is
pinned in an unreadable state for some reason.  Assert as much.

15 years agoMerge branch 'testing' into unstable
Sage Weil [Thu, 12 Aug 2010 20:10:44 +0000 (13:10 -0700)]
Merge branch 'testing' into unstable

15 years agofilestore: fix throttling on journal, op_queue for parallel and writeahead
Sage Weil [Thu, 12 Aug 2010 20:10:00 +0000 (13:10 -0700)]
filestore: fix throttling on journal, op_queue for parallel and writeahead

15 years agofilestore: fix race in op enqueuing to ensure throttle limit is honors
Sage Weil [Thu, 12 Aug 2010 19:59:05 +0000 (12:59 -0700)]
filestore: fix race in op enqueuing to ensure throttle limit is honors

15 years agoobjectstore: fix transaction get_num_bytes
Sage Weil [Thu, 12 Aug 2010 19:58:25 +0000 (12:58 -0700)]
objectstore: fix transaction get_num_bytes

The separate bytes field isn't used; use encoded bytes count for now.

15 years agomon: mon_clock_drift_* for consistency
Sage Weil [Thu, 12 Aug 2010 19:05:48 +0000 (12:05 -0700)]
mon: mon_clock_drift_* for consistency

15 years agoMerge branch 'testing' into unstable
Sage Weil [Thu, 12 Aug 2010 18:57:43 +0000 (11:57 -0700)]
Merge branch 'testing' into unstable

15 years agomsg: use RefCountedObject; overload get() only to cast return type
Sage Weil [Thu, 12 Aug 2010 18:53:55 +0000 (11:53 -0700)]
msg: use RefCountedObject; overload get() only to cast return type

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agoosd: whitespace
Sage Weil [Thu, 12 Aug 2010 18:53:24 +0000 (11:53 -0700)]
osd: whitespace

15 years agoosd: improve l_osd_buf accuracy
Sage Weil [Thu, 12 Aug 2010 18:53:14 +0000 (11:53 -0700)]
osd: improve l_osd_buf accuracy

15 years agobuffer: fix/improve debug
Sage Weil [Thu, 12 Aug 2010 18:52:45 +0000 (11:52 -0700)]
buffer: fix/improve debug

15 years agomsgr: don't leak message when sending to a closed connection
Sage Weil [Thu, 12 Aug 2010 18:52:06 +0000 (11:52 -0700)]
msgr: don't leak message when sending to a closed connection

15 years agoosd: log push ops as push, not pull
Sage Weil [Thu, 12 Aug 2010 17:36:13 +0000 (10:36 -0700)]
osd: log push ops as push, not pull

15 years agologger: fix logger counter reset
Sage Weil [Thu, 12 Aug 2010 17:36:00 +0000 (10:36 -0700)]
logger: fix logger counter reset

Reset inc keys after each line; reset all keys on full reset.

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agoMerge branch 'testing' into unstable
Sage Weil [Wed, 11 Aug 2010 23:19:56 +0000 (16:19 -0700)]
Merge branch 'testing' into unstable

Conflicts:
configure.ac

15 years agoceph v0.21.1 v0.21.1
Sage Weil [Wed, 11 Aug 2010 21:59:19 +0000 (14:59 -0700)]
ceph v0.21.1

15 years agomon: use elector's epoch
Sage Weil [Wed, 11 Aug 2010 20:30:48 +0000 (13:30 -0700)]
mon: use elector's epoch

This fixes a race with successive elections: we may see a new election
(X+1), then get a victory (X).  The victory is ignored (rightly so).  But
then a paxos follows that which assumes X, and our check was against
mon_epoch, only updated on election victory.. and we are inconsistent and
crash.

So, just get rid of private mon_epoch and use the elector's value.

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agoMakefile: include logrotate.conf in tarball
Sage Weil [Wed, 11 Aug 2010 19:29:46 +0000 (12:29 -0700)]
Makefile: include logrotate.conf in tarball

15 years agodebian: fix update_pbuilder.sh
Sage Weil [Wed, 11 Aug 2010 17:46:31 +0000 (10:46 -0700)]
debian: fix update_pbuilder.sh

15 years agomon: rename mon_lease_wiggle_room -> mon_allowed_clock_drift
Greg Farnum [Wed, 11 Aug 2010 17:37:14 +0000 (10:37 -0700)]
mon: rename mon_lease_wiggle_room -> mon_allowed_clock_drift

15 years agomon: backoff clock drift warnings
Greg Farnum [Wed, 11 Aug 2010 16:49:29 +0000 (09:49 -0700)]
mon: backoff clock drift warnings

15 years agoosd: write (empty) log, bounds on remove_pg start
Sage Weil [Wed, 11 Aug 2010 17:05:18 +0000 (10:05 -0700)]
osd: write (empty) log, bounds on remove_pg start

This zeros the log, and the bounds, when we start pg removal.  Previously
we just removed the log and didn't write the (empty) bounds, breaking
cosd startup later when the old bounds are totally wrong.

Signed-off-by: Sage Weil <sage@newdream.net>
15 years agorgw: fix content length encoding
Yehuda Sadeh [Tue, 10 Aug 2010 20:37:58 +0000 (13:37 -0700)]
rgw: fix content length encoding

15 years agofilestore: flush using sync(2) hammer
Sage Weil [Sun, 8 Aug 2010 15:59:59 +0000 (08:59 -0700)]
filestore: flush using sync(2) hammer

Since we can't easily detect ext3 (let alone whether we have data=journal),
by default use sync(2) as an overly large hammer to flush all prior applied
ops to disk.  If the option is explicitly enabled, use fsync(2) on a
file to implicitly flush the journal and prior writes.  Admins should only
enable this if they have ext2 in data=journal mode.

15 years agotcmalloc: add support for tcmalloc.
Greg Farnum [Fri, 6 Aug 2010 21:47:06 +0000 (14:47 -0700)]
tcmalloc: add support for tcmalloc.

Right now it's only used on the MDS and OSD, but it can be added to mons too.

15 years agomds: don't try to recover filelocks if the client didn't encode any
Greg Farnum [Fri, 6 Aug 2010 21:58:23 +0000 (14:58 -0700)]
mds: don't try to recover filelocks if the client didn't encode any

15 years agoosd: simplify class waiter list
Sage Weil [Fri, 6 Aug 2010 18:42:33 +0000 (11:42 -0700)]
osd: simplify class waiter list

No reason to break it down by pg_t?

15 years agorgw: make gateway dns name configurable
Yehuda Sadeh [Fri, 6 Aug 2010 21:13:21 +0000 (14:13 -0700)]
rgw: make gateway dns name configurable

15 years agoclient: fill in num_fwd in messages to mds
Greg Farnum [Fri, 6 Aug 2010 20:41:15 +0000 (13:41 -0700)]
client: fill in num_fwd in messages to mds

15 years agoosd: class load shouldn't hang when failed to load
Yehuda Sadeh [Fri, 6 Aug 2010 19:46:07 +0000 (12:46 -0700)]
osd: class load shouldn't hang when failed to load

Fixes bug #332. This happened if either the class existed, and it was either
corrupted, or failed to load from any other reason.

15 years agoqa: echo output
Sage Weil [Fri, 6 Aug 2010 18:27:15 +0000 (11:27 -0700)]
qa: echo output

15 years agoMerge branch 'snap_cap' into unstable
Sage Weil [Fri, 6 Aug 2010 18:34:57 +0000 (11:34 -0700)]
Merge branch 'snap_cap' into unstable

15 years agoMerge branch 'testing' into unstable
Sage Weil [Fri, 6 Aug 2010 18:34:53 +0000 (11:34 -0700)]
Merge branch 'testing' into unstable

15 years agomds: fix send_message_client_counted helper
Sage Weil [Fri, 6 Aug 2010 17:07:46 +0000 (10:07 -0700)]
mds: fix send_message_client_counted helper

Don't use the outgoing message connection (usually there is none!).. use
the connection argument.  Der.  Broken since 6d770abe.

15 years agomon: add 'mds compat rm_* id' commands to adjust mdsmap compat set
Sage Weil [Fri, 6 Aug 2010 16:56:34 +0000 (09:56 -0700)]
mon: add 'mds compat rm_* id' commands to adjust mdsmap compat set

This'll be helpful if someone inadvertantly starts up a new cmds, the
compat set updates, and then they can't start old cmds instances.

Of course, that will only work if the new cmds didn't write any new format
metadata!

15 years agomon: automatically incorporate new incompat features into mdsmap
Sage Weil [Thu, 5 Aug 2010 23:49:07 +0000 (16:49 -0700)]
mon: automatically incorporate new incompat features into mdsmap

15 years agomds: include compatset in beacon message
Sage Weil [Thu, 5 Aug 2010 23:48:26 +0000 (16:48 -0700)]
mds: include compatset in beacon message

15 years agomds: add incompat clientranges bit for the format change
Sage Weil [Thu, 5 Aug 2010 23:48:16 +0000 (16:48 -0700)]
mds: add incompat clientranges bit for the format change

15 years agoqa: add snap test for cap writeback
Sage Weil [Thu, 5 Aug 2010 23:16:02 +0000 (16:16 -0700)]
qa: add snap test for cap writeback

This used to fail/hang before the cap cloning business was fixed up.

15 years agomds: non-head requests always rdlock as_anon
Sage Weil [Thu, 5 Aug 2010 23:05:46 +0000 (16:05 -0700)]
mds: non-head requests always rdlock as_anon

This ensures we can't do a snapped GETATTR and rdlock with EXCL on a
directory and miss out on cap metadata still with the client.

15 years agomds: write flushsnap cap metadata into old_inode if appropriate
Sage Weil [Thu, 5 Aug 2010 21:52:40 +0000 (14:52 -0700)]
mds: write flushsnap cap metadata into old_inode if appropriate

Don't have a test case for this yet, unfortunately, but it looks
straightforward at least. :)

15 years agomds: ensure that rdlock on snap filelock flushes data
Sage Weil [Thu, 5 Aug 2010 21:09:53 +0000 (14:09 -0700)]
mds: ensure that rdlock on snap filelock flushes data

Do the head filelock sync 'anonymously', so that we can_rdlock(-1) (no
particular client) and thus can't rdlock in the EXCL state.

15 years agomds: rdlock head when snapped inode is snap->sync
Sage Weil [Thu, 5 Aug 2010 21:01:59 +0000 (14:01 -0700)]
mds: rdlock head when snapped inode is snap->sync

15 years agomds: do not clone caps to snapped inodes
Sage Weil [Thu, 5 Aug 2010 20:08:22 +0000 (13:08 -0700)]
mds: do not clone caps to snapped inodes

Instead, explicitly track which locks need to be flushed (via a FLUSHSNAP)
with a LOCK_SNAP_SYNC lock state.

Restructures the handle_client_caps.

Also changes the client ranges format in the inode to keep a follows for
each client (basically 'flushed through') so that the client ranges can
get cleaned out later when it gets cowed.