| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
And the subsequent
"ReplicatedPG: add a cookie to get_backfill_read() to identify requester"
Forgot to take the lock in the unfound branch, which still adds it
to the waiting_for_missing_object list.
|
|
|
|
|
|
|
| |
We were previously not erasing empty entries, which was confusing
the rw_manager recovery locking.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
| |
Should have added these when we took them; whoops!
|
|
|
|
|
|
|
| |
This way we can tell if we're getting clashing lock requesters, or if
the repeat is appropriate.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
| |
|
|
|
|
|
|
| |
Need them here too.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
| |
This was causing tons of crashes
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
|
|
|
|
| |
Setting it true even if we aren't actually waiting doesn't break
anything else happening, and lets us assert
1) that we're the only doing grabbing the recovery lock,
2) that we have actually taken a recovery lock when dropping one.
(We aren't always doing so now, so this should simplify debugging.)
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
| |
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All our interfaces are in place, so now we can actually take and
drop the locks. We do so in a few different places:
1) Take locks in ReplicatedPG::recover_backfill. This is the main
entry into the code path.
1a) Take locks when responding to a pull request. This can only happen
on non-primary nodes, so we don't need to worry about the request blocking.
2) Drop the locks in ReplicatedBackend::build_push_op() when it's done
reading the object and has pushed it all.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
|
|
|
|
| |
Getting the read locks is never going to block, since PGBackend only
does this for pulls, on non-primary PGs. The interface is necessary
so that the PGBackend can drop locks, though, as it's responsible
for organizing and doing the pushes (thereby knowing when it's done
with the reads!).
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
| |
Get rid of the stupid aliasing we did for git diff convenience.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
|
|
|
|
| |
We previously inferred whether there was useful work to be done
by looking at the number of ops started, but with the upcoming
introduction of the rw_manager read locking on backfill, we could
start no ops while still having work to do. Switch around the
interfaces to specify these as separate pieces of information.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
|
|
|
|
| |
We want backfill to take read locks on the objects it's pushing. Add
a get_backfill_read(hobject_t) function, a corresponding drop_backfill_read(),
and a backfill_waiting_on_read member in ObjState. Check that member when
getting a write lock, and in put_write(). Requeue the recovery if necessary,
and clean up the backfill block when its read lock is dropped.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
|
|
|
| |
This way we can try and get locks which aren't associated with
an OpRequest.
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|
|
|
| |
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|\
| |
| | |
a couple trivial leaks
|
| |
| |
| |
| | |
Signed-off-by: Sage Weil <sage@inktank.com>
|
|/
|
|
|
|
| |
demangle is allocating with malloc() in this case.
Signed-off-by: Sage Weil <sage@inktank.com>
|
|\
| |
| |
| |
| | |
Wip 6582
Reviewed-by: Sage Weil <sage@inktank.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We may need to requeue copy ops which are cancelled as part of an acting
set change but don't change the primary. To support this, add a
"requeue" flag to cancel_copy_ops() and copy_ops(), as well as to
CopyResults. The CopyCallback is then responsible for requeuing (the
higher layers can't do so as they can't know which request actually
triggered the copy).
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|/
|
|
| |
Signed-off-by: Greg Farnum <greg@inktank.com>
|
|\ |
|
| | |
|
|\ \
| | |
| | |
| | | |
Add Redhat init script option
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
|
| | |
| | |
| | |
| | |
| | | |
Resolves: 6127
Signed-off-by: Andrew Woodward <awoodward@mirantis.com>
|
|\ \ \
| |/ /
|/| |
| | |
| | | |
fix cached crc, bug #6583
Reviewed-by: Samuel Just <sam.just@inktank.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This does not capture users who
- calc a crc
- use c_str() to modify the buffer content
- (re)calc a crc
Signed-off-by: Sage Weil <sage@inktank.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Sage Weil <sage@inktank.com>
|
|/ /
| |
| |
| | |
Signed-off-by: Sage Weil <sage@inktank.com>
|
| |
| |
| |
| |
| |
| | |
Arg name changed from poolid to pool in e2602c54.
Signed-off-by: Sage Weil <sage@inktank.com>
|
| |
| |
| |
| | |
Signed-off-by: Sage Weil <sage@inktank.com>
|
| |
| |
| |
| | |
Signed-off-by: Sage Weil <sage@inktank.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of telling configure to put things in /sbin, explicitly put the
two important items (mkcephfs and mount.fuse.ceph) in /sbin via an
automake rule. This unbreaks FreeBSD 9.1 and probably others.
Based on patches originally from Alan Somers <asomers@gmail.com>, modified
for the current Makefile structure and applied to the specfile too.
Fixes: #6456
Signed-off-by: Sage Weil <sage@inktank.com>
Tested-by: Alan Somers <asomers@gmail.com>
|
| |
| |
| |
| |
| |
| | |
Fixes: 6565
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
|
|\ \
| | |
| | |
| | | |
Reviewed-by: Greg Farnum <greg@inktank.com>
Partly-Reviewed-by: Sage Weil <sage@inktank.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Test the directory fragments feature
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
avoid adding bare-bones dirfrag that has not yet been fetched from
the disk to the journal.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If fragtree is (*^1, 1*^1) and we want leaves under frag 000*.
get_leaves_under() return frag 0*, frag 10* and frag 11*. This is
obviously wrong.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If client has outdated directory fragments information, it may request
readdir an non-existent directory fragment. In this case, the MDS finds
an approximate directory fragment and sends its contents back to the
client. When receiving a reply with fragment that is different than the
requested one, the client need to reset the 'readdir offset'.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
So we don't lose the latest readdir frag and offset after marking
end of readdir.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If client has outdated dirfrags information, readdir request from
it may specify a non-existing dirfrag. Current method to handle this
case is reply -EAGAIN and let client retry. When client receives the
the -EAGAIN reply, it need to refresh its dirfrags information first,
then re-send the readdir request.
A better way to handle client request that specify a non-existing
dirfrag is: MDS chooses a approximate dirfrag, then handle the request
like normal. When client receives the readdir reply, it will also
update its dirfrags information.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
make sure it return true when all dirfrags under the given frag_t
are found.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
fragment 'bits' should be negative for the merging case.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
the code that prepares and purges stray dentry assumes that we never
freeze stray directories. So disable fragmentating stray directories
temporarily.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
|