Longhorn: Upgrade from 1.8.1 to 1.9.0

Change-Id: I809890d3f73e85119c5f3d97e53856bd371c8c81
diff --git a/charts/longhorn/templates/clusterrole.yaml b/charts/longhorn/templates/clusterrole.yaml
index c065f17..731e99d 100644
--- a/charts/longhorn/templates/clusterrole.yaml
+++ b/charts/longhorn/templates/clusterrole.yaml
@@ -11,7 +11,7 @@
   verbs:
   - "*"
 - apiGroups: [""]
-  resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps", "serviceaccounts"]
+  resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims", "persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps", "serviceaccounts"]
   verbs: ["*"]
 - apiGroups: [""]
   resources: ["namespaces"]
diff --git a/charts/longhorn/templates/clusterrolebinding.yaml b/charts/longhorn/templates/clusterrolebinding.yaml
index 2e34f01..dc625bf 100644
--- a/charts/longhorn/templates/clusterrolebinding.yaml
+++ b/charts/longhorn/templates/clusterrolebinding.yaml
@@ -44,6 +44,6 @@
   name: longhorn-ui-service-account
   namespace: {{ include "release_namespace" . }}
 - kind: ServiceAccount
-  name: default # supportbundle-agent-support-bundle uses default sa
+  name: default  # supportbundle-agent-support-bundle uses default sa
   namespace: {{ include "release_namespace" . }}
 {{- end }}
diff --git a/charts/longhorn/templates/crds.yaml b/charts/longhorn/templates/crds.yaml
index 44a19b2..73110b7 100644
--- a/charts/longhorn/templates/crds.yaml
+++ b/charts/longhorn/templates/crds.yaml
@@ -1,8 +1,9 @@
+# Generated crds.yaml from github.com/longhorn/longhorn-manager/k8s/pkg/apis and the crds.yaml will be copied to longhorn/longhorn chart/templates and cannot be directly used by kubectl apply.
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: backingimagedatasources.longhorn.io
@@ -38,6 +39,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 BackingImageDataSource is deprecated;
+      use longhorn.io/v1beta2 BackingImageDataSource instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -66,7 +70,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -188,7 +192,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: backingimagemanagers.longhorn.io
@@ -227,6 +231,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 BackingImageManager is deprecated; use
+      longhorn.io/v1beta2 BackingImageManager instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -255,7 +262,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -381,7 +388,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: backingimages.longhorn.io
@@ -416,6 +423,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 BackingImage is deprecated; use longhorn.io/v1beta2
+      BackingImage instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -443,7 +453,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -611,7 +621,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: backupbackingimages.longhorn.io
@@ -675,8 +685,7 @@
               backing image backup
             properties:
               backingImage:
-                description: |-
-                  The backing image name.
+                description: The backing image name.
                 type: string
               backupTargetName:
                 description: The backup target name.
@@ -694,8 +703,7 @@
                 nullable: true
                 type: string
               userCreated:
-                description: |-
-                  Is this CR created by user through API or UI.
+                description: Is this CR created by user through API or UI.
                 type: boolean
             required:
             - backingImage
@@ -780,7 +788,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: backups.longhorn.io
@@ -816,6 +824,9 @@
       jsonPath: .status.lastSyncedAt
       name: LastSyncedAt
       type: string
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 Backup is deprecated; use longhorn.io/v1beta2
+      Backup instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -843,7 +854,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -1010,7 +1021,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: backuptargets.longhorn.io
@@ -1058,6 +1069,9 @@
       jsonPath: .status.lastSyncedAt
       name: LastSyncedAt
       type: string
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 BackupTarget is deprecated; use longhorn.io/v1beta2
+      BackupTarget instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -1085,7 +1099,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -1211,7 +1225,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: backupvolumes.longhorn.io
@@ -1243,6 +1257,9 @@
       jsonPath: .status.lastSyncedAt
       name: LastSyncedAt
       type: string
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 BackupVolume is deprecated; use longhorn.io/v1beta2
+      BackupVolume instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -1270,7 +1287,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -1401,7 +1418,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: engineimages.longhorn.io
@@ -1449,6 +1466,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 EngineImage is deprecated; use longhorn.io/v1beta2
+      EngineImage instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -1476,7 +1496,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -1613,7 +1633,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: engines.longhorn.io
@@ -1649,6 +1669,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 Engine is deprecated; use longhorn.io/v1beta2
+      Engine instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -1676,7 +1699,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -1731,9 +1754,6 @@
             properties:
               active:
                 type: boolean
