]>
git.apps.os.sepia.ceph.com Git - ceph.git/log
Sage Weil [Fri, 12 Dec 2014 21:18:35 +0000 (13:18 -0800)]
librados: do not overload C++ API methods with new signatures
Bah! C++ sucks for libraries.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 11 Dec 2014 14:49:57 +0000 (06:49 -0800)]
ceph_test_rados_api_watch_notify: fix a zillion warnings
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 11 Dec 2014 14:45:42 +0000 (06:45 -0800)]
ceph_test_rados_api_watch_notify: use GT macro
so we can see the value
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 11 Dec 2014 14:29:39 +0000 (06:29 -0800)]
ceph_test_rados_api_watch_notify: print err to debug
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 11 Dec 2014 14:26:06 +0000 (06:26 -0800)]
osdc/Objecter: normalize watch error (ENOENT on delete)
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Wed, 10 Dec 2014 18:05:57 +0000 (10:05 -0800)]
osdc/Objecter: only issue one error per watch; do it through one path
Send all errors through C_DoWatchError for simplicity.
Only deliver one error per watch. This simplifies callers logic and avoids
a very rare case that they need to deal with.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Wed, 10 Dec 2014 17:52:04 +0000 (09:52 -0800)]
ceph_test_rados_api_watch_notify: wait longer for osd to time us out
If cluster is thrashing this can fail.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Wed, 10 Dec 2014 17:49:56 +0000 (09:49 -0800)]
ceph_test_rados_api_watch_notify: weak assert cookie is valid (it's a ptr)
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Wed, 10 Dec 2014 17:44:01 +0000 (09:44 -0800)]
osdc/Objecter: pass correct cookie value to error
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sun, 7 Dec 2014 18:36:17 +0000 (10:36 -0800)]
ceph_test_rados_api_watch_notify: fix signed/unsigend
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sun, 7 Dec 2014 18:36:07 +0000 (10:36 -0800)]
librados: mark new API watch/notify calls
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 6 Dec 2014 02:00:04 +0000 (18:00 -0800)]
rgw: switch to new watch/notify API
Note that we don't use it properly, yet!
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 24 Nov 2014 23:58:11 +0000 (15:58 -0800)]
librados:: carry IoCtx ref from WatchInfo
The WatchInfo gets totally async notifications. Make sure our ioctx
ref is valid when that happens.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 22 Nov 2014 00:04:38 +0000 (16:04 -0800)]
osd: allow deletion of objects with watchers
If we delete an object with a watcher, forcefully disconnect the watcher
instead of preventing the deletion with EBUSY.
Fixes: #2339
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 21 Nov 2014 23:34:30 +0000 (15:34 -0800)]
osd/ReplicatedPG: do watch effects only when change commits
Do not tell the client their watch succeeded until it is durable and
visible to clients doing a notify. This is less important in the initial
watch registration stage, but critical in the disconnect (and disconnect
+ reconnect) pipelining cases.
Simplify the watch_disconnects struct to have exactly the information
we need, and no more. Note that the conn is not needed for disconnects
(and we don't have a req to provide one in the watch timeout op case).
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 21 Nov 2014 23:11:00 +0000 (15:11 -0800)]
osd/ReplicatedPG: pass obc to OpContext ctor
We always set it, except for the handle_watch_timeout caller, which needs
to.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 21 Nov 2014 21:50:58 +0000 (13:50 -0800)]
osdc/Objecter: queued_async() gets called inside watch_lock from caller
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 18 Nov 2014 23:35:28 +0000 (15:35 -0800)]
librados: remove failed notify
Decided this wasn't useful.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 18 Nov 2014 23:10:52 +0000 (15:10 -0800)]
librados: s/handle/cookie/ in headers
Be consistent.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 18 Nov 2014 00:20:49 +0000 (16:20 -0800)]
ceph_test_rados_watch_notify: do not unwatch on invalid handle
It is not safe to call rados_unwatch on an undefined handle.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 18 Nov 2014 00:20:20 +0000 (16:20 -0800)]
ceph_test_rados_api_watch_notify: test ENOENT case
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 18 Nov 2014 00:20:06 +0000 (16:20 -0800)]
PendingReleaseNotes: a few notes about watch/notify changes
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 20:42:49 +0000 (12:42 -0800)]
test_async_driver: fix warning
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 20:13:45 +0000 (12:13 -0800)]
osdc/Objecter: set last_error before async error event delivery
No reason to delay this.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 20:06:27 +0000 (12:06 -0800)]
osdc/Objecter: use RWLock for watch_lock
This makes the linger_check fast path an RWLock read lock. Drop the
unnecessary write lock on rwlock and drop the unused Cond.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 19:28:21 +0000 (11:28 -0800)]
osdc/Objecter: make watch_check time reflect async delivery
When a librados user calls watch_check(), the age they get back should
establish a timestamp for which:
1) we know that the watch was registered at least through this time,
2) we have received and processed notifies sent as of this time,
3) we have processed any async error events as of this time.
We already accomplish 1 by updating watch_valid_thru based on the time
the ping is sent (not received).
This patch gets us 2 and 3 by using the MIN of watch_valid_thru and the
oldest queued async event for the watch_check result.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 18:27:49 +0000 (10:27 -0800)]
osdc/Objecter: use recast LingerOp* as OTW cookie, too
This makes the OSD reply's cookie values match up with what the librados
users see. And it makes life less confusing when debugging.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 18:08:55 +0000 (10:08 -0800)]
librados: use (gid,cookie) to identify notify participants
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 16:02:55 +0000 (08:02 -0800)]
librados: include missed watchers in notify reply data
Include a list of who missed their notify in the notify reply.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 17:45:55 +0000 (09:45 -0800)]
encoding: multiset encode/decode
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 16:01:15 +0000 (08:01 -0800)]
osd: rejigger watch connect/disconnect callers
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 16:00:34 +0000 (08:00 -0800)]
osdc/Objecter: ignore pings from previous registrations
If we have a ping in flight and then reregister (due to interval change
or whatever), ignore the result of the previous ping.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 15:32:12 +0000 (07:32 -0800)]
osdc/Objecter: only reconnect watches; skip ack unless needed
Only watches get a RECONNECT op; lingers just get resent.
Only request an ACK in the non-watch reconnect case and when an ack
callback is specified.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 17 Nov 2014 15:30:44 +0000 (07:30 -0800)]
osdc/Objecter: drop ACK callback for watch
It is semantically useless.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sun, 16 Nov 2014 21:44:08 +0000 (13:44 -0800)]
librados: move watch/notify into the Objecter
Several things here:
- we move all of the junk from librados' RadosClient into Objecter
- we use fast-dispatch to schedule the watch-notify events (this will
keep them ordered wrt ping)
- we use the LingerOp * as the librados-exposed handle so that we can
avoid any lookups for watch-check.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sun, 16 Nov 2014 19:50:42 +0000 (11:50 -0800)]
rados: break out notify replies by client
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 14 Nov 2014 22:47:05 +0000 (14:47 -0800)]
osdc/Objecter: take Finisher ref from creator
Only needed for watch/notify users, so most can pass NULL.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 14 Nov 2014 21:35:05 +0000 (13:35 -0800)]
librados: use Objecter's linger_id as the cookie
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 14 Nov 2014 21:32:12 +0000 (13:32 -0800)]
osdc/Objecter: spit out linger register step
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 14 Nov 2014 19:21:05 +0000 (11:21 -0800)]
osdc/Objecter: expose LingerOp instead of linger_id
We want a reference-counted handle, not an id.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 23:19:23 +0000 (15:19 -0800)]
messages/MWatchNotify: print more nicer
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 23:19:05 +0000 (15:19 -0800)]
librados: watch_check() to check on status of watch
Return either an accumulated error code, or the time since the watch was
last confirmed.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 22:28:14 +0000 (14:28 -0800)]
ceph_test_rados: use new watch/notify API
Ignore error events for now; we are just stressing the OSD.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 22 Nov 2014 05:03:09 +0000 (21:03 -0800)]
librados: unwatch doesn't need the oid argument
The handle is like a file handle: there is internal state that is getting
freed and the user needn't provide it again.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 22:11:45 +0000 (14:11 -0800)]
rados: use new notify API
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 22:01:10 +0000 (14:01 -0800)]
librados: no need for '2' suffix in c++
Compiler disambiguates based on the rest of the signature.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 21:53:37 +0000 (13:53 -0800)]
librados: mark old rollback call deprecated
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 21:53:23 +0000 (13:53 -0800)]
librados: mark old watch calls deprecated
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 22:09:40 +0000 (14:09 -0800)]
librados: mark old object listing api deprecated
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 22:09:28 +0000 (14:09 -0800)]
librados: mark old rollback method deprecated
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 22:09:20 +0000 (14:09 -0800)]
librados: mark deprecated watch/notify methods with deprecated attribute
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 22:08:08 +0000 (14:08 -0800)]
scratchtoolpp: suppress deprecation warnings
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 21:08:27 +0000 (13:08 -0800)]
ceph_test_rados_api_watch_notify: test watch disconnect, reconnect
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 21:01:44 +0000 (13:01 -0800)]
osd: send watch DISCONNECT to client when a watch is removed
This is an explicit notification to the client that a watch is no longer
valid and needs to be re-registered.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 00:51:23 +0000 (16:51 -0800)]
ceph_test_rados_api_watch_notify: reorder tests
Group by function, not language/pool type.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 00:47:46 +0000 (16:47 -0800)]
ceph_test_rados_api_watch_notify: drop 'Test' suffix
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 00:38:18 +0000 (16:38 -0800)]
ceph_test_rados_watch_notify: fix signed/unsigned warnings
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 00:33:46 +0000 (16:33 -0800)]
ceph_test_rados_api_watch_notify: verify notify after missed notify works
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 13 Nov 2014 00:32:59 +0000 (16:32 -0800)]
osdc/Objecter: fix whitespace
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sun, 9 Nov 2014 15:43:01 +0000 (07:43 -0800)]
osdc/Objecter: factor out _send_op_account()
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sun, 9 Nov 2014 15:42:34 +0000 (07:42 -0800)]
osdc/Objecter: skip ping if PAUSERD
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 04:01:50 +0000 (20:01 -0800)]
osdc/Objecter: objecter_inject_no_watch_ping
Tunable to prevent PINGs. This will let us test paths the client gets
disconnected from the OSD (at least from the client's perspective).
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 03:47:53 +0000 (19:47 -0800)]
osdc/Objecter: stop sending pings once we get an error
If we get ENOTCONN or ETIMEDOUT we can stop pinging.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 03:45:21 +0000 (19:45 -0800)]
osd/Watch: set timeout event for new watchers
For a new watcher, we set the timeout event on connect, and reset it when
we get a ping.
For an old watcher, we continue to set the timeout on disconnect() and
rely on the msgr Connection reset.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 03:38:24 +0000 (19:38 -0800)]
make ping verify we are connected
Sage Weil [Sat, 8 Nov 2014 03:26:03 +0000 (19:26 -0800)]
osdc/Objecter: only ping watches (not notifies)
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 01:47:09 +0000 (17:47 -0800)]
osd, librados: distinguish between old and new watchers
Use a new watch op code that is different from the legacy one so we can
tell when the client is doing all the new stuff (like sending pings).
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 01:12:54 +0000 (17:12 -0800)]
librados: tell watcher if we cause a notify timeout
If we are a watcher and we fail to notify in a timely manner, or
circumstances otherwise conspire to prevent out ack from arriving in time,
initiate a callback.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 00:36:43 +0000 (16:36 -0800)]
osd/Watch: inform watchers when they cause a notify timeout
If a watcher doesn't ack in time, let them know that they triggered a
notify failure.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 01:10:18 +0000 (17:10 -0800)]
librados: EINVAL on bad args to watch2
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 01:04:37 +0000 (17:04 -0800)]
librados: behave if errcb is NULL
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 00:35:41 +0000 (16:35 -0800)]
osd/Watch: drop redundant in_progress_watchers
This is essentially watchers.size() at all times and obfuscates the code.
In particular this makes the maybe_complete_notify() logic much clearer.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 00:18:30 +0000 (16:18 -0800)]
osd/Watch: fix comment typo
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 00:13:23 +0000 (16:13 -0800)]
ceph_test_rados_api_watch_notify: verify we get the right # of notifies
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Sat, 8 Nov 2014 00:04:25 +0000 (16:04 -0800)]
ceph_test_rados_api_watch_notify: s/handle/cookie/
Use consist nameing for C and C++ tests.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 7 Nov 2014 23:35:24 +0000 (15:35 -0800)]
clean up CEPH_WATCH_EVENT_* namespace, and make COMPLETE distinct
Use a proper prefix and make a separate event for the notify completion
message.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 03:19:00 +0000 (20:19 -0700)]
osdc/Objecter: send regular PING ops
Send a full PING op to the object to ensure we are still connected. For
now just use the existing ping interval; we may want to change this in
the future.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 03:17:40 +0000 (20:17 -0700)]
osdc/Objecter: queue an error if reconnect fails
If we fail to reconnect, trigger the on_error (reusable) context to
let the user know about it.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 03:16:07 +0000 (20:16 -0700)]
osdc/Objecter: separate WATCH from RECONNECT
Use WATCH op for the initial registration. This is idempotent in that
it will succeed whether the watch information has been persisted or not.
It is used by the client if it does not know that it is registered.
The RECONNECT op is used for any subsequent session reconnect. It will
fail if the watch state isn't already persisted on the OSD.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 03:12:22 +0000 (20:12 -0700)]
rados: improve watch command output
- hexdump the notify payload, and include all of the new metadata
- print error events too
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 03:11:43 +0000 (20:11 -0700)]
librados: add infrastructure to deliver an error notification
Use a reusable context in the WatchNotifyInfo to trigger an error
event, delivered via the existing Finisher thread. Re-lookup the cookie
in the thread to cope with races with unregister (just as we do with
notify events).
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 03:09:07 +0000 (20:09 -0700)]
librados: define error callback
This is the async notification of a watch error (failure to reconnect to
the object's OSD after a peering event or network disconnect).
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 02:52:52 +0000 (19:52 -0700)]
librados: remove crufty declaration
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 02:28:53 +0000 (19:28 -0700)]
osd/ReplicatedPG: handle PING and RECONNECT watch ops
The ping will essentially assert that a watch is still valid.
A reconnect will reestablish session state *only* if the watch is
still persistent. If not, it will fail (and the client will know it
may have missed something).
Note that the only difference here is that a PING is a bit lighter
weight; it will not reestablish the session state (which should already
be established). We could use a single op here but the unique op
code makes the messages easier to understand and simplifies the code
path a bit for PING.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 17 Oct 2014 02:26:17 +0000 (19:26 -0700)]
librados: define RECONNECT and PING watch ops
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 10 Oct 2014 01:14:53 +0000 (18:14 -0700)]
osdc/Objecter: fix assert_src_version
Don't use the add_watch() helper; do it like assert_version
does it.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 10 Oct 2014 01:14:15 +0000 (18:14 -0700)]
librados: use new watch op codes; simplify Objecter helpers
- drop the useless add_watch() helper; do it explicitly
- drop the unused var arg everywhere
- make a separate notify member of the union that excludes
the other unused fields
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 10 Oct 2014 01:11:44 +0000 (18:11 -0700)]
librados: define CEPH_OSD_WATCH_OP_*
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 10 Oct 2014 00:42:14 +0000 (17:42 -0700)]
librados: unconditionally pass WATCH_NOTIFY to legacy callback
This was always WATCH_NOTIFY; just pass that explicitly. No need to
pay attention to what's in the message.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Wed, 8 Oct 2014 15:25:45 +0000 (08:25 -0700)]
osd: allow multiple watchers/notify replies per client
It is perfectly valid to register multiple watchers via the same
librados client. Make the notify_replies a multimap to capture all
of the acks.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 7 Oct 2014 22:56:52 +0000 (15:56 -0700)]
librados: include notifier's gid in notify
The notify replies include the identify of everyone who acked the
notify. For symmetry, inform the notified client who sent the notify.
Fixes: #9198
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 7 Oct 2014 22:28:55 +0000 (15:28 -0700)]
ceph_test_rados_api_watch_notify: test notify2 api
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 21 Aug 2014 21:52:34 +0000 (14:52 -0700)]
librados: update notify2 API to accept reply payloads
Allow the notify2 callers to provide bufferlists or char ** pointers
so that we can pass the reply buffer back to them.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 21 Aug 2014 21:46:35 +0000 (14:46 -0700)]
osd: implement notify ack payloads
If the notified send back reply payloads, pass them back to the notifier.
Note that we have changed the on-wire behavior of the watch completion
message a bit: instead of sending the original notify payload back to the
notifier, we send the map of notified to replies. Note that only users of
the new API will know what to do with the notify acknowledgement
information. At the same time, we stop sending the original payload.
However, the old API users never saw that data; we were uselessly sending
it over the wire.
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 21 Aug 2014 21:32:48 +0000 (14:32 -0700)]
librados: define updated watch/notify interface
- new notify callback with the correct values:
- notify_id
- watch handle
- payload
- new notify_ack call
- not implicit when the callback returns (for new api only)
- optional payload
- new watch2 call
- that provides the new callback
- new notify2 call
- with the right arguments, and optional timeout
A couple refactors in here:
- IoCtx notify_ack is now called unlocked (Note: this will soon change
with pending Objecter locking changes)
- Objecter notify_ack takes a buffer
TODO:
- no timeout on the individual watch, yet...
Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 21 Aug 2014 20:38:17 +0000 (13:38 -0700)]
librados: drop useless ver arg to _notify_ack
Signed-off-by: Sage Weil <sage@redhat.com>
Gregory Farnum [Thu, 4 Dec 2014 18:31:34 +0000 (10:31 -0800)]
Merge pull request #3076 from ceph/wip-mon-mdsdne
MDSMonitor.cc: fix assertion caused by MDSMap::STATE_DNE state
Reviewed-by: Greg Farnum <gfarnum@redhat.com>
Sage Weil [Thu, 4 Dec 2014 18:13:55 +0000 (10:13 -0800)]
Merge pull request #3072 from ceph/wip-10231-gperftools-location
heap_profiler: support new gperftools header locations
gitbuilders are happy
Reviewed-by: Sage Weil <sage@redhat.com>
Sage Weil [Thu, 4 Dec 2014 18:11:18 +0000 (10:11 -0800)]
Merge pull request #3084 from ceph/wip-rados-include
librados: Fix rados include problem reported by "sponce"
Reviewed-by: Sage Weil <sage@redhat.com>
David Zafman [Thu, 4 Dec 2014 18:02:38 +0000 (10:02 -0800)]
librados: Fix rados include problem reported by "sponce"
Caused by
a03f85a8e7fab296ea2df70a929a1c5e4aa0f7fb
Signed-off-by: David Zafman <dzafman@redhat.com>