rgw: data changes log, naive implementation

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: data changes log, don't always send new requests

We may piggy back on older entries that hasn't expired yet.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
lru_map: infrastructure for a bounded map

Useful for cache-like maps, where we want to control
the max number of entries in the map.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: use shared_ptr instead of RefCountedObject

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: limit num of buckets in data changes log

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: changed data log renew thread

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
RefCounteCond: keep return val, wait() returns it

It is necessary in some cases to notify waiters of the
actual return value for the action they were waiting on.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: more data changes log implementation

Remove a bunch of hard coded stuff. Make renew thread updates
expiration. Only renew if there was more than one request through the
current window.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: resend data log entry if took too long

If took too long, we want to resend. Also, fix issue with
renew.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: metadata log trim

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
osd: don't assert if get_omap_iterator() returns NULL

Fixes: #4949
This can happen if the object does not exist and it's
a write operation. Just return -ENOENT.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: bucket index log trim

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: datalog trim

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
ceph_json: dump timestamp in utc

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: implement metadata hander for buckets data

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
armor: don't break lines by default

Added a new function that breaks the lines, but by default
don't do it.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: bucket metadata operations go through metadata handler

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: don't handle ECANCELLED anymore

Simplify, remove obsolete logic.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: metadata handler for bucket set_attr operations

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: rados->set_attr() just calls rados->set_attrs()

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>