Rishabh Dave [Fri, 25 Jul 2025 08:20:06 +0000 (13:50 +0530)]
qa, test: run unit tests for cephfs.pyx with non-root user
Run test_python.sh with non-root user. This makes it necessary to change
the owner user and group of file system root to be same as this non-root
user. This brings testing closer to the real-world scenario and also
allows exercising negative tests where an FS op would fail for a non-root
user but it would pass for root user.
There are few tests that exercise FS operations where root user is
needed. Group these tests under a separate class and add extra code for
this class that allows these tests to run with root UID and GID.
Rishabh Dave [Fri, 13 Jun 2025 07:13:51 +0000 (12:43 +0530)]
pybind/cephfs, mgr/volumes: refactor purge() to be non-recursive
Method purge() in trash.py calls rmtree() which is recursive method. To
avoid Python's recurision limit, switch to non-recursive approach.
Path to directory along directory handle are clubbed in to a tuple and
that tuple is stored on the stack. Storing directory handle reduces call
to opendir() dramatically.
Fixes: https://tracker.ceph.com/issues/71648 Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit f9046ca052d10a884a59c1d928cb0c8f0235696b)
John Mulligan [Thu, 13 Feb 2025 20:59:42 +0000 (15:59 -0500)]
ceph.spec.in: use rpm macro for python shebang pathfix
To support EL 10 distros, update the source of the pathfix tool (on EL
9+ distros) and use the macro for updating python shebangs that has been
available since at least EL 9.
Casey Bodley [Tue, 19 Aug 2025 13:44:52 +0000 (09:44 -0400)]
rpm: require gcc >= 13.3 regardless of gts_version
when gts_version is not set, bump the required version of gcc-c++ >= 13.3.
move this into a `%if 0%{?gts_version} == 0` block to prevent that from
applying to builds using gts, because the distro probably doesn't
provide a recent enough gcc-c++
John Mulligan [Fri, 27 Jun 2025 15:08:39 +0000 (11:08 -0400)]
ceph.spec.in: conditionalize crimson gts version on el10
EL10 distros come with GCC 14. When crimson was enabled it was always
trying to set gts_version to 13 (gcc-toolset version). Make the use of
gts version conditional on using el versions lower than 10.
Casey Bodley [Sat, 7 Jun 2025 01:43:33 +0000 (21:43 -0400)]
valgrind: wildcard glibc version for dlopen() leak suppression
the original suppression for "dlopen@@GLIBC_2.2.5" is very similar to
several later suppressions for "dlopen@@GLIBC_2.34". add a wildcard to
the original suppression so the rest can be removed
this also helps suppress a new leak, seen with gcc-13:
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
fun:UnknownInlinedFun
fun:decompose_rpath
fun:_dl_map_object
fun:dl_open_worker_begin
fun:_dl_catch_exception
fun:dl_open_worker
fun:_dl_catch_exception
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_exception
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.34
fun:_sub_I_65535_0.0
fun:call_init
fun:call_init
fun:_dl_init
obj:/usr/lib64/ld-linux-x86-64.so.2
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
}
Casey Bodley [Sat, 7 Jun 2025 01:27:20 +0000 (21:27 -0400)]
valgrind: update rocksdb ObjectLibrary leak suppression for gcc-13
the suppression for gcc-13 only differs on two lines, so add wildcards
to match either. the diff between the current suppression and the new
one follows:
rpm: reenable lto for gcc-toolset-13 by requiring 13.3
referenced gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113359
shows that it was resolved for 13.3. reenable lto for gcc-toolset-13 by
requiring 13.3 or later
mgr/dashboard: Local storage class creation via dashboard doesn't handle creation of pool.
Fixes: https://tracker.ceph.com/issues/72569 Signed-off-by: Dnyaneshwari <dtalweka@redhat.com>
mgr/dashboard: handle creation of new pool
Commit includes:
1) Provide link to create a new pool
2) Refactored validation on ACL mapping, removed required validator as default
3) fixed runtime error on console due to ACL length due to which the details section was not opening
4) Used rxjs operators to make API calls and making form ready once all data is available, fixing the form patch issues
5) Refactored some part of code to improve the performance
6) Added zone and pool information in details section for local storage class
Fixes: https://tracker.ceph.com/issues/72569 Signed-off-by: Naman Munet <naman.munet@ibm.com>
(cherry picked from commit 2d0e71c845643a26d4425ddac8ee0ff30153eff2)
cephadm: support custom distros by falling back to ID_LIKE
This change enables cephadm to work on custom or derivative distributions
that are based on supported distros without requiring code changes for
each new custom/derivative distro.
Update `rate()` queries to be more accurate. The use of `irate()` leads
to misleading graphs because it only looks at the last 2 samples over
the selected time range step interval. Also use `$__rate_interval`
consistently in order to scale over short and long time ranges.
* Replace `irate()` with `rate()` to avoid sample bias.
* Use `$__rate_interval` consistently.
* Update auto_count/min to provide higher detail graphs.
1. Fixes the promql expr used to calculate "In" OSDs in
ceph-cluster-advanced.json.
2. Fixes the color coding for the single state panels used in the OSDs
grafana panel like "In", "Out" etc
Nizamudeen A [Tue, 16 Sep 2025 07:02:45 +0000 (12:32 +0530)]
mgr/dashboard: fix total capacity value in dashboard
Regression from a different commit
https://github.com/ceph/ceph/commit/2609d4f62e9e3906cf3e3fcc042bfdf0bcc633bf#diff-caee5ab662130fe721d15eca7a6e2dc79b671df025bde3bfd78c3c3ca4c578d1R249
In file included from /home/pdonnell/ceph/src/mds/FSMap.h:31,
from /home/pdonnell/ceph/src/mon/PaxosFSMap.h:20,
from /home/pdonnell/ceph/src/mon/MDSMonitor.h:26,
from /home/pdonnell/ceph/src/mon/FSCommands.cc:17:
/home/pdonnell/ceph/src/mds/MDSMap.h: In member function ‘int FileSystemCommandHandler::set_val(Monitor*, FSMap&, MonOpRequestRef, const cmdmap_t&, std::ostream&, FileSystemCommandHandler::fs_or_fscid, std::string, std::string)’:
/home/pdonnell/ceph/src/mds/MDSMap.h:223:40: warning: ‘fsp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
223 | bool test_flag(int f) const { return flags & f; }
| ^~~~~
/home/pdonnell/ceph/src/mon/FSCommands.cc:417:21: note: ‘fsp’ was declared here
417 | const Filesystem* fsp;
| ^~~
Adam King [Mon, 22 Sep 2025 21:05:07 +0000 (17:05 -0400)]
pybind/mgr: pin cheroot version in requirements-required.txt
With python 3.10 (didn't seem to happen with python 3.12) the
pybind/mgr/cephadm/tests/test_node_proxy.py test times out.
This appears to be related to a new release of the cheroot
package and a github issues describing the same problem
we're seeing has been opened by another user
https://github.com/cherrypy/cheroot/issues/769
It is worth noting that the workaround described in that
issue does also work for us. If you add
John Mulligan [Fri, 12 Sep 2025 17:52:25 +0000 (13:52 -0400)]
build-with-container: add argument groups to organize options
Use the argparse add_argument_group feature to organize the mass of
arguments into more sensible categories. Hopefully, someone reading
over the `--help` output can now more easily see options that
are useful rather than being overwhelmed by a wall of text.
mgr/dashboard: fix zone update API forcing STANDARD storage class
The zone update REST API (`edit_zone`) always attempted to configure a
placement target for the `STANDARD` storage class, even when the request
was intended for a different storage class name.
This caused failures in deployments where `STANDARD` is not defined.
Changes:
Club add placement target and add storage class methods into one single
add_placement_targets_storage_class_zone method which takes the storage
class as a param as well alongside the rest of the placement params.
cephfs-journal-tool:: Don't reset the journal trim position
If the fs had to go through journal recovery and reset,
the cephfs-journal-tool resets the journal trim position
because of which the old unused journal objects just stay
forever in the metadata pool. The patch fixes the issue.
Now, the old stale journal objects are trimmed during the
regular trimming cycle helping to recover space in the
metadata pool.
Validates that the cephfs-journal-tool reset
doesn't reset the trim position so that the
journal trim takes care of trimming the older
unused journal objects helping to recover the
space in metadata pool.