]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
15 months agodoc/cephfs: disambiguate "Reporting Free Space" 56872/head
Zac Dover [Sat, 13 Apr 2024 10:48:21 +0000 (20:48 +1000)]
doc/cephfs: disambiguate "Reporting Free Space"

Make a few sentences clearer in doc/cephfs/ceph-auth.rst.

Co-authored-by: Anthony D'Atri <anthony.datri@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 788ccff18149b16cb01947c5bcf3bde380090df0)

15 months agoMerge pull request #56857 from guits/update-cv-func-tests-reef
Guillaume Abrioux [Sat, 13 Apr 2024 03:59:07 +0000 (05:59 +0200)]
Merge pull request #56857 from guits/update-cv-func-tests-reef

ceph-volume: update functional testing

15 months agoMerge pull request #56851 from zdover23/wip-doc-2024-04-12-backport-56831-to-reef
Anthony D'Atri [Fri, 12 Apr 2024 14:04:24 +0000 (10:04 -0400)]
Merge pull request #56851 from zdover23/wip-doc-2024-04-12-backport-56831-to-reef

reef: doc/cephfs: refine client-auth (3 of 3)

15 months agoceph-volume: update functional testing 56857/head
Guillaume Abrioux [Thu, 11 Apr 2024 07:43:47 +0000 (09:43 +0200)]
ceph-volume: update functional testing

various changes for fixing ceph-volume functional testing.
cleaning up deploy.yml (drop py2 references)

Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit 90bfaaa2f0ab7e28c0f78189ccb83635e944e758)
(cherry picked from commit bf448e3f637f8c8e42f095b1b5ff709e3633dc11)

15 months agoMerge pull request #54942 from rishabh-d-dave/wip-63834-reef
Rishabh Dave [Fri, 12 Apr 2024 09:10:53 +0000 (14:40 +0530)]
Merge pull request #54942 from rishabh-d-dave/wip-63834-reef

reef: cephfs: add command "ceph fs swap"

Reviewed-by: Milind Changire <mchangir@redhat.com>
15 months agodoc/cephfs: refine client-auth (3 of 3) 56851/head
Zac Dover [Thu, 11 Apr 2024 11:18:53 +0000 (21:18 +1000)]
doc/cephfs: refine client-auth (3 of 3)

Refine the final third of doc/cephfs/client-auth.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 44d1eeed703e968b374ec4d12fff3a2466a4c276)

15 months agoMerge pull request #56842 from zdover23/wip-doc-2024-04-12-backport-56784-to-reef
Anthony D'Atri [Fri, 12 Apr 2024 03:11:57 +0000 (23:11 -0400)]
Merge pull request #56842 from zdover23/wip-doc-2024-04-12-backport-56784-to-reef

reef: doc/cephfs: refine client-auth (2 of 3)

15 months agodoc/cephfs: refine client-auth (2 of 3) 56842/head
Zac Dover [Tue, 9 Apr 2024 12:04:46 +0000 (22:04 +1000)]
doc/cephfs: refine client-auth (2 of 3)

Refine the second third of doc/cephfs/client-auth.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 083f56352b4fff662dff3c78b6a0c455605d02ff)

15 months agoMerge pull request #56780 from zdover23/wip-doc-2024-04-09-backport-56754-to-reef
Anthony D'Atri [Tue, 9 Apr 2024 21:27:10 +0000 (17:27 -0400)]
Merge pull request #56780 from zdover23/wip-doc-2024-04-09-backport-56754-to-reef

reef: doc/cephfs: refine client-auth (1 of 3)

15 months agoMerge pull request #56798 from zdover23/wip-doc-2024-04-10-backport-56796-to-reef
Anthony D'Atri [Tue, 9 Apr 2024 20:59:20 +0000 (16:59 -0400)]
Merge pull request #56798 from zdover23/wip-doc-2024-04-10-backport-56796-to-reef

reef: doc/mgr: remove Zabbix 1 information

15 months agodoc/mgr: remove Zabbix 1 information 56798/head
Zac Dover [Tue, 9 Apr 2024 20:04:28 +0000 (06:04 +1000)]
doc/mgr: remove Zabbix 1 information

Remove information about the installation of the Zabbix module and link
to a discussion of the reasoning behind Ceph's refusal to support
Zabbix.

John Jasen developed a procedure explaining how to install "Zabbix 2".
This commit removes outdated procedures and explains why those
procedures were removed. Immediately following this explanation, the
text includes an explanation of how to install "Zabbix 2".

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 29ac627956c5e5cdd4ed5f1316c20bc9e1fe0ff7)

15 months agoMerge pull request #56762 from adk3798/reef-cephadm-pin-pyfakefs-version
Adam King [Tue, 9 Apr 2024 15:29:56 +0000 (11:29 -0400)]
Merge pull request #56762 from adk3798/reef-cephadm-pin-pyfakefs-version

reef: cephadm: pin pyfakefs version for tox tests

Reviewed-by: John Mulligan <jmulligan@redhat.com>
15 months agodoc/cephfs: refine client-auth (1 of 3) 56780/head
Zac Dover [Mon, 8 Apr 2024 12:07:38 +0000 (22:07 +1000)]
doc/cephfs: refine client-auth (1 of 3)

Refine the first third of doc/cephfs/client-auth.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 82c5bac5df553f1e13a2df3a107b2692efa6fc27)

15 months agoMerge pull request #56672 from batrick/wip-65294-reef
Yuri Weinstein [Mon, 8 Apr 2024 18:18:25 +0000 (11:18 -0700)]
Merge pull request #56672 from batrick/wip-65294-reef

reef: mds: skip sr moves when target is an unlinked dir

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #53635 from vshankar/wip-62287-reef
Yuri Weinstein [Mon, 8 Apr 2024 18:17:47 +0000 (11:17 -0700)]
Merge pull request #53635 from vshankar/wip-62287-reef

reef: test: explicitly link to ceph-common for some libcephfs tests

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #53357 from k0ste/wip-61993-reef
Yuri Weinstein [Mon, 8 Apr 2024 18:16:37 +0000 (11:16 -0700)]
Merge pull request #53357 from k0ste/wip-61993-reef

reef: mds/MDSRank: Add set_history_slow_op_size_and_threshold for op_tracker

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agocephadm: pin pyfakefs version for tox tests 56762/head
Adam King [Mon, 8 Apr 2024 14:48:18 +0000 (10:48 -0400)]
cephadm: pin pyfakefs version for tox tests

5.4.0 seems to have caused a number of permission issues
in the test. In order to unblock make check, let's pin it
to 5.3.5 for now.

Signed-off-by: Adam King <adking@redhat.com>
(cherry picked from commit ce71ce10b7551a649c9a64be992c0eddfa7e7243)

15 months agoMerge pull request #56736 from rhcs-dashboard/fix-65285-reef
Aashish Sharma [Mon, 8 Apr 2024 04:33:39 +0000 (10:03 +0530)]
Merge pull request #56736 from rhcs-dashboard/fix-65285-reef

mgr/dashboard: add Table Schema to grafonnet

Reviewed-by: Nizamudeen A <nia@redhat.com>
15 months agoMerge pull request #56740 from zdover23/wip-doc-2024-05-07-backport-56738-to-reef
Anthony D'Atri [Sun, 7 Apr 2024 12:28:31 +0000 (08:28 -0400)]
Merge pull request #56740 from zdover23/wip-doc-2024-05-07-backport-56738-to-reef

