mds: re-integrate stray when link count >= 1

no reason not to rename inode out of the stray directory if the
inode's link count > 1

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
mds: touch dentry bottom recursively

Deleted directory inode's dirfrags may contain some null dentries.
When touch_dentry_bottom() is called, also move these null dentries
to the tail of LRU.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
mds: allow delay in evaluating stray

Add a new parameter 'delay' to MDCache::eval_stray(). If 'delay'
is true, MDCache::eval_stray() adds the stray dentry to a delayed
list. Delayed stray dentries are processed in MDCache::trim().

This change is required by later commit that evaluates stray when
reference to cache object is released.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
ErasureCode: proofread abstract API documentation

* Andreas-Joachim Peters suggests to reduce copies to the minimum. When
  possible the output arguments will just point to the input
  argument. This must be documented as any side effect on the input
  argument may modify the output argument

* Fix typos

* Fix may/could/must/should to better reflect what's mandatory and
  what's not.

* Reword the explanation of minimum_to_decode_with_cost to not suggest
  an implementation. This will need to be revisited anyway, when the
  semantic of the cost is defined.

* Explain chunk size constraints

Signed-off-by: Loic Dachary <loic@dachary.org>
ErasureCode: improve API implementation example

* minimum_to_decode and minimum_to_decode_with_cost are replaced with
  meaningfull examples instead of placeholders

* encode and decode are commented and hard coded constants are replaced
  by defines for readability

* run against valgrind

Signed-off-by: Loic Dachary <loic@dachary.org>
ErasureCode: plugin loading in progress flag

The bool loading data member of ErasureCodePluginRegistry is
set to true when a plugin is being loaded, to provide an observable side
effect for test purposes.

Signed-off-by: Loic Dachary <loic@dachary.org>
ErasureCode: complete plugin loader unit tests

* TestErasureCodePluginExample.cc is renamed to TestErasureCodePlugin.cc
  because it's not limited to the example which is really used to
  support tests rather than being tested.

* Bugous plugins are added to exhibit failures and enable the unit tests
  to check they are handled as expected

  ErasureCodePluginFailToInitialize : the entry point returns != 0
  ErasureCodePluginFailToRegister : the plugin registry is not updated
  ErasureCodePluginMissingEntryPoint : the shared library has no entry
  point

* It would be difficult to prove that the mutex protecting against
  multiple loads actually does what it is expected to because of the
  lack of thread introspection functions such as : tell me if this
  thread is waiting on this mutex. A simpler approach is chosen : create
  a thread that blocks forever when loading ( that's what the delay in
  the example plugin is for ) and then check that the lock has indeed
  been acquired. Since this mutex is merely about making sure that only
  one thread at a time runs this sequence of code, it's probably enough.

Signed-off-by: Loic Dachary <loic@dachary.org>
Makefile: fix unittest_crc32c

This got dropped during the makefile refactor.

Signed-off-by: Sage Weil <sage@inktank.com>
Makefile: fix unittest_arch

Also broken by makefile refactor.

Signed-off-by: Sage Weil <sage@inktank.com>
Merge pull request #604 from ceph/wip-buck-centos-core

Wip buck centos core
Reviewed-by: Gary Lowell <gary.lowell@inktank.com>
rgw: use bufferlist::append() instead of bufferlist::push_back()

push_back() expects char *, whereas append can append a single char.
Appending a NULL char to push_back is cast as a NULL pointer which is
bad.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
code_env: use feature test for PR_GET_NAME support

Function `get_process_name` has platform specific dependencies. Check
for Linux prctl function and correct command flag.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
mon: fix inverted test in osd pool create

When using the properties key=value only, the test was inverted
and an attempt to obtain a substring at index string::npos throws
an exception.

Add variations of osd pool create to qa/workunits/mon/pool_ops.sh
to assert the problem has been fixed and all code paths are used.

http://tracker.ceph.com/issues/6357 fixes #6357

Signed-off-by: Loic Dachary <loic@dachary.org>
doc: Added draft of region/zone diagram.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Made some changes and incorporated a draft diagram.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
mon: fix wrong arg to "instructed to" status message

Fixes: #6293
Signed-off-by: Dan Mick <dan.mick@inktank.com>
osd: move pow2_hist_t out of osd_types and into include/

This has only been used for the OSD so far, but as with the rest
of the OpRequest stuff, it's actually pretty generic.

Signed-off-by: Greg Farnum <greg@inktank.com>
Merge pull request #609 from dmick/wip-6293

mon: fix wrong arg to "instructed to" status message

Reviewed-by: David Zafman <david.zafman@inktank.com>
OpRequest: remove obsolete comment about ref-counting (use OpRequestRef!)

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: start making the OpTracker into a generic

We're starting by templating the create_request function and having
the OpTracker work in terms of TrackedOp[Ref]s intead of
OpRequest[Ref]s. This involves moving a bunch of stuff into the
base-class TrackedOp.

Signed-off-by: Greg Farnum <greg@inktank.com>