-              backendStoreDriver:
-                description: Deprecated:Replaced by field `dataEngine`.
-                type: string
               backupVolume:
                 type: string
               dataEngine:
@@ -1745,14 +1765,12 @@
                 type: string
               disableFrontend:
                 type: boolean
-              engineImage:
-                description: 'Deprecated: Replaced by field `image`.'
-                type: string
               frontend:
                 enum:
                 - blockdev
                 - iscsi
                 - nvmf
+                - ublk
                 - ""
                 type: string
               image:
@@ -1996,8 +2014,13 @@
                 type: boolean
               storageIP:
                 type: string
+              ublkID:
+                format: int32
+                type: integer
               unmapMarkSnapChainRemovedEnabled:
                 type: boolean
+              uuid:
+                type: string
             type: object
         type: object
     served: true
@@ -2009,7 +2032,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: instancemanagers.longhorn.io
@@ -2041,6 +2064,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 InstanceManager is deprecated; use longhorn.io/v1beta2
+      InstanceManager instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -2068,7 +2094,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -2185,9 +2211,6 @@
                   properties:
                     spec:
                       properties:
-                        backendStoreDriver:
-                          description: Deprecated:Replaced by field `dataEngine`.
-                          type: string
                         dataEngine:
                           type: string
                         name:
@@ -2225,6 +2248,11 @@
                           type: integer
                         type:
                           type: string
+                        ublkID:
+                          format: int32
+                          type: integer
+                        uuid:
+                          type: string
                       type: object
                   type: object
                 nullable: true
@@ -2234,9 +2262,6 @@
                   properties:
                     spec:
                       properties:
-                        backendStoreDriver:
-                          description: Deprecated:Replaced by field `dataEngine`.
-                          type: string
                         dataEngine:
                           type: string
                         name:
@@ -2274,6 +2299,11 @@
                           type: integer
                         type:
                           type: string
+                        ublkID:
+                          format: int32
+                          type: integer
+                        uuid:
+                          type: string
                       type: object
                   type: object
                 nullable: true
@@ -2283,9 +2313,6 @@
                   properties:
                     spec:
                       properties:
-                        backendStoreDriver:
-                          description: Deprecated:Replaced by field `dataEngine`.
-                          type: string
                         dataEngine:
                           type: string
                         name:
@@ -2323,6 +2350,11 @@
                           type: integer
                         type:
                           type: string
+                        ublkID:
+                          format: int32
+                          type: integer
+                        uuid:
+                          type: string
                       type: object
                   type: object
                 description: 'Deprecated: Replaced by InstanceEngines and InstanceReplicas'
@@ -2347,7 +2379,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: nodes.longhorn.io
@@ -2392,6 +2424,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 Node is deprecated; use longhorn.io/v1beta2
+      Node instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -2419,7 +2454,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -2632,7 +2667,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: orphans.longhorn.io
@@ -2682,6 +2717,14 @@
             description: OrphanSpec defines the desired state of the Longhorn orphaned
               data
             properties:
+              dataEngine:
+                description: |-
+                  The type of data engine for instance orphan.
+                  Can be "v1", "v2".
+                enum:
+                - v1
+                - v2
+                type: string
               nodeID:
                 description: The node ID on which the controller is responsible to
                   reconcile this orphan CR.
@@ -2743,7 +2786,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: recurringjobs.longhorn.io
@@ -2787,6 +2830,9 @@
       jsonPath: .spec.labels
       name: Labels
       type: string
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 RecurringJob is deprecated; use longhorn.io/v1beta2
+      RecurringJob instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -2814,7 +2860,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -2825,7 +2871,7 @@
       name: Groups
       type: string
     - description: Should be one of "snapshot", "snapshot-force-create", "snapshot-cleanup",