reef: doc/dev: refine "Concepts" 4 of 3

15 months agodoc/dev: refine "Concepts" 4 of 3 56740/head
Zac Dover [Sat, 6 Apr 2024 04:43:16 +0000 (14:43 +1000)]
doc/dev: refine "Concepts" 4 of 3

s/PG's PG logs/PG's logs/

re https://github.com/ceph/ceph/pull/56727#discussion_r1553541922

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 221d734760b6f680e4d17cd2f0bfcd39f914c8d6)

15 months agoqa/cephfs: allow finer control on test runs 54942/head
Rishabh Dave [Thu, 2 Nov 2023 19:02:06 +0000 (00:32 +0530)]
qa/cephfs: allow finer control on test runs

When working with large group tests (18 in this case), it gets very
tedious to debug and fix tests when all 18 have to be run again for
every mistake. Cheap fix for this to split these 18 tests into several
classes.

But when modification are made to the feature, all these 18 tests needs
to exercised and previous solution forces developer to intitiate all
these test classes to run one by one.

Best of both worlds can be achieved if we split tests into group but
move all these related group to a new file.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 9c547ad2a570a325ea453ccc9419be2b8bc06b28)

15 months agomon/FSCommands: use alias for higher brevity
Rishabh Dave [Thu, 28 Sep 2023 13:26:22 +0000 (18:56 +0530)]
mon/FSCommands: use alias for higher brevity

Create an alias so "APP_NAME_CEPHFS" can be written instead of
"pg_pool_t::APPLICATION_NAME_CEPHFS".

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 4a12f6eb6c16722f1d68e0949390cd7d30f44bc6)

Conflicts:
src/mon/FSCommands.cc
* Conflict occured because variable in Reef is "fs" and in Main
  branch is "fsp".

15 months agocephfs: add command "ceph fs swap"
Rishabh Dave [Sun, 29 Jan 2023 20:48:54 +0000 (02:18 +0530)]
cephfs: add command "ceph fs swap"

Add a FS command that enables users to swap names of two file systems in
a single PAXOS transaction. Add an option to this command that swaps
FSCIDS along with FS names. This commands also updates the application
pool tags and fails when mirroring is enabled on either or both FSs.

Fixes: https://tracker.ceph.com/issues/58129
Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 717031454243898071bdb254b2cadc7048057903)

Conflicts:
doc/man/8/ceph.rst
Conflict occurred because Ceph man page contians lesser amout of
CephFS commands in it in Reef branch

src/mds/FSMap.h
* Methods like set_fscid() can be cherry-picked as it is but due
  to different lines around, patch couldn't be applied as it is.
* Methods like get_fscid(), get_mds_map() are absent in Reef
  branch. They have been kept/added during this conflict
  resolution.

15 months agoqa/cephfs: log commands on INFO logging level
Rishabh Dave [Tue, 10 Oct 2023 11:00:00 +0000 (16:30 +0530)]
qa/cephfs: log commands on INFO logging level

Commands issued by negtest_ceph_cmd() aren't printed because log level
(due to code for teuthology) changes from DEBUG to INFO in case of some
files.

This patch ensures that users can see commands being executed regardless
of whether log level is changed or not.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 03df86b7c54325fd577bacec6a1f4c6441117e72)

15 months agoqa: log stdout for commands being run through negtest_ceph_cmd
Rishabh Dave [Tue, 10 Oct 2023 10:42:13 +0000 (16:12 +0530)]
qa: log stdout for commands being run through negtest_ceph_cmd

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit bd4cb58f7abca4fa20ec283f675f31d1ede14752)

15 months agoqa: minor improvement in ceph_test_case.py
Rishabh Dave [Tue, 10 Oct 2023 10:39:20 +0000 (16:09 +0530)]
qa: minor improvement in ceph_test_case.py

When two values (say x and y) are being printed because assert for
equality of both failed (assert x == y), print both the values on a new
line.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit edec8f35abc2d7bb6aef68ea9b841e33e12012dd)

15 months agoqa/cephfs: minor improvement caps_helper.py
Rishabh Dave [Tue, 3 Oct 2023 08:11:54 +0000 (13:41 +0530)]
qa/cephfs: minor improvement caps_helper.py

When assert fails for equality of two variables and when both the
variables are printed in error message, print each variable on a new
line.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 6ac58b0a12324ea13c724cbba3107e1eae9a96c3)

15 months agoqa/cephfs: import only sleep() from time
Rishabh Dave [Mon, 2 Oct 2023 19:47:42 +0000 (01:17 +0530)]
qa/cephfs: import only sleep() from time

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 69e4c9e4729fd0d29ed43fb1f6e94cb1804a3f74)

Conflicts:
* qa/tasks/cephfs/test_admin.py
  The commit needs an update so that importing "sleep" from "time"
  instead of importing "time" fully works on Reef branch too.

15 months agomds/FSMap: add logging facility
Rishabh Dave [Mon, 2 Oct 2023 19:47:09 +0000 (01:17 +0530)]
mds/FSMap: add logging facility

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit be78b3ea68f75319da05700276630f7f331bbd63)

15 months agoqa/cephfs/cap_tester: simplify CapTester and its instantiation
Rishabh Dave [Tue, 18 Apr 2023 14:55:01 +0000 (20:25 +0530)]
qa/cephfs/cap_tester: simplify CapTester and its instantiation

Class CapTester contains two distinct immiscible group of methods: one
that tests MON caps and other that tests MDS caps. When using CapTester
for the former reason the instantiation neither needs mount object and
the path where files for testing will be created nor it needs to run the
method that creates files for testing rw permissions. When using
this class for latter the case is the exact opposite.

Create 2 separate classes for each of these purpose and class that
inherits both of these classes so that instantiating the class becomes
as simple as it can be.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit f0ffade0525674b1f851797b1107060d8aa93d5c)

Conflicts:
 - qa/tasks/cephfs/caps_helper.py:
   This file went through changes due to merging of commit 59c9104c54d6.

15 months agoqa/cephfs: update method caps_helper.CapTester.run_cap_tests()
Rishabh Dave [Tue, 18 Apr 2023 07:15:03 +0000 (12:45 +0530)]
qa/cephfs: update method caps_helper.CapTester.run_cap_tests()

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 95c6daa45b0982348d775210e5945eeeae2ac5ca)

15 months agoqa/cephfs: move few methods such that they can be reused
Rishabh Dave [Thu, 6 Apr 2023 09:42:14 +0000 (15:12 +0530)]
qa/cephfs: move few methods such that they can be reused

Move get_mon_cap_from_keyring() and get_fsnmes_from_moncap() from class
CapTester to main namespace of caps_helper.py so that they can be
imported freely and reused by tests.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit ea9f13e5536120c135e85c4962bb989e83910d6b)

15 months agoqa/cephfs: improve caps_helper.CapTester.run_mon_cap_tests()
Rishabh Dave [Thu, 6 Apr 2023 09:23:17 +0000 (14:53 +0530)]
qa/cephfs: improve caps_helper.CapTester.run_mon_cap_tests()

This method checks if the output of the command "ceph fs ls" for client
ID it receives is same as the output printed for client.admin. Don't do
so, limit the test to only checking if "ceph fs ls --id client.x -k
keyring_file" prints fs name for which client.x has permissions.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit ad68a5512105e102a87d1fe9648257eebd4c432e)

