Yan, Zheng [Tue, 10 Mar 2015 11:13:30 +0000 (19:13 +0800)]
mds: fix purging snapshotted stray inode
If stray inode has no snapshot data, it's OK to purge it even if
it's still referenced by some snapsthots. This is because seperate
snap inodes were created for snapshots.
Yan, Zheng [Tue, 10 Mar 2015 04:01:32 +0000 (12:01 +0800)]
mds: check snapset in journal_cow_dentry()
Removing snapshot also increases snaprealm's sequence number.
So only using snaprealm's sequence number to decide if we should
COW dentry is too loose. This patch makes journal_cow_dentry()
also check snaprealm's snapset.
Yan, Zheng [Wed, 18 Mar 2015 06:12:50 +0000 (14:12 +0800)]
mds: fix fnode.snap_purged_thru check
We do not alway succeed in purging all stale snap dentries
(stale snap dentris can be in-use or have been trimmed from
cache). Updating fnode.snap_purged_thru prematurely will make
us not purge the remainning stale snap dentries. If CDir
has no cached snap dentry when fetching dirfrag, we can
guaranee that all stale snap dentries will be purged.
So we only update fnode.snap_purged_thru in this case.
Now the code that purges stale snap dentries is executed more
frequently. So this patch also make readdir not purge stale
snap dentries
Yan, Zheng [Tue, 10 Mar 2015 03:21:22 +0000 (11:21 +0800)]
mds: disable snapshot rstat temporarily
that code that propagates snapshot rstat is buggy and
difficult to fix. (the main problem this code causes is
that snapshot rstat is always propagated to parent node,
which results large size of CInode:old_inodes).
Ilya Dryomov [Thu, 12 Mar 2015 11:27:32 +0000 (14:27 +0300)]
rbd: add rbd default map options config option
Allow supplying rbd map -o / --options through 'rbd default map
options' config option. Options specified on the command line take
precedence on a per-option basis, i.e. default and cli options are
merged with a preference for the latter. For example:
Raju Kurunkad [Tue, 10 Mar 2015 07:58:28 +0000 (13:28 +0530)]
XIO: Handle requeue case of XIO messages
If we are not able to send the XIO message using xio_send_msg(),
remove the XIO message from the send Q, before queuing it to the resend
Q. Otherwise, boost will generate a assert.
Ken Dreyer [Tue, 10 Mar 2015 16:23:30 +0000 (10:23 -0600)]
rm old ceph-deploy reference
There's no need to refer to this old version of ceph-deploy. v1.1.3 is
circa June 2013, and since that time, we have shipped much newer version
of ceph-deploy (1.5.22 at the time of this writing). We should simply
state the behavior of modern ceph-deploys here.
Loic Dachary [Wed, 4 Mar 2015 12:47:37 +0000 (13:47 +0100)]
tests: install-deps.sh install EPEL and RHEL Optional
On CentOS and RHEL, some dependencies come from EPEL.
Always enable RHEL Optional repository for RHEL as packages such as
packages such as libatomic_ops-devel or libedit-devel are only found
there in RHEL 6.5.
Michal Jarzabek [Thu, 5 Mar 2015 18:01:05 +0000 (18:01 +0000)]
mon/OSDMonitor: refactor and new key "all" for osd pool get command
This will only output all the values applicable to a given type of pool.
So for example for a pool that is not a tier pool values like HIT_SET_TYPE,
HIT_SET_PERIOD, HIT_SET_COUNT etc. will be ignored.
Fixes: #10891 Signed-off-by: Michal Jarzabek <stiopa@gmail.com>
Loic Dachary [Mon, 9 Mar 2015 14:41:21 +0000 (15:41 +0100)]
deb: add zlib1g-dev to Build-Depends for Debian/jessie
The zlib1g-dev is installed indirectly for Ubuntu 12.04 or Ubuntu 14.04
but it is only suggested in Debian/jessie. Adding it to the
Build-depends is redundant and harmless for Ubuntu and resolves the
missing dependency for Debian.
Loic Dachary [Mon, 9 Mar 2015 11:56:31 +0000 (12:56 +0100)]
tests: increase the delay waiting for a cluster event
In some cases the machine running tests may be slow enough that it takes
more than a minute for an OSD to come up. It only happens rarely and
changing the wait period from 60 seconds to 120 seconds. Is so slow
that it takes more than 2 minutes to bring an OSD up, chances are a lot
more will go wrong anyway.
Jianpeng Ma [Mon, 9 Mar 2015 06:23:23 +0000 (14:23 +0800)]
librbd: Add a paramter:purge_on_error in ImageCtx::invalidate_cache().
If bh_write met error, it will try again. For closing image, if met this
issue, it will trigger a assert:
>>2015-02-03 15:22:49.198292 7ff62d537800 -1 osdc/ObjectCacher.cc: In
function 'ObjectCacher::~ObjectCacher()' thread 7ff62d537800 time
>>2015-02-03 15:22:49.195927osdc/ObjectCacher.cc: 551: FAILED
>>assert(i->empty())
Now add purge_on_error, when shutdown_cache it set true.
In ImageCtx::invalidate_cache, if met error and purge_on_error is true,
purge the dirty bh.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
Jianpeng Ma [Fri, 6 Feb 2015 01:53:36 +0000 (09:53 +0800)]
osdc: For trust_enoent is true, there is only one extent.
Now the judgement only in conditon which will return -ENOENT.
But o->exists don't depend on the extent size. It only depend on
trust_enoent. So move this judgement at the first of _readx().
Make this bug ASAP occur.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
Samuel Just [Sat, 7 Mar 2015 02:02:25 +0000 (18:02 -0800)]
ReplicatedPG: block write on degraded object if there are waiters
Suppose we have min_size of 2 and size of 3, foo exists only on the
primary.
- block op 1 on foo due to < min_size
- start recovery on foo for replicas 1 and 2
- complete push to replica 1 (2 copies now)
- allow op 2 on foo through since we have 2 copies
- complete recovery on foo, requeue op 1
Fixes: 11057 Signed-off-by: Samuel Just <sjust@redhat.com>
Sage Weil [Sat, 7 Mar 2015 01:43:11 +0000 (17:43 -0800)]
crush: parse alg names that include a digit
The str_p("straw2") won't parse straw2, it seems because the digit is throwing
it off. Use the existing name rule instead which is more robust. Note that
not constraining the alg value here is better anyway because instead of a
'cannot parse' error that is hard to debug we instead get a 'unknown alg foo'
error when doing the semantic pass.
Fixes: #11015 Signed-off-by: Sage Weil <sage@redhat.com>
Loic Dachary [Thu, 5 Mar 2015 10:38:18 +0000 (11:38 +0100)]
install-deps.sh: strip | in the list of packages
Alternatives were introduced lately and the | needs to be stripped from
the list of packages to install otherwise apt-get will try to install
all packages.