public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: Proxmox Backup Server development discussion
	<pbs-devel@lists.proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox-backup] fix #5439: disallow creation of datastore in root
Date: Fri, 17 May 2024 10:36:07 +0200	[thread overview]
Message-ID: <1715934807.c70quctiku.astroid@yuna.none> (raw)
In-Reply-To: <20240516153550.mkv5s4lubqkwpzo4@luna.proxmox.com>

On May 16, 2024 5:35 pm, Gabriel Goller wrote:
> On 16.05.2024 13:42, Fabian Grünbichler wrote:
>>On May 16, 2024 12:58 pm, Gabriel Goller wrote:
>>> On 16.05.2024 12:15, Fabian Grünbichler wrote:
>>>>On May 10, 2024 11:58 am, Gabriel Goller wrote:
>>>>> Creating a datastore in root ('/') works, but afterwards gc fails (can't
>>>>> traverse all directories). It might be sensible to restrict this and
>>>>> disallow creation of datastores in the root directory.
>>>>
>>>>if we do this, we should also forbid it on the frontend side ;)
>>>
>>> Yes, we can do that as well.
>>> This will probably be difficult, because AFAIK extjs doesn't support
>>> anything like this out of the box. But creating a custom input field +
>>> listeners to change the style should work.
>>
>>just add a validator that forbids '/', or am I missing something?
>>
>>>>I wonder whether we shouldn't handle this in a more generic fashion
>>>>though:
>>>>- disallow path being non-empty (ignoring .zfs ?) -> `/` is not allowed
>>>>  by default
>>>>- unless a flag is set -> in case we forget to handle something, we need
>>>>  an escape hatch
>>>>- if the flag is set, check whether .chunks already exists, and if it
>>>>  does, do not recreate the chunk store
>>>>
>>>>that way, we could also solve the "re-add datastore after re-install"
>>>>issue users are frequently facing..
>>>
>>> Wait, what is the issue here?
>>
>>the issue is that right now, if you lose your datastore.cfg (entry) for
>>whatever reason (the most common would be - move the actual datastore
>>from one PBS to another, or re-install, or test disaster recovery), you
>>cannot recreate it via our API/CLI. to re-add an already existing
>>(on-disk) datastore you have to manually edit datastore.cfg, since
>>attempting to create a "new" one using the already existing path fails
>>since it can't create the chunk store (it's already there after all).
>>
>>this happens more often than you'd think, and even if just for
>>stream-lining disaster recovery it would be a nice addition. of course,
>>the question is whether to focus on that (and just add a flag that
>>signifies "expect/check that the datastore is already initialized"), or
>>whether to have a generic "ignore that path is not empty" flag that also
>>covers this (that would also cover more niche use cases, but most of
>>those would go against our recommendations anyway, since they would
>>entail sharing the datastore path with other usage).
> 
> ooof, I thought we did that already (the ignore .chunks if it already
> exists).
> 
> What if instead of using a flag we do this automatically? So if one
> creates a datastore it automatically checks if the .chunks dir exists,
> and creates or doesn't create a datastore.

I guess doing it always is also possible, provided
- we at least check that all the prefix dirs are there and have the
  right owner (else the chunk store is broken)
- we print a line that we found and re-used a pre-existing chunk store


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

  reply	other threads:[~2024-05-17  8:36 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-10  9:58 Gabriel Goller
2024-05-16 10:15 ` Fabian Grünbichler
2024-05-16 10:58   ` Gabriel Goller
2024-05-16 11:42     ` Fabian Grünbichler
2024-05-16 15:35       ` Gabriel Goller
2024-05-17  8:36         ` Fabian Grünbichler [this message]
2024-06-12 13:23 ` Gabriel Goller

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=1715934807.c70quctiku.astroid@yuna.none \
    --to=f.gruenbichler@proxmox.com \
    --cc=pbs-devel@lists.proxmox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal