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>
currently, import/import-diff check whether object is zero based on the whole object
therefore, holes inside object will be filled with zero
Signed-off-by: yaoning <yaoning@unitedstack.com>
read period config from local storage on RGWPeriod::update(), and write
the new config to storage on RGWPeriod::reflect()
Signed-off-by: Casey Bodley <cbodley@redhat.com>
The #include file <sys/auxv.h> is present on linux but
not FreeBSD. Move it under the #if __linux__ directive.
Signed-off-by: Andrew Solomon <asolomon@us.ibm.com>
We need to ensure that any preceding txcs have finished their deferred
writes before splitting, or else later txcs on the child sequencer will
not order/wait for deferred writes correctly before deallocated extents.
Fixes: http://tracker.ceph.com/issues/19379
Signed-off-by: Sage Weil <sage@redhat.com>
- remove all class buckets (even those that are in use)
- rebuild all class buckets (this will restore the buckets that were in
use with exactly the same id)
- remove the class buckets that are not used
Signed-off-by: Loic Dachary <loic@dachary.org>