Saw a run that showed the notify_all pg_summary as the last
message for this thread; hopefully we can see if it is
blocked in notify_all() or not.
Signed-off-by: Sage Weil <sage@redhat.com>
This avoids a deadlock if some other message arrives before
the command reply and needs to take the mgr lock in dispatch.
Signed-off-by: Sage Weil <sage@redhat.com>
Add a procedure that permits reconstructing metadata in a potentially
damaged cephfs metadata pool and writing the results into a
freshly-initialized pool that refers to the same data pool. Add option
flags to override checks that would ordinarily prevent this and add
options to the recovery tools to write output to a separate pool instead of
the one selected for recovery. See docs/cephfs/disaster-recovery.rst for
details.
Fixes: http://tracker.ceph.com/issues/15068
Fixes: http://tracker.ceph.com/issues/15069
Signed-off-by: Douglas Fuller <dfuller@redhat.com>
Don't allow creation of filesystems with overlaying metadata pools unless
the user passes --allow-dangerous-pool-overlay.
Signed-off-by: Douglas Fuller <dfuller@redhat.com>
If we go active multiple times we may already have an fsmap
subscription registered via MonClient, which means that we
won't receive a net new FSMap during the init phase. This is
trivial to reproduce; just 'ceph mgr fail x' and when it
activates the second time init() will get stuck waiting.
The core issue is that monc subs are stateful, but we forget
the various maps with the previous Mgr incarnation. Sipmle
workaround is to reset the mon connection as we init.
Signed-off-by: Sage Weil <sage@redhat.com>
rgw: Added code to correctly account for bytes sent/ received during a 'PUT' operation.
Reviewed-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
rgw/lifecycle: do not send lifecycle rules when GetLifeCycle failed
Reviewed-by: Daniel Gryniewicz <dang@redhat.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
Before this patch RGWBulkUploadOp::terminal_errors was declared as
std::initializer_list<int>. Unfortunately, a constexpr constructor
for it is available since C++14, not C++11. This was causing build
failures on FreeBSD.
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
If we resize the blob we need to adjust the resolution of the
unused bitmap, and that is only possible for some bit patterns.
For now just ignore blobs with unused blocks.
Add an assert in add_tail() so that we don't forget that
add_tail is (probably) where we'd would do that adjustment.
Signed-off-by: Sage Weil <sage@redhat.com>
Refer to http://lttng.org/docs/v2.9/ on dlclose side effects. Workaround is to use
RTLD_NODELETE flag when calling dlopen.
Signed-off-by: Anjaneya Chagam <anjaneya.chagam@intel.com>
Since multiple connections on different ports could exist, shouldn't use
device->active_port, instead use conn->ibport.
Or in other words, now Device object doesn't have an active_port,
instead every port specific action (create_qp, get_lid, get_gid etc.)
need to specify the port number. The information about the port number
is known to the connection (RDMAConnectedSocket*) who is the caller of
those actions.
Issue: 995322
Change-Id: I482cb87c04ba99845dc44f6dd0547835fe814ebf
Signed-off-by: Amir Vadai <amir@vadai.me>
common/simple_spin: use __ppc_yield() on all powerpc archs
Reviewed-by: Brad Hubbard <bhubbard@redhat.com>
Tested-by: Andrew Solomon <asolomon@us.ibm.com>
cmake,crc32c: conditionalize crc32c on different archs
Reviewed-by: Casey Bodley <cbodley@redhat.com>
Reviewed-by: Willem Jan Withagen <wjw@digiware.nl>
Tested-by: Andrew Solomon <asolomon@us.ibm.com>
There is very rare cases where get_partition_dev() is called before the actual partition is available in /sys/block/<device>.
It appear that waiting a very short is usually enough to get the partition beein populated.
Analysis:
update_partition() is supposed to be enough to avoid any racing between events sent by parted/sgdisk/partprobe and
the actual creation on the /sys/block/<device>/* entrypoint.
On our CI that race occurs pretty often but trying to reproduce it locally never been possible.
This patch is almost a workaround rather than a fix to the real problem.
It offer retrying after a very short to be make a chance the device to appear.
This approach have been succesful on the CI.
Note his patch is not changing the timing when the device is perfectly created on time and just differ by a 1/5th up to 2 seconds when the bug occurs.
A typical output from the build running on a CI with that code.
command_check_call: Running command: /usr/bin/udevadm settle --timeout=600
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_partition_dev: Try 1/10 : partition 2 for /dev/sda does not in /sys/block/sda
get_partition_dev: Found partition 2 for /dev/sda after 1 tries
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda2 uuid path is /sys/dev/block/8:2/dm/uuid
fixes: #19428
Signed-off-by: Erwan Velu <erwan@redhat.com>
so we can still compile if certain header file (<sys/auxv.h>) used
for detecting cpu capabilities on ppc is missing on x86 host machine.
Signed-off-by: Kefu Chai <kchai@redhat.com>
__ppc_yield() is declared in sys/platform/ppc.h by glibc, for better
portability we just use the inlined assembly here. the shared resource
hints are supported by PowerPC ISA 2.06 but on older PowerPC cores, they
are no-ops. so it's fine to do this way.
Signed-off-by: Kefu Chai <kchai@redhat.com>