15 months agoqa/cephfs: improve caps_helper.CapTester
Rishabh Dave [Fri, 31 Mar 2023 19:14:52 +0000 (00:44 +0530)]
qa/cephfs: improve caps_helper.CapTester

Improvement #1:

CapTester.write_test_files() not only creates the test file but also
does the following for every mount object it receives in parameters -

* carefully produces the path for the test file as per parameters
  received
* generates the unique data for each test file on a CephFS mount
* creates a data structure -- list of lists -- that holds all this
  information along with mount object itself for each mount object so
  that tests can be conducted at a later point

Untangle this mess of code by splitting this method into 3 separate
methods -

1. To produce the path for test file (as per user's need).
2. To generate the data that will be written into the test file.
3. To actually create the test file on CephFS.

Improvement #2:

Remove the internal data structure used for testing -- self.test_set --
and use separate class attributes to store all the data required for
testing instead of a tuple. This serves two purpose -

One, it makes it easy to manipulate all this data from helper methods
and during debugging session, especially while using a PDB session.

And two, make it impossible to have multiple mounts/multiple "test sets"
within same CapTester instance for the sake of simplicity. Users can
instead create two instances of CapTester instances if needed.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 008dbe91e2994a654cba37e07ca6a9ae7c98fa2f)

Conflicts:
  qa/tasks/cephfs/caps_helper.py
  - Conflict occurred because this file went under modification due to
    commit 59c9104c54d6.
  qa/tasks/cephfs/test_admin.py
  - Conflict occurred because code region located around the patch has
    changed.

15 months agoMerge pull request #56729 from zdover23/wip-doc-2024-04-05-backport-56727-to-reef
Zac Dover [Sat, 6 Apr 2024 04:39:26 +0000 (14:39 +1000)]
Merge pull request #56729 from zdover23/wip-doc-2024-04-05-backport-56727-to-reef

reef: doc/dev: refine "Concepts" 3 of 3

15 months agomgr/dashboard: add Table Schema to grafonnet 56736/head
Aashish Sharma [Sat, 6 Apr 2024 03:36:51 +0000 (09:06 +0530)]
mgr/dashboard: add Table Schema to grafonnet

Backport of #56509 in reef didn't include the Table Schema in the
utils.libsonnet because of which the json generation ias failing. This
PR tends to add the Table Schema

Signed-off-by: Aashish Sharma <aasharma@redhat.com>
15 months agoMerge pull request #56707 from afreen23/wip-65209-reef
Nizamudeen A [Fri, 5 Apr 2024 17:27:17 +0000 (22:57 +0530)]
Merge pull request #56707 from afreen23/wip-65209-reef

reef: mgr/dashboard:Update encryption and tags in bucket form

Reviewed-by: Nizamudeen A <nia@redhat.com>
15 months agoMerge pull request #56710 from afreen23/wip-65333-reef
Nizamudeen A [Fri, 5 Apr 2024 17:26:10 +0000 (22:56 +0530)]
Merge pull request #56710 from afreen23/wip-65333-reef

reef: mgr/dashboard:Use advanced fieldset for rbd image

Reviewed-by: Nizamudeen A <nia@redhat.com>
15 months agodoc/dev: refine "Concepts" 3 of 3 56729/head
Zac Dover [Fri, 5 Apr 2024 06:43:47 +0000 (16:43 +1000)]
doc/dev: refine "Concepts" 3 of 3

Refine the third third of the entries in the section "Concepts" in
doc/dev/peering.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 512e2dc9d52fdd14dfdd87ccd141e535d3098fb7)

15 months agoMerge pull request #56725 from zdover23/wip-doc-2024-04-05-backport-56646-to-reef
Anthony D'Atri [Fri, 5 Apr 2024 12:34:21 +0000 (08:34 -0400)]
Merge pull request #56725 from zdover23/wip-doc-2024-04-05-backport-56646-to-reef

reef: doc/dev: refine "Concepts" 2 of 3

15 months agoMerge pull request #56682 from aaSharma14/wip-65285-reef
Aashish Sharma [Fri, 5 Apr 2024 04:52:48 +0000 (10:22 +0530)]
Merge pull request #56682 from aaSharma14/wip-65285-reef

reef: mgr/dashboard: replace deprecated table panel in grafana with a newer table panel

Reviewed-by: Nizamudeen A <nia@redhat.com>
15 months agodoc/dev: refine "Concepts" 2 of 3 56725/head
Zac Dover [Wed, 3 Apr 2024 05:02:29 +0000 (15:02 +1000)]
doc/dev: refine "Concepts" 2 of 3

Refine the second third of the entries in the section "Concepts" in
doc/dev/peering.rst.

Co-authored-by: Anthony D'Atri <anthony.datri@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 7bb35282da27f0c18ffbe36f2c0852a827c5bc2f)

15 months agomgr/dashboard:Use advanced fieldset for rbd image 56710/head
Afreen [Wed, 27 Mar 2024 09:35:58 +0000 (15:05 +0530)]
mgr/dashboard:Use advanced fieldset for rbd image

Fixes https://tracker.ceph.com/issues/65025

- using cd-advanced-fieldset component for advanced section
- this will align advanced sections of forms in dashboard
- changed heading of sections of rbd-configuration to h5 to better represent it
  as a sub section.
- added unit tests for rbd image config

Signed-off-by: Afreen <afreen23.git@gmail.com>
(cherry picked from commit 25552117b433dbe39bf245aeda99761def5749eb)

15 months agomgr/dashboard:Update encryption and tags in bucket form 56707/head
Afreen [Mon, 25 Mar 2024 08:39:08 +0000 (14:09 +0530)]
mgr/dashboard:Update encryption and tags in bucket form

Fixes https://tracker.ceph.com/issues/65110

- renamed Security to Encryption
- aligned security fieldset with rest of the form using `cd-help-text`
  and aligning it with object locking in UX
- aligned security fieldset top use `cd-help-text`
- changed help text of Tags

Signed-off-by: Afreen <afreen23.git@gmail.com>
(cherry picked from commit 96b21d7cf5bb698102dc0cfce6fef05204b82d2e)

15 months agoMerge pull request #56692 from afreen23/wip-65304-reef
Nizamudeen A [Thu, 4 Apr 2024 16:34:52 +0000 (22:04 +0530)]
Merge pull request #56692 from afreen23/wip-65304-reef

reef: mgr/dashboard: Add advanced fieldset component

Reviewed-by: Ankush Behl <cloudbehl@gmail.com>
15 months agoMerge pull request #56323 from adk3798/wip-64844-reef
Yuri Weinstein [Thu, 4 Apr 2024 15:31:35 +0000 (08:31 -0700)]
Merge pull request #56323 from adk3798/wip-64844-reef

reef: ceph-volume: Use safe accessor to get TYPE info

Reviewed-by: Guillaume Abrioux <gabrioux@redhat.com>
15 months agoMerge pull request #56648 from zdover23/wip-doc-2024-04-03-backport-56228-to-reef
Zac Dover [Thu, 4 Apr 2024 12:55:35 +0000 (22:55 +1000)]
Merge pull request #56648 from zdover23/wip-doc-2024-04-03-backport-56228-to-reef

reef: doc: fixing doc/cephfs/fs-volumes

Reviewed-by: Cole Mitchell <cole.mitchell.ceph@gmail.com>
15 months agoqa/cephfs: simplify some code in test_multifs_auth.py
Rishabh Dave [Fri, 24 Mar 2023 11:47:36 +0000 (17:17 +0530)]
qa/cephfs: simplify some code in test_multifs_auth.py

