Objecter: resend linger ops on any interval change

Watch/notify ops need to be resent after a pg split occurs, as well as
a few other circumstances that the existing objecter checks did not
catch.

Refactor the check the OSD uses for this to add a version taking the
more basic types instead of the whole OSD map, and stash the needed
info when an op is sent.

Fixes: #9806
Backport: giant, firefly, dumpling
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
common/Timer: kill RWTimer

This doesn't work the way we hoped it would, and as of
8253ead1748fc429bf48f5334ee4460ee865d941.  Remove it.

Signed-off-by: Sage Weil <sage@redhat.com>
mailmap: Federico Gimenez affiliation

Signed-off-by: Loic Dachary <loic-201408@dachary.org>
Merge pull request #2802 from dachary/wip-mailmap

mailmap: Federico Gimenez affiliation

Reviewed-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
init-ceph: make ./init-ceph behave from src dir on systemd

Signed-off-by: Sage Weil <sage@redhat.com>
client: fix I_COMPLETE_ORDERED checking

Current code marks a directory inode as complete and ordered when readdir
finishes, but it does not check if the directory was modified in the middle
of readdir. This is wrong, directory inode should not be marked as ordered
if it was modified during readddir

The fix is introduce a new counter to the inode data struct, we increase
the counter each time the directory is modified. When readdir finishes, we
check the counter to decide if the directory should be marked as ordered.

Fixes: #9894
Signed-off-by: Yan, Zheng <zyan@redhat.com>
client: cast m->get_client_tid() to compare to 16-bit Inode::flushing_cap_tid

m->get_client_tid() is 64 bits (as it should be), but Inode::flushing_cap_tid
is only 16 bits. 16 bits should be plenty to let the cap flush updates
pipeline appropriately, but we need to cast in the proper direction when
comparing these differently-sized versions. So downcast the 64-bit one
to 16 bits.

Fixes: #9869
Backport: giant, firefly, dumpling

Signed-off-by: Greg Farnum <greg@inktank.com>
Merge pull request #2786 from ceph/wip-9869

client: cast m->get_client_tid() to compare to 16-bit Inode::flushing_cap_tid
osd: cache tiering: fix the atime logic of the eviction

Reported-by: Xinze Chi <xmdxcxz@gmail.com>
Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
Merge pull request #2815 from wonzhq/evict-atime

osd: cache tiering: fix the atime logic of the eviction

Reviewed-by: Sage Weil <sage@redhat.com>
  Fix the match error when starting OSD daemons.
  If we have osd.7 and osd.77 on the same host, osd.7 will not be mounted if
  osd.77 is mounted.
  Signed-off-by: huangjun <hjwsm1989@gmail.com>
Merge pull request #2818 from hjwsm1989/master

  Fix the match error when starting OSD daemons.

Reviewed-by: Loic Dachary <loic-201408@dachary.org>
client: allow xattr caps in inject_release_failure

Because some test environments generate spurious
rmxattr operations, allow the client to release
'X' caps.  Allows xattr operations to proceed
while still preventing client releasing other caps.

Fixes: #9800
Signed-off-by: John Spray <john.spray@redhat.com>
Merge pull request #2809 from ceph/wip-9800

client: allow xattr caps in inject_release_failure

Reviewed-by: Greg Farnum <greg@inktank.com>
Merge remote-tracking branch 'origin/wip-9806-giant' into giant

Reviewed-by: Samuel Just <sam.just@inktank.com>
Merge remote-tracking branch 'origin/giant'
qa: avoid qa/workunits/cephtool/test.sh unstability

For testing injectargs a configuration option was changed that has side
effects on the cluster. It could introduce random failures later. It is
replaced with a configuration option that cannot have adverse side
effects on the cluster.

http://tracker.ceph.com/issues/9919 Fixes: #9919

Signed-off-by: Loic Dachary <loic-201408@dachary.org>
Merge pull request #2823 from dachary/wip-9919-injectargs-side-effects

qa: avoid qa/workunits/cephtool/test.sh unstability

Backport: giant, firefly
Reviewed-by: Sage Weil <sage@redhat.com>
osd: tiering: calculate object age during eviction when there is no hit
set

Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
rbd: Fix the rbd export when image size more than 2G

When using export <image-name> <path> and the size of image is more
than 2G, the previous version about finish() could not handle in
seeking the offset in image and return error.

This is caused by the incorrect variable type. Try to use the correct
variable type to fixed it.

I use another variable which type is uint64_t for confirming seeking
and still use the previous r for return error.

uint64_t is more better than type int for handle lseek64().

Signed-off-by: Vicente Cheng <freeze.bilsted@gmail.com>