-
-
Notifications
You must be signed in to change notification settings - Fork 268
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add linstor
storage driver
#1621
base: main
Are you sure you want to change the base?
Conversation
We expect to send integration tests validating the scenarios in the next few days. I think we'll probably need some Linstor setup on the testing environment as well. |
ea94519
to
cf18bb1
Compare
There's a bunch of static analysis failure around code styling/formatting that should be pretty easy to handle. |
5723ea8
to
6d4dede
Compare
func (d *Daemon) getLinstor() (*linstor.Client, error) { | ||
// Setup the client if it does not exist | ||
if d.linstor == nil { | ||
err := d.setupLinstor() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I’m seeing a small race condition leading to a double execution of setupLinstor
:
getLinstor
gets called until after thed.linstor == nil
condition is checkedsetupLinstor
gets called beforeerr := d.setupLinstor()
gets calledsetupLinstor
gets called again byerr := d.setupLinstor()
.
I’d put a synchronization here…
7c04d43
to
3d7e8c7
Compare
Hey @stgraber just a quick update on the state of things. @winiciusallan, @bensmrs and I did a quick call about the current state of the implementation and the next steps. Here are the main takeaways:
|
c38398e
to
120ae22
Compare
…hot volumes Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
…ng of volumes with snapshots Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
…r resource definitions Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
…rieving device paths Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
…grating lxc instances Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
…olumes Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
…volumes Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
…napshots Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
…umes Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Among other changes, this commit changes quota sizes to accomodate slightly bigger volumes on LINSTOR and to avoid having tolerance ranges intersect for QUOTA1 and QUOTA2. Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr> Co-authored-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr> Co-authored-by: Luís Simas <luis.nascimento@luizalabs.com>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Luís Simas <luis.nascimento@luizalabs.com> Co-authored-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Description
This PR introduces a new
linstor
storage driver to enable provisioning of volumes backed by LINSTOR, as discussed in #564.All storage driver features are implemented except for storage buckets. Storage buckets cannot be implemented natively on LINSTOR, and the most logical approach would be to fallback to the generic implementation like it's done for all drivers other than Ceph. We didn't go in that route due to the fact that today Incus considers that any remote storage driver supports an optimized implementation of storage buckets, but that's not the case for LINSTOR ( https://github.com/lxc/incus/blob/main/internal/server/storage/backend.go#L3827).
Although most driver features are implemented, not all of them are optimized using LINSTOR native capabilities. We fallback to the generic implementation in several cases, including:
Closes #564