test_mutlifs_auth.TestMDSCaps._create_client() not only creates a client
but also generate caps strings for the client as per the parameter this
method receives and and then writes the keyring to all remote machines.
This creates confusion when reading code on test methods in TestMDSCaps.
Let's re-arrange this code such that this confusion is avoided.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 265abc79b300c0a5b5ccdad85ac68f52a76aa6dc)

15 months agoqa/cephfs: don't inherit CephFSTestCase in CapTester
Rishabh Dave [Thu, 13 Apr 2023 19:08:33 +0000 (00:38 +0530)]
qa/cephfs: don't inherit CephFSTestCase in CapTester

Inheritting CephFSTestCase in CapTester just for methods assertEqual()
and assertIn() from class unittest.TestCase is odd and heavy-weight.
Don't inherit CephFSTestCase and use simple assert instead.

Reference: https://github.com/ceph/ceph/pull/50882#discussion_r1160611549.

To avoid code duplication, a couple of similar methods have been added
instead.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit e8bdf94b814eb09f859e6d1e31d53e826a7bffcc)

Conflicts:
  qa/tasks/cephfs/caps_helper.py
  - Conflict occured because code on Reef branch changed due to merging of
    commit 59c9104c54d6.

15 months agoqa/cephfs: minor improvement in caps_helper
Rishabh Dave [Thu, 30 Mar 2023 19:36:13 +0000 (01:06 +0530)]
qa/cephfs: minor improvement in caps_helper

Use Python type list instead of tuple since it get's necessary to modify
members of this sequence.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 1a7ca489b4b84ae48c831ec63b201c024047b295)

15 months agoqa/cephfs: minor corrections in caps_helper.py
Rishabh Dave [Mon, 13 Mar 2023 12:15:57 +0000 (17:45 +0530)]
qa/cephfs: minor corrections in caps_helper.py

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 1428fb1e738626801326b865340b011003ea6f14)

15 months agoqa/cephfs: add more helper methods to caps_helper.py
Rishabh Dave [Mon, 13 Mar 2023 10:46:13 +0000 (16:16 +0530)]
qa/cephfs: add more helper methods to caps_helper.py

Add methods that will accept read/write permissions, CephFS names and
CephFS mount point and in return will generate string form of MON, OSD
and MDS caps exactly as it is reported in Ceph keyrings.

Replace similar code in test_multifs_auth.py with calls to these helper
methods.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 969a93d0dcf1848623b0bd581b8e2e9a5a556839)

15 months agoMerge pull request #56684 from zdover23/wip-doc-2024-04-04-backport-56662-to-reef
Zac Dover [Thu, 4 Apr 2024 11:39:21 +0000 (21:39 +1000)]
Merge pull request #56684 from zdover23/wip-doc-2024-04-04-backport-56662-to-reef

reef: doc/mgr: credit John Jasen for Zabbix 2

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
15 months agoMerge pull request #54945 from rishabh-d-dave/wip-63405-reef
Rishabh Dave [Thu, 4 Apr 2024 10:24:48 +0000 (15:54 +0530)]
Merge pull request #54945 from rishabh-d-dave/wip-63405-reef

reef: MDSAuthCaps: print better error message for perm flag in MDS caps

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agomgr/dashboard: Add advanced fieldset component 56692/head
Afreen [Fri, 1 Mar 2024 07:26:25 +0000 (12:56 +0530)]
mgr/dashboard: Add advanced fieldset component

Fixes https://tracker.ceph.com/issues/65024

- adds a new shared component for displaying advanced fields in /shared
- utilizes that component in bucket form
- placement targets are under advanced fieldset
- minor help text changes in object locking help text
- updated e2e tests

Signed-off-by: Afreen <afreen23.git@gmail.com>
(cherry picked from commit d0979e9c5223231a0fd3ef6408323d2fd5cd2ac5)

Conflicts:
src/pybind/mgr/dashboard/frontend/src/app/shared/components/components.module.ts

15 months agoMerge pull request #56171 from vshankar/wip-64218-reef
Venky Shankar [Thu, 4 Apr 2024 06:57:43 +0000 (12:27 +0530)]
Merge pull request #56171 from vshankar/wip-64218-reef

reef: qa: `fs volume rename` requires `fs fail` and `refuse_client_session` set

Reviewed-by: Dhairya Parmar <dparmar@redhat.com>
15 months agoMerge pull request #56169 from vshankar/wip-64047-reef
Venky Shankar [Thu, 4 Apr 2024 06:57:10 +0000 (12:27 +0530)]
Merge pull request #56169 from vshankar/wip-64047-reef

reef: qa: set mds config with `config set` for a particular test

Reviewed-by: Dhairya Parmar <dparmar@redhat.com>
15 months agoMerge pull request #56167 from vshankar/wip-64250-reef
Venky Shankar [Thu, 4 Apr 2024 06:56:40 +0000 (12:26 +0530)]
Merge pull request #56167 from vshankar/wip-64250-reef

reef: qa: correct usage of DEBUGFS_META_DIR in dedent

Reviewed-by: Dhairya Parmar <dparmar@redhat.com>
15 months agoMerge pull request #56016 from vshankar/wip-64759-reef
Venky Shankar [Thu, 4 Apr 2024 06:49:54 +0000 (12:19 +0530)]
Merge pull request #56016 from vshankar/wip-64759-reef

reef: mds: relax certain asserts in mdlog replay thread

Reviewed-by: Dhairya Parmar <dparmar@redhat.com>
15 months agoMerge pull request #56557 from afreen23/wip-65205-reef
Nizamudeen A [Thu, 4 Apr 2024 05:49:41 +0000 (11:19 +0530)]
Merge pull request #56557 from afreen23/wip-65205-reef

reef: mgr/dashboard: make ceph logo redirect to dashboard

Reviewed-by: Ankush Behl <cloudbehl@gmail.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
15 months agoMerge pull request #56621 from afreen23/wip-65211-reef
Nizamudeen A [Thu, 4 Apr 2024 05:47:51 +0000 (11:17 +0530)]
Merge pull request #56621 from afreen23/wip-65211-reef

reef: mgr/dashboard: Mark placement targets as non-required

Reviewed-by: Ankush Behl <cloudbehl@gmail.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
15 months agoMerge pull request #56049 from lxbsz/wip-64584
Venky Shankar [Thu, 4 Apr 2024 04:29:10 +0000 (09:59 +0530)]
Merge pull request #56049 from lxbsz/wip-64584

reef: mds: allow lock state to be LOCK_MIX_SYNC in replica for filelock

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agodoc/mgr: credit John Jasen for Zabbix 2 56684/head
Zac Dover [Wed, 3 Apr 2024 12:21:04 +0000 (22:21 +1000)]
doc/mgr: credit John Jasen for Zabbix 2

Credit John Jasen for the development of the procedures describing the
installation of Zabbix 2.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 28aa556448cf02dc943653e76a7ef89e10ae93e9)

15 months agomgr/dashboard: replace deprecated table panel in grafana with a newer 56682/head
Aashish Sharma [Wed, 27 Mar 2024 08:16:24 +0000 (13:46 +0530)]
mgr/dashboard: replace deprecated table panel in grafana with a newer
table panel

Fixes: https://tracker.ceph.com/issues/65174
Signed-off-by: Aashish Sharma <aasharma@redhat.com>
(cherry picked from commit c2f4aa7887d8322bc58cd1cb322746246ccebe32)