-        "snapshot-delete", "backup", "backup-force-create" or "filesystem-trim"
+        "snapshot-delete", "backup", "backup-force-create", "filesystem-trim" or "system-backup"
       jsonPath: .spec.task
       name: Task
       type: string
@@ -2898,7 +2944,7 @@
                   type: string
                 description: |-
                   The parameters of the snapshot/backup.
-                  Support parameters: "full-backup-interval".
+                  Support parameters: "full-backup-interval", "volume-backup-policy".
                 type: object
               retain:
                 description: The retain count of the snapshot/backup.
@@ -2906,7 +2952,7 @@
               task:
                 description: |-
                   The recurring job task.
-                  Can be "snapshot", "snapshot-force-create", "snapshot-cleanup", "snapshot-delete", "backup", "backup-force-create" or "filesystem-trim"
+                  Can be "snapshot", "snapshot-force-create", "snapshot-cleanup", "snapshot-delete", "backup", "backup-force-create", "filesystem-trim" or "system-backup".
                 enum:
                 - snapshot
                 - snapshot-force-create
@@ -2915,6 +2961,7 @@
                 - backup
                 - backup-force-create
                 - filesystem-trim
+                - system-backup
                 type: string
             type: object
           status:
@@ -2939,7 +2986,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: replicas.longhorn.io
@@ -2979,6 +3026,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 Replica is deprecated; use longhorn.io/v1beta2
+      Replica instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -3006,7 +3056,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -3065,9 +3115,6 @@
             properties:
               active:
                 type: boolean
-              backendStoreDriver:
-                description: Deprecated:Replaced by field `dataEngine`.
-                type: string
               backingImage:
                 type: string
               dataDirectoryName:
@@ -3083,9 +3130,6 @@
                 type: string
               diskPath:
                 type: string
-              engineImage:
-                description: 'Deprecated: Replaced by field `image`.'
-                type: string
               engineName:
                 type: string
               evictionRequested:
@@ -3213,6 +3257,11 @@
                 type: boolean
               storageIP:
                 type: string
+              ublkID:
+                format: int32
+                type: integer
+              uuid:
+                type: string
             type: object
         type: object
     served: true
@@ -3224,7 +3273,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: settings.longhorn.io
@@ -3248,6 +3297,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 Setting is deprecated; use longhorn.io/v1beta2
+      Setting instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -3275,7 +3327,7 @@
         required:
         - value
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -3337,7 +3389,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: sharemanagers.longhorn.io
@@ -3364,6 +3416,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 ShareManager is deprecated; use longhorn.io/v1beta2
+      ShareManager instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -3391,7 +3446,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -3464,7 +3519,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: snapshots.longhorn.io
@@ -3593,7 +3648,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: supportbundles.longhorn.io
@@ -3724,7 +3779,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: systembackups.longhorn.io
@@ -3861,7 +3916,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: systemrestores.longhorn.io
@@ -3970,7 +4025,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: volumeattachments.longhorn.io
@@ -4114,7 +4169,7 @@
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.15.0
+    controller-gen.kubebuilder.io/version: v0.17.1
   labels: {{- include "longhorn.labels" . | nindent 4 }}
     longhorn-manager: ""
   name: volumes.longhorn.io
@@ -4166,6 +4221,9 @@
     - jsonPath: .metadata.creationTimestamp
       name: Age
       type: date
+    deprecated: true
+    deprecationWarning: longhorn.io/v1beta1 Volume is deprecated; use longhorn.io/v1beta2
+      Volume instead
     name: v1beta1
     schema:
       openAPIV3Schema:
@@ -4193,7 +4251,7 @@
           status:
             x-kubernetes-preserve-unknown-fields: true
         type: object
-    served: true
+    served: false
     storage: false
     subresources:
       status: {}
@@ -4257,9 +4315,6 @@
                 - rwo
                 - rwx
                 type: string
