all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: "Kefu Chai" <k.chai@proxmox.com>
To: "Thomas Lamprecht" <t.lamprecht@proxmox.com>,
	<pve-devel@lists.proxmox.com>
Cc: Kefu Chai <tchaikov@gmail.com>
Subject: Re: [PATCH manager 1/1] ceph: osd: fix bootstrap keyring creation when auth_client_required is not in ceph.conf
Date: Thu, 12 Mar 2026 11:35:02 +0800	[thread overview]
Message-ID: <DH0HLP843DI4.26O6XLVCSSFC6@proxmox.com> (raw)
In-Reply-To: <40e8e151-a812-4041-a4de-b0a79098eb73@proxmox.com>

On Thu Mar 12, 2026 at 1:01 AM CST, Thomas Lamprecht wrote:
> Am 11.03.26 um 14:29 schrieb Kefu Chai:
>> The condition guarding bootstrap-osd keyring creation checks for
>> `auth_client_required eq 'cephx'` by reading ceph.conf directly. When
>> this setting is absent from ceph.conf (relying on the Ceph default, or
>> configured via the mon config database instead), the check evaluates as
>> `undef eq 'cephx'` which is false, causing PVE to skip creating the
>> bootstrap keyring. ceph-volume then fails because it cannot find
>> /var/lib/ceph/bootstrap-osd/ceph.keyring.
>> 
>> This can happen when:
>> - ceph.conf [global] was created before `pveceph init` wrote the auth
>>   settings (pveceph init skips writing them if [global] already exists)
>> - auth settings were moved from ceph.conf to the mon config database
>> - an upgrade or migration left ceph.conf without the auth lines
>> 
>> Fix by defaulting to 'cephx' when the setting is absent (matching
>> Ceph's own default) and inverting the check to only skip keyring
>> creation when auth is explicitly set to 'none'.
>> 
>> Signed-off-by: Kefu Chai <tchaikov@gmail.com>
>> Signed-off-by: Kefu Chai <k.chai@proxmox.com>
>> ---
>>  PVE/API2/Ceph/OSD.pm | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/PVE/API2/Ceph/OSD.pm b/PVE/API2/Ceph/OSD.pm
>> index a952c952..062729ae 100644
>> --- a/PVE/API2/Ceph/OSD.pm
>> +++ b/PVE/API2/Ceph/OSD.pm
>> @@ -407,7 +407,7 @@ __PACKAGE__->register_method({
>>  
>>          if (
>>              !-f $ceph_bootstrap_osd_keyring
>> -            && $ceph_conf->{global}->{auth_client_required} eq 'cephx'
>> +            && ($ceph_conf->{global}->{auth_client_required} // 'cephx') ne 'none'
>
> As the same variable is already accessed in the line above without a
> fallback, it either has to be already always defined and this // 'cephx'
> is superfluous, or we should pull that out upfront and use it for both,
> like:
>
> my $auth_client_required = $ceph_conf->{global}->{auth_client_required} // 'cephx';
>
> (disclaimer, I did not review within the full code context, only found
> above pattern slightly odd)

Thank you for the feedback! Your suggestion to extract
$auth_client_required to a named variable is a good style improvement:
it makes the intent clearer and is more readable. I've updated the patch
to do exactly that.

Regarding "accessed in the line above without a fallback": in this
function, auth_client_required is only read in one place (the if
condition), so there isn't a second use to consolidate. The diff context
does show other $ceph_conf->{global}->{...} accesses nearby, which may
be what caught your eye. Totally understandable given you noted you
didn't have the full context.

The updated version now reads:

my $auth_client_required = $ceph_conf->{global}->{auth_client_required} // 'cephx';
if (!-f $ceph_bootstrap_osd_keyring && $auth_client_required ne 'none') {

This is cleaner regardless, since the extracted variable avoids the long
hash dereference inside the condition. Thanks again for taking a look!

>
>>          ) {
>>              my $bindata = $rados->mon_command({
>>                  prefix => 'auth get-or-create',





  reply	other threads:[~2026-03-12  3:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-11 13:28 [PATCH manager 0/1] fix bootstreap keyring creation when auth_client_required is missing Kefu Chai
2026-03-11 13:28 ` [PATCH manager 1/1] ceph: osd: fix bootstrap keyring creation when auth_client_required is not in ceph.conf Kefu Chai
2026-03-11 17:02   ` Thomas Lamprecht
2026-03-12  3:35     ` Kefu Chai [this message]
2026-03-12  5:19       ` kefu chai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DH0HLP843DI4.26O6XLVCSSFC6@proxmox.com \
    --to=k.chai@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    --cc=t.lamprecht@proxmox.com \
    --cc=tchaikov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal