myoungwon oh [Wed, 13 Dec 2017 15:26:19 +0000 (00:26 +0900)]
qa/suites/rados/thrash: remove write op
current chunked object and ChunkReadOp are
only for the read case.
write op and promote_object() still be tested without ChunkReadOp
by another ceph_test_rados in the same test suite (with --set_chunk)
myoungwon oh [Wed, 13 Dec 2017 04:38:39 +0000 (13:38 +0900)]
osd: fix unordered read bug (for chunked object)
The current implementation for chunked object only supports
proxy_read(if offset is within range) and write(local write)
In this case, a read request can be handled before a write request.
This commit prevents unordered read processing because
proxy_read() will be executed if the chunk is missing state.
If chunked object has been overwritten, its state will not be missing.
Dan Mick [Wed, 29 Nov 2017 23:29:17 +0000 (15:29 -0800)]
ceph_disk: allow "no fsid" on activate
The intent was to allow "no fsid" configurations when only one
conf file named 'ceph.conf' was present, but the code has a bug
in that ceph-osd --show-config-value will return a default all-0
uuid. Treat 'all-0' as we were treating 'None'.
Sage Weil [Thu, 16 Nov 2017 20:26:27 +0000 (14:26 -0600)]
osd/PG: restart recovery if NotRecovering and unfound found
If we are in recovery_unfound state waiting for unfound objects, and we
find them, we need to restart the recovery reservation process so that we
can recover. Do this by queueing DoRecover() event instead of calling
queue_recovery() (which won't do anything since we're not in
recoverying|backfilling pg states).
Make the parent Active state ignore DoRecovery so that if we are already
in some phase of recovery/backfill the event gets ignored. It is already
handled by the other important substates that care, like Clean (for
repair's benefit).
I'm not sure why states like Activating are paying attention tot his vevent...
Fixes: http://tracker.ceph.com/issues/22145 Signed-off-by: Sage Weil <sage@redhat.com>
Adam C. Emerson [Wed, 29 Nov 2017 18:17:12 +0000 (13:17 -0500)]
Merge pull request #18954 from adamemerson/wip-hole-in-the-bucket-dear-liza
rgw: Add try_refresh_bucket_info function
rgw: Add retry_raced_bucket_write
rgw: Handle stale bucket info in RGWPutMetadataBucket
rgw: Handle stale bucket info in RGWSetBucketVersioning
rgw: Handle stale bucket info in RGWSetBucketWebsite
rgw: Handle stale bucket info in RGWDeleteBucketWebsite
rgw: Handle stale bucket info in RGWPutBucketPolicy
rgw: Handle stale bucket info in RGWDeleteBucketPolicy
rgw: Expire entries in bucket info cache
Kefu Chai [Wed, 29 Nov 2017 04:15:48 +0000 (12:15 +0800)]
qa/tasks/ceph_manager: add inject_args() method
* move Thrasher._set_config() to CephManager, and make it a public
method, and rename it to inject_args(),
* use this method instead of using 'tell ... injectargs ...' directly
Kefu Chai [Tue, 28 Nov 2017 10:00:37 +0000 (18:00 +0800)]
cmake,rpm,deb: update to accommodate SPDK v17.10
* cmake/modules/BuildSPDK.cmake: add lvol
* cmake/modules/BuildDPDK.cmake: add pci and bus_pci
* ceph.spec.in, cmake/modules/BuildSPDK.cmake, debian/control:
re-introduce libuuid dependency, as 17.07 added lvol. and the latter
depends on uuid.
* cmake/modules/BuildSPDK.cmake: avoid introducing local variable of
`iface_libs`.
* cmake/modules/patch-dpdk-conf.sh: disable
CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES, this option introduces the
balanced allocation of memory. but it also requires libnuma-dev.
let's disable it for now.
Kefu Chai [Tue, 28 Nov 2017 07:21:55 +0000 (15:21 +0800)]
cmake,common/RWLock: check for libpthread extensions
pthread_rwlockattr_setkind_np() is a GNU extension of libpthread. and
Tianshan Qu pointed out, we cannot use
ifdef(PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) to detect the
availability of this function, because it's an enum not a macro. so,
like other *_np() extensions, we check this one also using cmake at
the configure phase.
Kefu Chai [Tue, 28 Nov 2017 06:42:31 +0000 (14:42 +0800)]
qa/ceph-disk: enlarge the simulated SCSI disk
100MB will be allocated for journal, and the remaining 100MB is for data
device. taking the inode into consideration, there will be approximately
87988 kB available for the activated OSD. and it will complain with a
"nearfull" state.
Kefu Chai [Mon, 27 Nov 2017 08:35:56 +0000 (16:35 +0800)]
ceph-disk: path_set_context() after rename()
it does not matter if we chown/restorecon before or after the rename,
but the logging message looks better this way: instead of fixing the
.tmp files, we are updating the attributes of the dest files w/o
.${pid}.tmp extension.
Kefu Chai [Mon, 27 Nov 2017 04:08:04 +0000 (12:08 +0800)]
qa/workunits/ceph-disk: do not redirect stderr to stdout
normally, if we care about the output of ceph-disk, we expect a json
string, and ceph-disk sends the output to stdout, and errors/warnings
to stderr. so everything works as expected. and the test should also
follow this tradition. for example, if deprecated warnings are printed,
the warning message should not be collected along with the json string.
Adam C. Emerson [Fri, 17 Nov 2017 22:15:26 +0000 (17:15 -0500)]
rgw: Expire entries in bucket info cache
To bound the degree to which an RGW instance can go out to lunch if
the watch/notify breaks down, force refresh of any cache entry over a
certain age.
Fifteen minutes by default, and expiration can be turned off entirely.
This is separate from the LRU. The LRU removes entries based on the
last time of access. This expiration patch forces refresh based on the
last time they were updated.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Adam C. Emerson [Thu, 16 Nov 2017 19:42:58 +0000 (14:42 -0500)]
rgw: Add try_refresh_bucket_info function
Sometimes operations fail with -ECANCELED. This means we got raced. If
this happens we should update our bucket info from cache and try again.
Some user reports suggest that our cache may be getting and staying
out of sync. This is a bug and should be fixed, but it would also be
nice if we were robust enough to notice the problem and refresh.
So in that case, we invalidate the cache and fetch direct from the
OSD, putting a warning in the log.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Nathan Cutler [Mon, 27 Nov 2017 14:09:39 +0000 (15:09 +0100)]
cmake: mgr: exclude .gitignore
Fixes RPMLINT warning:
ceph-mgr.x86_64: W: version-control-internal-file /usr/lib64/ceph/mgr/.gitignore
ceph-mgr.x86_64: W: version-control-internal-file /usr/lib64/ceph/mgr/dashboard/static/AdminLTE-2.3.7/.gitignore
You have included file(s) internally used by a version control system in the
package. Move these files out of the package and rebuild it.
Note: the backslash has to be doubled up for the regex to make
it through CMake.