15 months agoMerge pull request #56347 from cbodley/wip-65003-reef
Yuri Weinstein [Wed, 3 Apr 2024 22:04:30 +0000 (15:04 -0700)]
Merge pull request #56347 from cbodley/wip-65003-reef

reef: rgw: Add missing empty checks to the split string in is_string_in_set().

Reviewed-by: Pere Diaz Bou <pdiazbou@redhat.com>
Reviewed-by: Daniel Gryniewicz <dang@redhat.com>
15 months agoMerge pull request #56197 from ifed01/wip-ifed-fix-estimate-kv-reef
Yuri Weinstein [Wed, 3 Apr 2024 22:03:38 +0000 (15:03 -0700)]
Merge pull request #56197 from ifed01/wip-ifed-fix-estimate-kv-reef

reef: os/kv_test: Fix estimate functions

Reviewed-by: Adam Kupczyk <akupczyk@redhat.com>
Reviewed-by: Pere Diaz Bou <pdiazbou@redhat.com>
15 months agoMerge pull request #55867 from trociny/wip-64650-reef
Yuri Weinstein [Wed, 3 Apr 2024 22:02:44 +0000 (15:02 -0700)]
Merge pull request #55867 from trociny/wip-64650-reef

reef: mon/OSDMonitor: fix get_min_last_epoch_clean()

Reviewed-by: Pere Diaz Bou <pdiazbou@redhat.com>
Reviewed-by: Matan Breizman <Matan.Brz@gmail.com>
Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
15 months agoMerge pull request #55777 from ifed01/wip-ifed-fix-expand-with-ncb-reef
Yuri Weinstein [Wed, 3 Apr 2024 22:01:23 +0000 (15:01 -0700)]
Merge pull request #55777 from ifed01/wip-ifed-fix-expand-with-ncb-reef

reef: os/bluestore: fix free space update after bdev-expand in NCB mode

Reviewed-by: Pere Diaz Bou <pdiazbou@redhat.com>
Reviewed-by: Adam Kupczyk <akupczyk@redhat.com>
15 months agoMerge pull request #55548 from k0ste/wip-64397-reef
Yuri Weinstein [Wed, 3 Apr 2024 21:58:18 +0000 (14:58 -0700)]
Merge pull request #55548 from k0ste/wip-64397-reef

reef: mon: fix health store size growing infinitely

Reviewed-by: Pere Diaz Bou <pdiazbou@redhat.com>
Reviewed-by: Matan Breizman <Matan.Brz@gmail.com>
15 months agoMerge pull request #54258 from YiteGu/backport-bluestore-fragmentation-to-metrics
Yuri Weinstein [Wed, 3 Apr 2024 21:57:54 +0000 (14:57 -0700)]
Merge pull request #54258 from YiteGu/backport-bluestore-fragmentation-to-metrics

reef: os/bluestore: add bluestore fragmentation micros to prometheus

Reviewed-by: Igor Fedotov <ifedotov@suse.com>
Reviewed-by: Pere Diaz Bou <pdiazbou@redhat.com>
15 months agoqa/cephfs: don't use run_cluster_cmd() 54945/head
Rishabh Dave [Thu, 21 Mar 2024 12:59:52 +0000 (18:29 +0530)]
qa/cephfs: don't use run_cluster_cmd()

The method was deleted in favour of run_ceph_cmd() and
get_ceph_cmd_stdout() in commit
35a0d84972d691535533ffeb1635e5f94d808575.

This commit is not a backport but a new commit to fix the code present
on Reef branch but not present in release branches after Reef. At least
some of these issues were exposed during QA done for the backport.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
15 months agoAuthMonitor: no need to check permission in MDS caps
Rishabh Dave [Sat, 24 Jun 2023 04:17:12 +0000 (09:47 +0530)]
AuthMonitor: no need to check permission in MDS caps

For "fs authorize" command, AuthMonitor.cc checks if permissions is "r"
or begins with "rw". This check is redundant now.
AuthMonitor::valid_caps() runs MDSAuthCaps.parse() which now runs same
check for the MDS caps, regardless of the command.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 8e1e322054ea14eb5e59969439c0ea27885503ab)

15 months agoMDSAuthCaps: print a special error message for wrong permissions
Rishabh Dave [Fri, 9 Jun 2023 18:54:12 +0000 (00:24 +0530)]
MDSAuthCaps: print a special error message for wrong permissions

Permissions mentioned in MDS caps flags can either begin with "r" or
"rw", or can be "*" and "all". But it can't start with or be just "w" or
something else. This is confusing for some CephFS users since MON caps
can be just "w".

Command "ceph fs authorize" complains about this to the user. But other
commands (specifically, "ceph auth add", "ceph auth caps",
"ceph auth get-or-create" and "ceph auth get-or-create-key") don't. Make
these commands too print a helpful message, the way "ceph fs authorize"
command does.

Fixes: https://tracker.ceph.com/issues/61666
Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit f163dd3ef1fd9f05f05fa50eda9993225770d524)

Conflicts:
src/mds/MDSAuthCaps.cc
"std::string" was replace "string" in main but that's not the case
in Reef.

15 months agoqa/ceph_test_case: add a method to negative test Ceph commands
Rishabh Dave [Sat, 24 Jun 2023 17:11:07 +0000 (22:41 +0530)]
qa/ceph_test_case: add a method to negative test Ceph commands

Also, add comments to explain the users the arguments are accepted by
run_ceph_cmd(), get_ceph_cmd_result(), get_ceph_cmd_stdout() and
negtest_ceph_cmd() methods of class RunCephCmd.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit f72b217e3542de1880f694917bacd18f092560c4)

15 months agoqa: inherit RunCephCmd in CephTestCase instead of CephFSTestCase
Rishabh Dave [Wed, 9 Aug 2023 12:40:32 +0000 (18:10 +0530)]
qa: inherit RunCephCmd in CephTestCase instead of CephFSTestCase

MgrTestCase also needs RunCephCmd. If RunCephCmd is inherited by
CephTestCase, instead of CephFSTestCase, MgrTestCase will automatically
inherit RunCephCmd because it inhertis CephTestCase.

Fixes: https://tracker.ceph.com/issues/62084
Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 4b369cf18ed1391a426ab4ae86da834e9c074f81)

15 months agoqa/cephfs: use run_ceph_cmd() when cmd output is not needed
Rishabh Dave [Mon, 27 Mar 2023 06:21:16 +0000 (11:51 +0530)]
qa/cephfs: use run_ceph_cmd() when cmd output is not needed

In filesystem.py and wherever instance of class Filesystem are used, use
run_ceph_cmd() instead of get_ceph_cluster_stdout() when output of Ceph
command is not required.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 0a781ef0807ae9473fb1306ef07036226ca4f1a6)

15 months agoqa/cephfs: add helper methods to filesystem.py
Rishabh Dave [Mon, 27 Mar 2023 06:09:11 +0000 (11:39 +0530)]
qa/cephfs: add helper methods to filesystem.py

Add run_ceph_cmd(), get_ceph_cmd_stdout() and get_ceph_cmd_result() to
class Filesystem so that running Ceph command is easier. This affects
not only methods inside class Filesystem but also methods elsewhere that
uses instance of class Filesystem to run Ceph commands.

Instead of "self.fs.mon_manager.raw_cluster_cmd()" writing
"self.fs.run_ceph_cmd()" will suffice.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 1bf87e6eec91b05a15702068bcf6a96e228f8d42)

