CInode::pop_projected_snaprealm() was called after calling
CDentry::pop_projected_linkage(). So get_parent_inode()->find_snaprealm()
is not past parent snaprealm. The fix is set snaprealm->open to 'false'
and let SnapRealm::_open_parents() open the new past parent.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
make sure snaprealm's parents are opened before building
cached_snaps/cached_snap_context/cached_snap_trace
Signed-off-by: Yan, Zheng <zyan@redhat.com>
getnum() returns an integer while maxfilelen is a unsinged long.
Use a temp var to be able to check the result of the call.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Don't check for the conditions used inside get_projected_parent_dn(),
simply check if the returned value is valid.
Fix for:
CID 716915: Dereference after null check (FORWARD_NULL)
var_deref_model: Passing null pointer this->get_projected_parent_dn()
to pre_dirty, which dereferences it.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Fix for:
CID 1232599: Bad bit shift operation (BAD_SHIFT)
negative_shift: In expression i << (4 - split_bits) % 4, shifting by
a negative amount has undefined behavior. The shift amount,
(4 - split_bits) % 4, is -1.
CID 1232600: Bad bit shift operation (BAD_SHIFT)
negative_shift: In expression 1 << pg_num_bits - 1, shifting by a
negative amount has undefined behavior. The shift amount,
pg_num_bits - 1, is -1.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
CID 1058792 (#1 of 1): Copy into fixed size buffer (STRING_OVERFLOW)
fixed_size_dest: You might overrun the 4097 byte fixed-size string
cname by copying &pde->d_name[8UL] - 1 without checking the length.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
CID 1296375 (#1 of 1): Buffer not null terminated (BUFFER_SIZE_WARNING)
buffer_size_warning: Calling strncpy with a maximum size argument of
1024 bytes on destination array logfile of size 1024 bytes might leave
the destination string unterminated.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
CID 717135 (#1 of 1): Not restoring ostream format (STREAM_FORMAT_STATE)
1. format_changed: precision changes the format state of std::cout for
category precision.
4. end_of_path: Changing format state of stream std::cout for category
precision without later restoring it.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
CID 717134 (#1 of 1): Not restoring ostream format (STREAM_FORMAT_STATE)
4. format_changed: precision changes the format state of std::cout
for category precision.
26. end_of_path: Changing format state of stream std::cout for category
precision without later restoring it.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
CID 717133 (#1 of 1): Not restoring ostream format (STREAM_FORMAT_STATE)
95. format_changed: fill changes the format state of std::cout for
category fill.
100. end_of_path: Changing format state of stream std::cout for
category fill without later restoring it.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Suppress coverity issue:
CID 1193085 (#1 of 1): Missing break in switch (MISSING_BREAK)
unterminated_case: This case (value -114) is not terminated by a
'break' statement.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Fix for coverity issue caused by 8811df3 (introduced a similar
check some lines earlier in the code causing the check to return
earlier).
at_least: At condition r < 0, the value of r must be at least 0.
dead_error_condition: The condition r < 0 cannot be true.
CID 1274289 (#1 of 1): Logically dead code (DEADCODE)
dead_error_begin: Execution cannot reach this statement
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Silence coverity: ls.empty() check should already imply that
ls.size() != 0.
CID 1295402 (#1 of 1): Division or modulo by zero (DIVIDE_BY_ZERO)
divide_by_zero: In expression rand() % ls.size(), modulo by
expression ls.size() which may be zero has undefined behavior.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Fix for:
CID 1295405 (#1 of 1): Resource leak (RESOURCE_LEAK)
leaked_storage: Variable req_comp going out of scope leaks
the storage it points to.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
A get/set command may fail with
Error EBUSY: currently creating pgs, wait
if issued before the PGs are clean. Call wait_for_clean after the pool
is created or a pool setting is changed and remaps the PGs it
contains (size, pg_num...) to ensure the PGs are clean and the set/get
command that follow will succeed.
http://tracker.ceph.com/issues/11624Fixes: #11624
Signed-off-by: Loic Dachary <ldachary@redhat.com>
The semantic and interface of get_pg are the same, that avoids
duplication and the ceph-helpers.sh version is tested and documented.
Make the ceph-test package dependent on xmlstarlet because it is
needed by ceph-helpers.sh.
Signed-off-by: Loic Dachary <ldachary@redhat.com>
zap only makes sense on a full device and this is verified for
ceph-disk prepare --zap-disk
but not for
ceph-disk zap
Unify the two and add a test to check that it fails as expected when
trying to zap a directory.
http://tracker.ceph.com/issues/11272Fixes: #11272
Signed-off-by: Loic Dachary <ldachary@redhat.com>
add an argument "max_id" for "--check-names" to check if any item
has an id greater or equal to given "max_id" in crush map.
Signed-off-by: Kefu Chai <kchai@redhat.com>
* the "osd tree dump" command enumerates all buckets/osds found in either the
crush map or the osd map. but the newly set crushmap is not validated for
the dangling references, so we need to check to see if any item in new crush
map is referencing unknown type/name when a new crush map is sent to
monitor, reject it if any.
Fixes: #11680
Signed-off-by: Kefu Chai <kchai@redhat.com>
* so one is able to verify that the "ceph osd tree" won't chock on the
new crush map because of dangling name/type references
Signed-off-by: Kefu Chai <kchai@redhat.com>
* check for dangling bucket name or type names referenced by the
buckets/items in the crush map.
* also check for the references from Item(0, 0, 0) which does not
necessarily exist in the crush map under testing. the rationale
behind this is: the "ceph osd tree" will also print stray OSDs
whose id is greater or equal to 0. so it would be useful to
check if the crush map offers the type name indexed by "0"
(the name of OSDs is always "OSD.{id}", so we don't need to
look up the name of an OSD item in the crushmap).
Signed-off-by: Kefu Chai <kchai@redhat.com>
Dont bail out if the input value happens to be .
Fixes: #11620
Signed-off-by: Rajesh Nambiar <rajesh.n@msystechnologies.com>
Tested-by: Sage Weil <sage@redhat.com>
Update the ErasureCodeShec::init function to use string default
values. The default profile values for technique, ruleset-root and
ruleset-failure-domain are set for the user to see.
The error message when an invalid technique is provided is written to
the error stream to be returned to the user instead of being written to
the OSD log.
Updating other values from the profile would require deeper changes and
is left for later.
http://tracker.ceph.com/issues/9589Fixes: #9589
Signed-off-by: Loic Dachary <ldachary@redhat.com>
Update the ErasureCodeLrc::init function to use string default values
and update the profile accordingly.
If the k,m,l values are set and generate mappings and layers entries,
those are not stored in the profile. The details of what k,m,l create
are private and not exposed to the caller.
http://tracker.ceph.com/issues/9589Fixes: #9589
Signed-off-by: Loic Dachary <ldachary@redhat.com>
Update the ErasureCodeJerasure::init function to use string default values
and update the profile accordingly.
The ErasureCodeJerasure::revert_to_default prototype is modified so it
can update the profile.
http://tracker.ceph.com/issues/9589Fixes: #9589
Signed-off-by: Loic Dachary <ldachary@redhat.com>