Skip to content

Commit

Permalink
rbd: add support for thick provisioning option
Browse files Browse the repository at this point in the history
Add an option to the StorageClass to support creating fully allocated
(thick provisioned) RBD images

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
Signed-off-by: Niels de Vos <ndevos@redhat.com>
  • Loading branch information
Madhu-1 authored and mergify[bot] committed Feb 19, 2021
1 parent 354f395 commit c417a5d
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/deploy-rbd.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ make image-cephcsi
| `mounter` | no | if set to `rbd-nbd`, use `rbd-nbd` on nodes that have `rbd-nbd` and `nbd` kernel modules to map rbd images |
| `encrypted` | no | disabled by default, use `"true"` to enable LUKS encryption on PVC and `"false"` to disable it. **Do not change for existing storageclasses** |
| `encryptionKMSID` | no | required if encryption is enabled and a kms is used to store passphrases |
| `thickProvision` | no | if set to `"true"`, newly created RBD images will be completely allocated by writing zeros to it |

**NOTE:** An accompanying CSI configuration file, needs to be provided to the
running pods. Refer to [Creating CSI configuration](../examples/README.md#creating-csi-configuration)
Expand Down
3 changes: 3 additions & 0 deletions examples/rbd/storageclass.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ parameters:
# eg: pool: rbdpool
pool: <rbd-pool-name>

# Set thickProvision to true if you want RBD images to be fully allocated on
# creation (thin provisioning is the default).
thickProvision: "false"
# (required) RBD image features, CSI creates image with image-format 2
# CSI RBD currently supports only `layering` feature.
imageFeatures: layering
Expand Down
10 changes: 10 additions & 0 deletions internal/rbd/controllerserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ package rbd
import (
"context"
"errors"
"fmt"
"strconv"

csicommon "github.com/ceph/ceph-csi/internal/csi-common"
"github.com/ceph/ceph-csi/internal/journal"
Expand Down Expand Up @@ -116,6 +118,14 @@ func (cs *ControllerServer) parseVolCreateRequest(ctx context.Context, req *csi.
return nil, status.Error(codes.InvalidArgument, err.Error())
}

tp := "thickProvision"
thick := req.GetParameters()[tp]
if thick != "" {
if rbdVol.ThickProvision, err = strconv.ParseBool(thick); err != nil {
return nil, fmt.Errorf("failed to parse %q: %w", tp, err)
}
}

rbdVol.RequestName = req.GetName()

// Volume Size - Default is 1 GiB
Expand Down
1 change: 1 addition & 0 deletions internal/rbd/rbd_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ type rbdVolume struct {
Encrypted bool
readOnly bool
Primary bool
ThickProvision bool
KMS util.EncryptionKMS
// Owner is the creator (tenant, Kubernetes Namespace) of the volume.
Owner string
Expand Down

0 comments on commit c417a5d

Please sign in to comment.