15 months agoqa/cephfs: when cmd output is not needed call run_ceph_cmd()
Rishabh Dave [Thu, 16 Mar 2023 16:28:22 +0000 (21:58 +0530)]
qa/cephfs: when cmd output is not needed call run_ceph_cmd()

instead of get_ceph_cmd_stdout().

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit c7c38ba558e089c51d71e0b0713b3e0a368b9699)

Conflicts:
qa/tasks/cephfs/test_mirroring.py
- Commit e4dd0e41a3a0 was not present on main but it is now
present on main as well as on Reef, which leads to conflict.
- The line located right before one of the patches in this
  commit was modified in latest Reef branch, thus creating
  conflict when PR branch was rebased on latest Reef.

15 months agoqa/cephfs: add and use get_ceph_cmd_stdout()
Rishabh Dave [Thu, 16 Mar 2023 10:02:39 +0000 (15:32 +0530)]
qa/cephfs: add and use get_ceph_cmd_stdout()

Add method get_ceph_cmd_stdout() to class CephFSTestCase so that one
doesn't have to type something as long as
"self.mds_cluster.mon_manager.raw_cluster_cmd()" to execute a
command and get its output. And delete and replace
CephFSTestCase.run_cluster_cmd() too.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 13168834e374120d9c319a120a35768ddbc70de5)

Conflicts:
qa/tasks/cephfs/caps_helper.py
- This file is very different in Reef.
qa/tasks/cephfs/test_mirroring.py
- Commit e4dd0e41a3a0 was not present on main but it is now
  present on main as well as on Reef, which leads to conflict.
- On Reef branch, the line before that patch in this commit was
  thus creating a conflict when the PR branch for this commit
  series was rebased on latest Reef.

15 months agoqa/cephfs: add and use run_ceph_cmd()
Rishabh Dave [Thu, 16 Mar 2023 09:41:08 +0000 (15:11 +0530)]
qa/cephfs: add and use run_ceph_cmd()

Instead of writing something as long as
"self.mds_cluster.mon_manager.run_cluster_cmd()" to execute a command,
let's add a helper method to class CephFSTestCase and use it instead.

With this, running a command becomes simple - "self.run_ceph_cmd()".

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit f8f2154e54e202996b24904162da6022081e9d93)

Conflicts:
qa/tasks/cephfs/test_damage.py
This file is slightly different because this commit
c8f8324ee2fae48e8d3c2bbdbf45cc9ffe46fd4c was merged on main and
backported after the commit being cherry-picked here was merged
in main.

15 months agoqa/cephfs: add and use get_ceph_cmd_result()
Rishabh Dave [Tue, 14 Mar 2023 19:43:56 +0000 (01:13 +0530)]
qa/cephfs: add and use get_ceph_cmd_result()

To run a command and get its return value, instead of typing something
as long as "self.mds_cluster.mon_manager.raw_cluster_cmd_result" add a
hepler method in CephFSTestCase and use it. This makes this task very
simple - "self.get_ceph_cmd_result()".

Also, remove method CephFSTestCase.run_cluster_cmd_result() in favour of
this new method.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 82814ac49d31b0fc48ac4f3ec659a9f0a822acd2)

15 months agoqa/cephfs: create admin_remote instance in CephFSTestCase
Rishabh Dave [Wed, 15 Mar 2023 20:40:43 +0000 (02:10 +0530)]
qa/cephfs: create admin_remote instance in CephFSTestCase

admin_remote contains lots of methods that can be useful during testing,
so let's have an easy access to it too.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 2e12e5086d067ff110f4f9c827b40cf58aa04b91)

15 months agoqa/cephfs: create CephManager instance in CephFSTestCase
Rishabh Dave [Mon, 13 Mar 2023 13:05:50 +0000 (18:35 +0530)]
qa/cephfs: create CephManager instance in CephFSTestCase

To run a Ceph command conveniently, run_cluster_cmd(), raw_cluster_cmd()
or raw_cluster_cmd_result() must be called. These methods are available
in class CephManager which in turn is available only if an instance of
Filesystem, MDSCluster, CephCluster or MgrCluster is initialized. Having
an instance of CephManager in CephFSTestCase will provide easy access to
these methods.

For example, in CephFS tests writing "self.mon_manager.raw_cluser_cmd()"
instead of writing "self.mds_cluster.mon_manager.raw_cluster()" will
suffice.

This commit provides a basis for upcoming commits in this patch series.
With next patches, running Ceph command will be further simplified. Just
writing self.run_ceph_cmd() will suffice for running a CephFS command.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 0c0041005ee127e3a488b111181c1da8035d199c)

15 months agoqa/cephfs: don't import entire module needlessly
Rishabh Dave [Sat, 24 Jun 2023 13:46:39 +0000 (19:16 +0530)]
qa/cephfs: don't import entire module needlessly

Importing entire module ceph_manager.py is pointless since only
ceph_manager.CephManager is required in qa/tasks/cephfs/filesystem.py.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 437f2c75f5f5a98b45d8fceb3e209b7945cd6e71)

15 months agomds: skip sr moves when target is an unlinked dir 56672/head
Patrick Donnelly [Tue, 27 Feb 2024 00:44:27 +0000 (19:44 -0500)]
mds: skip sr moves when target is an unlinked dir

A directory in the stray directory cannot have any HEAD inodes with caps so
there is no need to move anything to the snaprealm opened for the unlinked
directory.

Following the parent commit's reproducer, the behavior now looks expectedly like:

    2024-02-27T02:26:59.049+0000 7f5b095f3700 10 mds.0.cache.ino(0x100000f4575) open_snaprealm snaprealm(0x100000f4575 seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x5632a57f9680) parent is snaprealm(0x1 seq e lc e cr e cps 1 snaps={2=snap(2 0x1 'one' 2024-02-27T01:34:36.001053+0000),3=snap(3 0x1 'two' 2024-02-27T01:34:48.623349+0000),6=snap(6 0x1 'six' 2024-02-27T02:03:51.619896+0000),7=snap(7 0x1 'seven' 2024-02-27T02:04:28.375336+0000),8=snap(8 0x1 '1' 2024-02-27T02:06:14.170884+0000),9=snap(9 0x1 '2' 2024-02-27T02:09:47.158624+0000),a=snap(a 0x1 '3' 2024-02-27T02:18:24.666934+0000),b=snap(b 0x1 '4' 2024-02-27T02:18:38.268874+0000),c=snap(c 0x1 '5' 2024-02-27T02:23:13.183995+0000),d=snap(d 0x1 '6' 2024-02-27T02:25:25.593014+0000),e=snap(e 0x1 '7' 2024-02-27T02:26:55.184945+0000)} last_modified 2024-02-27T02:26:55.184945+0000 change_attr 11 0x5632861c5680)
    2024-02-27T02:26:59.049+0000 7f5b095f3700 10  mds.0.cache.snaprealm(0x1 seq 14 0x5632861c5680) split_at: snaprealm(0x100000f4575 seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x5632a57f9680) on [inode 0x100000f4575 [...f,head] ~mds0/stray0/100000f4575/ auth v1199 pv1200 ap=3 snaprealm=0x5632a57f9680 DIRTYPARENT f() n(v0 1=0+1) old_inodes=1 (ilink xlockdone x=1) (isnap xlockdone x=1) (inest lock) (ifile excl) (iversion lock w=1 last_client=4365) caps={4365=pAsLsXsFsx/AsLsXsFsx@6},l=4365 | request=1 lock=3 dirfrag=1 caps=1 dirtyparent=1 dirty=1 waiter=0 authpin=1 0x563385e94000]
    2024-02-27T02:26:59.049+0000 7f5b095f3700 10  mds.0.cache.snaprealm(0x1 seq 14 0x5632861c5680)  moving unlinked directory inode