-              backendStoreDriver:
-                description: Deprecated:Replaced by field `dataEngine`.'
-                type: string
               backingImage:
                 type: string
               backupCompressionMethod:
@@ -4293,9 +4348,6 @@
                 type: array
               encrypted:
                 type: boolean
-              engineImage:
-                description: 'Deprecated: Replaced by field `image`.'
-                type: string
               freezeFilesystemForSnapshot:
                 description: Setting that freezes the filesystem on the root partition
                   before a snapshot is created.
@@ -4311,6 +4363,7 @@
                 - blockdev
                 - iscsi
                 - nvmf
+                - ublk
                 - ""
                 type: string
               image:
@@ -4329,6 +4382,17 @@
                 type: array
               numberOfReplicas:
                 type: integer
+              offlineRebuilding:
+                description: |-
+                  Specifies whether Longhorn should rebuild replicas while the detached volume is degraded.
+                  - ignored: Use the global setting for offline replica rebuilding.
+                  - enabled: Enable offline rebuilding for this volume, regardless of the global setting.
+                  - disabled: Disable offline rebuilding for this volume, regardless of the global setting
+                enum:
+                - ignored
+                - disabled
+                - enabled
+                type: string
               replicaAutoBalance:
                 enum:
                 - ignored
@@ -4492,9 +4556,6 @@
                 type: string
               ownerID:
                 type: string
-              pendingNodeID:
-                description: Deprecated.
-                type: string
               remountRequestedAt:
                 type: string
               restoreInitiated:
diff --git a/charts/longhorn/templates/default-setting.yaml b/charts/longhorn/templates/default-setting.yaml
index e0419dc..cfe8eb8 100644
--- a/charts/longhorn/templates/default-setting.yaml
+++ b/charts/longhorn/templates/default-setting.yaml
@@ -152,8 +152,11 @@
     {{- if not (kindIs "invalid" .Values.defaultSettings.kubernetesClusterAutoscalerEnabled) }}
     kubernetes-cluster-autoscaler-enabled: {{ .Values.defaultSettings.kubernetesClusterAutoscalerEnabled }}
     {{- end }}
-    {{- if not (kindIs "invalid" .Values.defaultSettings.orphanAutoDeletion) }}
-    orphan-auto-deletion: {{ .Values.defaultSettings.orphanAutoDeletion }}
+    {{- if not (kindIs "invalid" .Values.defaultSettings.orphanResourceAutoDeletion) }}
+    orphan-resource-auto-deletion: {{ .Values.defaultSettings.orphanResourceAutoDeletion }}
+    {{- end }}
+    {{- if not (kindIs "invalid" .Values.defaultSettings.orphanResourceAutoDeletionGracePeriod) }}
+    orphan-resource-auto-deletion-grace-period: {{ .Values.defaultSettings.orphanResourceAutoDeletionGracePeriod }}
     {{- end }}
     {{- if not (kindIs "invalid" .Values.defaultSettings.storageNetwork) }}
     storage-network: {{ .Values.defaultSettings.storageNetwork }}
@@ -230,15 +233,24 @@
     {{- if not (kindIs "invalid" .Values.defaultSettings.v2DataEngineLogFlags) }}
     v2-data-engine-log-flags: {{ .Values.defaultSettings.v2DataEngineLogFlags }}
     {{- end }}
+    {{- if not (kindIs "invalid" .Values.defaultSettings.v2DataEngineSnapshotDataIntegrity) }}
+    v2-data-engine-snapshot-data-integrity: {{ .Values.defaultSettings.v2DataEngineSnapshotDataIntegrity }}
+    {{- end }}
     {{- if not (kindIs "invalid" .Values.defaultSettings.freezeFilesystemForSnapshot) }}
     freeze-filesystem-for-snapshot: {{ .Values.defaultSettings.freezeFilesystemForSnapshot }}
     {{- end }}
     {{- if not (kindIs "invalid" .Values.defaultSettings.autoCleanupSnapshotWhenDeleteBackup) }}
     auto-cleanup-when-delete-backup: {{ .Values.defaultSettings.autoCleanupSnapshotWhenDeleteBackup }}
     {{- end }}
