os/FileJournal: stop aio completion thread *after* writer thread

The writer thread may submit a new aio to update the header in its
final moments before shutting down.  Do not stop the aio thread until after
that has happened or else we may not wait for those aio completions.

Signed-off-by: Sage Weil <sage@redhat.com>
Revert "os/FileJournal: For journal-aio-mode, don't use aio when closing journal."

This reverts commit e870fd09ce846e5642db268c33bbe8e2e17ffef2.

The aio completion thread will now wait for the final header update aio to
finish; this workaround is no longer necessary.

Signed-off-by: Sage Weil <sage@redhat.com>
systemd support in ceph-disk activate

previous code just fails for systemd with an error

Signed-off-by: Owen Synge <osynge@suse.com>
doc: Add file system osd config settings
Add documentation for osd mkfs and osd mount options.

Signed-off-by: Kevin Dalley <kevin@kelphead.org>
rgw: Export user stats in get-user-info Adminops API

Fixes: #9359

Signed-off-by: Ray Lv <raylv@yahoo-inc.com>
rgw: PutObjMetadata, clear bufferlist before appending into it

Fixes: #9576
Backport: firefly, dumpling

We need to completely rewrite the bufferlist, not append into it.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw: rados->set_attrs() updates bucket index

Fixes: #5595
Backport: dumpling, firefly
We need to update the bucket index when updating object attrs, otherwise
we're missing meta changes that need to be registered. It also
solves issue of bucket index not knowing about object acl changes,
although this one still requires some more work.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
Clock: Using clock_gettime instead of gettimeofday in linux os.

The precision of utime_t is nsec. In func ceph_clock_now, it use
gettimeofday to set utime_t. But the precision of gettimeofday is
microseconds. In linux, the precision of clock_gettime is nsec.
So using clock_gettime install gettimeofday in order to get higer
precision.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
rgw: swift GET / HEAD object returns X-Timestamp field

Fixes: #8911
Backport: giant, firefly, dumpling
Swift clients expect X-Timestamp header, dump it.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
ceph-disk: set guid if reusing a journal partition

When reusing a journal partition (e.g. /dev/sda2) we should set a
new partition guid and link it correctly with the OSD. This way
the journal is symlinked by its persistent name and ceph-disk list
works correctly.

Signed-off-by: Dan van der Ster <daniel.vanderster@cern.ch>
os/FileStore: do not loop in sync_entry on shutdown

Normally we repeat a sync if the journal is full and asks for it or if we
have pending sync waiters.  This isn't for correctness: it's to move things
along quickly.

If we are shutting down *and* the journal is full, however, we currently
can get stuck in a loop where we repeatedly sync.  However, the journal
never gets unfull because we aren't expiring anything.

We tried to fix this in 682b9daacb1960eb60b5f0e9b40d4a3a3e9afd5b but that
didn't work because we don't tell the journal to stop before we shut down
the filestore sync thread.

I'm pretty sure there is another issue in the journal code as

 full_state == FULL_FULL
 submit_manager.op_seq = 14761
 apply_manager.committing_seq = 14761
 apply_manager.committed_seq = 14761

which seems odd.  But I have no longs.  Meanwhile, this fixes the hang.

Fixes: #9545
Signed-off-by: Sage Weil <sage@redhat.com>
Avoid unused pg_to_acting_osds call in OSDMap::get_primary_shard for not ec pool

Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
msg/simple: do not stop_and_wait on mark_down

We originally blocked in mark_down for fast dispatch threads
to complete to avoid various races in the code.  Most of these
were in the OSD itself, where we were not prepared to get
messges on connections that had no attached session.  Since
then, the OSD checks have been cleaned up to handle this.
There were other races we were worried about too, but the
details have been lost in the depths of time.

Instead, take the other route: make mark_down never block on
dispatch.  This lets us remove the special case that
was added in order to cope with fast dispatch calling
mark_down on itself.

Now, the only stop_and_wait() user is the shutdown sequence.

Signed-off-by: Sage Weil <sage@redhat.com>
Revert "Objecter: disable fast dispatch of CEPH_MSG_OSD_OPREPLY messages"

This reverts commit 3f23709c474292f9239f77a6cce26309fc86ce29.

We have changed mark_down() behavior so that it no longer blocks on
fast dispatch.  This makes the objecter reply handler safe again.

Fixes: #9598
Signed-off-by: Sage Weil <sage@redhat.com>
rgw: correct "If-Modified-Since" handle.

Normally client will use `Last-Modified` of server returned, as the
value of `If-Modified-Since`. So the `ctime` is exactly equal to
`*mod_ptr`, and rgw should return `Not Modified`, otherwise the cache
will never worked.

Signed-off-by: VRan Liu <gliuwr@gmail.com>
Revert "ceph_test_rados_api_*: expose nspace"

This reverts commit 977d289055d69ab8a7baaf7ef68c013019225833.

The nspace string doesn't need to be static because it isn't
set by a static function.
ceph_test_rados_api_*: expose RadosTest::nspace
Expose RadosTestEC::nspace
Rename others to nspace for consistency

Signed-off-by: David Zafman <dzafman@redhat.com>
test, key_value_store: Use pool rbd since no default data pool present

Signed-off-by: David Zafman <dzafman@redhat.com>
test: Handle destructor of KvStoreBench by adding io_ctx_ready bool

Signed-off-by: David Zafman <dzafman@redhat.com>
doc: Add namespace to description of rados_ioctx_t

Signed-off-by: David Zafman <dzafman@redhat.com>