Discussions with Dan van der Ster led to the creation of this patch.

Fixes: https://tracker.ceph.com/issues/53192
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
Signed-off-by: Dan van der Ster <dan.vanderster@clyso.com>
(cherry picked from commit c190a3f1633e9282772e5ec54fe10556856a2540)

15 months agomds: memoize descendent results during realm splits
Patrick Donnelly [Fri, 12 Nov 2021 00:43:27 +0000 (19:43 -0500)]
mds: memoize descendent results during realm splits

This change uses an unordered_map to memoize results of CInode::is_ancestor_of
so that subsequent invocations can skip directory inodes which are already
known to not be a descendent of the target directory.

In the worst case, this unordered_map can grow to the number of inodes in
memory when all inodes are directories and at least one client has a cap for
each inode. However, in general this will not be the case. The size of each
entry in the map will be a 64-bit pointer and bool. The total size will vary
across platforms but we can say that with a conservative estimate of 192 bits /
entry overhead (including the entry linked list pointer in the bucket), the map
will grow to ~24MB / 1M inodes.

The result of this change is not eye-popping but it does have a significant performance advantage.

For an unpatched MDS with 1M inodes with caps in the global snaprealm (with debugging commits preceding this one):

    2024-02-27T01:08:53.247+0000 7f4be40ec700  2 mds.0.cache Memory usage:  total 6037860, rss 5710800, heap 215392, baseline 199008, 1000251 / 1000323 inodes have caps, 1000251 caps, 0.999928 caps per inode
    ...
    2024-02-27T01:08:54.000+0000 7f4be18e7700 10  mds.0.cache.snaprealm(0x1 seq 3 0x55feaf85ad80) split_at: snaprealm(0x1000000043b seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x55feb986b200) on [inode 0x1000000043b [...4,head] ~mds0/stray8/1000000043b/ auth v152 pv153 ap=3 snaprealm=0x55feb986b200 f() n(v0 1=0+1) old_inodes=1 (ilink xlockdone x=1) (isnap xlockdone x=1) (ifile excl) (iversion lock w=1 last_client=4361) caps={4361=pAsXsFs/-@6},l=4361 | request=1 lock=3 caps=1 authpin=1 0x56000423d180]
    2024-02-27T01:08:54.649+0000 7f4be18e7700 10 mds.0.cache.ino(0x1000000043b) move_to_realm joining realm snaprealm(0x1000000043b seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x55feb986b200), leaving realm snaprealm(0x1 seq 3 lc 3 cr 3 cps 1 snaps={2=snap(2 0x1 'one' 2024-02-27T01:06:29.440802+0000),3=snap(3 0x1 'two' 2024-02-27T01:06:43.209349+0000)} last_modified 2024-02-27T01:06:43.209349+0000 change_attr 2 0x55feaf85ad80)
    2024-02-27T01:08:54.750+0000 7f4be18e7700 10  mds.0.cache.snaprealm(0x1 seq 3 0x55feaf85ad80) split_at: split 1 inodes

so around 750ms to check all inodes_with_caps (1M) in the global snaprealm. This result was fairly consistent for multiple tries.

For a 100k split:

    2024-02-27T04:12:27.548+0000 7f2da9dbe700 10 mds.0.cache.ino(0x1000000000f) open_snaprealm snaprealm(0x1000000000f seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x563553c92900) parent is snaprealm(0x1 seq 2 lc 2 cr 2 cps 1 snaps={2=snap(2 0x1 '1' 2024-02-27T04:12:13.803030+0000)} last_modified 2024-02-27T04:12:13.803030+0000 change_attr 1 0x563553abed80)
    2024-02-27T04:12:27.548+0000 7f2da9dbe700 10  mds.0.cache.snaprealm(0x1 seq 2 0x563553abed80) split_at: snaprealm(0x1000000000f seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x563553c92900) on [inode 0x1000000000f [...3,head] /tmp.K9bdjohIVa/ auth v10972 ap=2 snaprealm=0x563553c92900 f(v0 m2024-02-27T04:03:37.953918+0000 1=0+1) n(v106 rc2024-02-27T04:12:27.544141+0000 rs1 99755=0+99755) old_inodes=1 (isnap xlock x=1 by 0x5636a6372900) (inest lock dirty) (ifile excl) (iversion lock w=1 last_client=20707) caps={20707=pAsLsXsFsx/AsLsXsFsx@8},l=20707 | dirtyscattered=1 request=1 lock=2 dirfrag=1 caps=1 dirtyrstat=0 dirtyparent=0 dirty=1 waiter=0 authpin=1 0x563553cfd180]
    2024-02-27T04:12:28.886+0000 7f2da9dbe700 10  mds.0.cache.snaprealm(0x1 seq 2 0x563553abed80) split_at: split 100031 inodes

or about 1,338ms. This caused a split of 100k inodes. This takes more time
because directories are actually moved to the snaprealm with a lot of list
twiddling for caps.

With this patch, we bring that down, for 1 split:

    2024-02-27T02:09:48.549+0000 7ff854ad4700  2 mds.0.cache Memory usage:  total 5859852, rss 4290012, heap 231776, baseline 190816, 1000312 / 1000327 inodes have caps, 1000312 caps, 0.999985 caps per inode
    ...
    2024-02-27T02:09:48.550+0000 7ff8522cf700 10 mds.0.cache.ino(0x100000f456f) open_snaprealm snaprealm(0x100000f456f seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x559e2b4fab40) parent is snaprealm(0x1 seq 9 lc 9 cr 9 cps 1 snaps={2=snap(2 0x1 'one' 2024-02-27T01:34:36.001053+0000),3=snap(3 0x1 'two' 2024-02-27T01:34:48.623349+0000),6=snap(6 0x1 'six' 2024-02-27T02:03:51.619896+0000),7=snap(7 0x1 'seven' 2024-02-27T02:04:28.375336+0000),8=snap(8 0x1 '1' 2024-02-27T02:06:14.170884+0000),9=snap(9 0x1 '2' 2024-02-27T02:09:47.158624+0000)} last_modified 2024-02-27T02:09:47.158624+0000 change_attr 6 0x559dfd4ad8c0)
    2024-02-27T02:09:48.550+0000 7ff8522cf700 10  mds.0.cache.snaprealm(0x1 seq 9 0x559dfd4ad8c0) split_at: snaprealm(0x100000f456f seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x559e2b4fab40) on [inode 0x100000f456f [...a,head] ~mds0/stray2/100000f456f/ auth v1164 pv1165 ap=3 snaprealm=0x559e2b4fab40 DIRTYPARENT f() n(v0 1=0+1) old_inodes=1 (ilink xlockdone x=1) (isnap xlockdone x=1) (inest lock) (ifile excl) (iversion lock w=1 last_client=4365) caps={4365=pAsLsXsFsx/AsLsXsFsx@6},l=4365 | request=1 lock=3 dirfrag=1 caps=1 dirtyparent=1 dirty=1 waiter=0 authpin=1 0x559e8a8bd600]
    2024-02-27T02:09:48.550+0000 7ff8522cf700 10  mds.0.cache.snaprealm(0x1 seq 9 0x559dfd4ad8c0)  open_children are 0x559dfd4add40,0x559e1cca1d40
    2024-02-27T02:09:48.919+0000 7ff8522cf700 10  mds.0.cache.snaprealm(0x1 seq 9 0x559dfd4ad8c0) split_at: split 1 inodes

