@@ -763,8 +763,18 @@ message ControllerUnpublishVolumeRequest {
763763 // This field is OPTIONAL. Refer to the `Secrets Requirements`
764764 // section on how to use this field.
765765 map <string , string > secrets = 3 [(csi_secret) = true ];
766- }
767766
767+ // Indicates SP MUST make the volume inacessible to the node or nodes
768+ // it is being unpublished from. Any attempt to read or write data
769+ // to a volume from a node that has been fenced MUST NOT succeed,
770+ // even if the volume remains staged and/or published on the node.
771+ // CO MUST NOT set this field to true unless SP has the
772+ // UNPUBLISH_FENCE controller capability.
773+ // The SP MAY make the volume inaccessible even when this field is
774+ // false.
775+ // This is an OPTIONAL field.
776+ bool fence = 4 ;
777+ }
768778message ControllerUnpublishVolumeResponse {
769779 // Intentionally empty.
770780}
@@ -1044,6 +1054,10 @@ message ControllerServiceCapability {
10441054 // This enables COs to, for example, fetch per volume
10451055 // condition after a volume is provisioned.
10461056 GET_VOLUME = 12 [(alpha_enum_value) = true ];
1057+
1058+ // Indicates the SP supports ControllerUnpublishVolume.fence
1059+ // field.
1060+ UNPUBLISH_FENCE = 13 ;
10471061 }
10481062
10491063 Type type = 1 ;
@@ -1281,6 +1295,13 @@ message NodeUnstageVolumeRequest {
12811295 // system/filesystem, but, at a minimum, SP MUST accept a max path
12821296 // length of at least 128 bytes.
12831297 string staging_target_path = 2 ;
1298+
1299+ // Indicates that the SP should prefer to successfully unstage the
1300+ // volume, even if data loss would occur as a result.
1301+ // CO MUST NOT set this field to true unless SP has the
1302+ // FORCE_UNPUBLISH node capability.
1303+ // This in an OPTIONAL field.
1304+ bool force = 3 ;
12841305}
12851306
12861307message NodeUnstageVolumeResponse {
@@ -1365,6 +1386,13 @@ message NodeUnpublishVolumeRequest {
13651386 // system/filesystem, but, at a minimum, SP MUST accept a max path
13661387 // length of at least 128 bytes.
13671388 string target_path = 2 ;
1389+
1390+ // Indicates that the SP should prefer to successfully unpublish the
1391+ // volume, even if data loss would occur as a result.
1392+ // CO MUST NOT set this field to true unless SP has the
1393+ // FORCE_UNPUBLISH node capability.
1394+ // This in an OPTIONAL field.
1395+ bool force = 3 ;
13681396}
13691397
13701398message NodeUnpublishVolumeResponse {
@@ -1476,6 +1504,11 @@ message NodeServiceCapability {
14761504 // Note that, for alpha, `VolumeCondition` is intended to be
14771505 // informative for humans only, not for automation.
14781506 VOLUME_CONDITION = 4 [(alpha_enum_value) = true ];
1507+ // Indicates that the node supports the NodeUnpublishVolume.force
1508+ // field. Also indicates that the node supports the
1509+ // NodeUnstageVolume.force field if it also has the
1510+ // STAGE_UNSTAGE_VOLUME capability.
1511+ FORCE_UNPUBLISH = 5 ;
14791512 }
14801513
14811514 Type type = 1 ;
0 commit comments