+    {{- if not (kindIs "invalid" .Values.defaultSettings.autoCleanupSnapshotAfterOnDemandBackupCompleted) }}
+    auto-cleanup-snapshot-after-on-demand-backup-completed: {{ .Values.defaultSettings.autoCleanupSnapshotAfterOnDemandBackupCompleted }}
+    {{- end }}
     {{- if not (kindIs "invalid" .Values.defaultSettings.rwxVolumeFastFailover) }}
     rwx-volume-fast-failover: {{ .Values.defaultSettings.rwxVolumeFastFailover}}
     {{- end }}
+    {{- if not (kindIs "invalid" .Values.defaultSettings.offlineRelicaRebuilding) }}
+    offline-replica-rebuilding: {{ .Values.defaultSettings.offlineRelicaRebuilding}}
+    {{- end }}
     {{- if not (kindIs "invalid" .Values.defaultSettings.v2DataEngineCPUMask) }}
     v2-data-engine-cpu-mask: {{ .Values.defaultSettings.v2DataEngineCPUMask }}
     {{- end }}
diff --git a/charts/longhorn/templates/deployment-ui.yaml b/charts/longhorn/templates/deployment-ui.yaml
index e4f3e0f..76b80f2 100644
--- a/charts/longhorn/templates/deployment-ui.yaml
+++ b/charts/longhorn/templates/deployment-ui.yaml
@@ -55,17 +55,7 @@
     spec:
       serviceAccountName: longhorn-ui-service-account
       affinity:
-        podAntiAffinity:
-          preferredDuringSchedulingIgnoredDuringExecution:
-          - weight: 1
-            podAffinityTerm:
-              labelSelector:
-                matchExpressions:
-                - key: app
-                  operator: In
-                  values:
-                  - longhorn-ui
-              topologyKey: kubernetes.io/hostname
+      {{- toYaml .Values.longhornUI.affinity | nindent 8 }}
       containers:
       {{- if .Values.openshift.enabled }}
       {{- if .Values.openshift.ui.route }}
@@ -97,9 +87,9 @@
         image: {{ template "registry_url" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }}
         imagePullPolicy: {{ .Values.image.pullPolicy }}
         volumeMounts:
-        - name : nginx-cache
+        - name: nginx-cache
           mountPath: /var/cache/nginx/
-        - name : nginx-config
+        - name: nginx-config
           mountPath: /var/config/nginx/
         - name: var-run
           mountPath: /var/run/
diff --git a/charts/longhorn/templates/extra-objects.yaml b/charts/longhorn/templates/extra-objects.yaml
new file mode 100644
index 0000000..f7e34d7
--- /dev/null
+++ b/charts/longhorn/templates/extra-objects.yaml
@@ -0,0 +1,4 @@
+{{- range .Values.extraObjects }}
+---
+{{- tpl (toYaml . ) $ }}
+{{- end }}
diff --git a/charts/longhorn/templates/storageclass.yaml b/charts/longhorn/templates/storageclass.yaml
index 884d38d..34723a4 100644
--- a/charts/longhorn/templates/storageclass.yaml
+++ b/charts/longhorn/templates/storageclass.yaml
@@ -15,7 +15,7 @@
     provisioner: driver.longhorn.io
     allowVolumeExpansion: true
     reclaimPolicy: "{{ .Values.persistence.reclaimPolicy }}"
-    volumeBindingMode: Immediate
+    volumeBindingMode: {{ .Values.persistence.volumeBindingMode | default "Immediate" }}
     parameters:
       numberOfReplicas: "{{ .Values.persistence.defaultClassReplicaCount }}"
       staleReplicaTimeout: "30"
@@ -55,3 +55,6 @@
       disableRevisionCounter: "{{ .Values.persistence.disableRevisionCounter }}"
       dataEngine: "{{ .Values.persistence.dataEngine }}"
       {{- end }}
+      {{- if .Values.persistence.backupTargetName }}
+      backupTargetName: "{{ .Values.persistence.backupTargetName }}"
+      {{- end }}