or about 370ms. This was also fairly consistent across multiple tries.

For a 100k split:

    2024-02-27T01:52:24.500+0000 7ff8522cf700 10  mds.0.cache.snaprealm(0x1 seq 3 0x559dfd4ad8c0) split_at: snaprealm(0x10000000013 seq 0 lc 0 cr 0 cps 1 snaps={} last_modified 0.000000 change_attr 0 0x559e1cca1d40) on [inode 0x10000000013 [...5,head] /tmp.RIUAaU5wuE/ auth v10499 ap=2 snaprealm=0x559e1cca1d40 f(v0 m2024-02-27T01:16:04.611198+0000 1=0+1) n(v122 rc2024-02-27T01:52:24.495465+0000 rs1 100031=0+100031) old_inodes=1 (isnap xlock x=1 by 0x559ef038a880) (inest lock) (ifile excl) (iversion lock w=1 last_client=4365) caps={4365=pAsLsXsFsx/-@11},l=4365 | dirtyscattered=0 request=1 lock=2 dirfrag=1 caps=1 dirty=1 waiter=0 authpin=1 0x559e0238c580]
    2024-02-27T01:52:24.500+0000 7ff8522cf700 10  mds.0.cache.snaprealm(0x1 seq 3 0x559dfd4ad8c0)  open_children are 0x559dfd4add40
    2024-02-27T01:52:25.338+0000 7ff8522cf700 10  mds.0.cache.snaprealm(0x1 seq 3 0x559dfd4ad8c0) split_at: split 100031 inodes

or about 840ms. This can be easily done by making a directory in one of the
trees created (see reproducer below).

Reproducing can be done with:

    for ((i =0; i < 10; i++)); do (pushd $(mktemp -d -p . ); for ((j = 0; j < 30; ++j)); do mkdir "$j"; pushd "$j"; done; for ((j = 0; j < 10; ++j)); do for ((k = 0; k < 10000; ++k)); do mkdir $j.$k; done & done) & done

to make 1M directories. We put the majority of directories in a 30-deep nesting
to exercise CInode::is_ancestor_of with some worst-case type scenario.

Make sure all debugging configs are disabled for the MDS/clients. Make sure the
client has a cache size to accomodate 1M caps. Make at least one snapshot:

    mkdir .snap/one

Then reproduction can be done with:

    $ mkdir tmp.qQNsTpxpvh/dir; mkdir .snap/$((++i)); rmdir tmp.qQNsTpxpvh/dir

It is not necessary to delete any snapshots to reproduce this behavior. It's
only necessary to have a lot of inodes_with_caps in a snaprealm and effect a
split.

Fixes: https://tracker.ceph.com/issues/53192
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit a0ccb79fa0806792c7ee666c667328a8aeb09e97)

15 months agomds: reduce move_to_realm verbosity
Patrick Donnelly [Tue, 27 Feb 2024 01:36:47 +0000 (20:36 -0500)]
mds: reduce move_to_realm verbosity

It can dominate logs when large splits occur.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 34cb6300b8c102d4804e6a143393e048d71b69a9)

15 months agomds: indicate when split_at is complete for analysis
Patrick Donnelly [Mon, 26 Feb 2024 16:15:13 +0000 (11:15 -0500)]
mds: indicate when split_at is complete for analysis

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 54c20f5505a989c8d7d3d42fa29d48d63240b9a2)

15 months agomds: increase debug lvl for inode listing at sr split
Patrick Donnelly [Mon, 26 Feb 2024 16:17:42 +0000 (11:17 -0500)]
mds: increase debug lvl for inode listing at sr split

This can print a ludicrous number of lines for large cache sizes.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 681169cb94bf990c41135251f984b3d161808ca6)

15 months agomds: refactor debug print of func name
Patrick Donnelly [Mon, 26 Feb 2024 16:14:48 +0000 (11:14 -0500)]
mds: refactor debug print of func name

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 2f937772c9d3493f020cd7be0480ee550f4f791d)

15 months agomds: skip print of empty_children if empty
Patrick Donnelly [Mon, 26 Feb 2024 16:14:29 +0000 (11:14 -0500)]
mds: skip print of empty_children if empty

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 7c1823ae5e04b283ed1ca0a02977549469a7845b)

15 months agoMerge pull request #56654 from aaSharma14/wip-65142-reef
Aashish Sharma [Wed, 3 Apr 2024 16:49:54 +0000 (22:19 +0530)]
Merge pull request #56654 from aaSharma14/wip-65142-reef

reef: mgr/dashboard: replace piechart plugin charts with native pie chart panel

Reviewed-by: Nizamudeen A <nia@redhat.com>
15 months agoMerge pull request #56424 from batrick/wip-65092-reef
Venky Shankar [Wed, 3 Apr 2024 16:27:41 +0000 (21:57 +0530)]
Merge pull request #56424 from batrick/wip-65092-reef

reef: qa/suites/fs/workload: enable snap_schedule early

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #56398 from batrick/wip-64922-reef
Venky Shankar [Wed, 3 Apr 2024 16:26:32 +0000 (21:56 +0530)]
Merge pull request #56398 from batrick/wip-64922-reef

reef: mds: ensure snapclient is synced before corruption check

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #56396 from batrick/wip-65065-reef
Venky Shankar [Wed, 3 Apr 2024 16:25:54 +0000 (21:55 +0530)]
Merge pull request #56396 from batrick/wip-65065-reef

reef: qa: change log-whitelist to log-ignorelist

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #56392 from batrick/wip-65058-reef
Venky Shankar [Wed, 3 Apr 2024 16:24:45 +0000 (21:54 +0530)]
Merge pull request #56392 from batrick/wip-65058-reef

reef: qa/suites/fs/nfs: use standard health ignorelist

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #56211 from joscollin/wip-64919-reef
Venky Shankar [Wed, 3 Apr 2024 16:23:35 +0000 (21:53 +0530)]
Merge pull request #56211 from joscollin/wip-64919-reef

reef: qa: enhance labeled perf counters test for cephfs-mirror

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #55803 from anoopcs9/wip-64565-reef
Venky Shankar [Wed, 3 Apr 2024 16:22:27 +0000 (21:52 +0530)]
Merge pull request #55803 from anoopcs9/wip-64565-reef

reef: client: Fix return in removexattr for xattrs from `system.` namespace

Reviewed-by: Venky Shankar <vshankar@redhat.com>
15 months agoMerge pull request #56660 from zdover23/wip-doc-2024-04-03-backport-56635-to-reef
Anthony D'Atri [Wed, 3 Apr 2024 16:07:55 +0000 (12:07 -0400)]
Merge pull request #56660 from zdover23/wip-doc-2024-04-03-backport-56635-to-reef

reef: doc/dev: refine "Concepts"

15 months agoMerge pull request #56652 from aaSharma14/wip-65283-reef
Aashish Sharma [Wed, 3 Apr 2024 14:53:41 +0000 (20:23 +0530)]
Merge pull request #56652 from aaSharma14/wip-65283-reef

reef: mgr/dashboard: upgrade from old 'graph' type panels to the new 'timeseries' panel

Reviewed-by: Nizamudeen A <nia@redhat.com>