mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-13 02:33:34 +00:00
rbd: add maxsnapshotsonimage flag
Added maxsnapshotsonimage flag to flatten the older rbd images on the chain to avoid issue in krbd.The limit is in krbd since it only allocate 1 4KiB page to handle all the snapshot ids for an image. The max limit is 510 as per https://github.com/torvalds/linux/blob/ aaa2faab4ed8e5fe0111e04d6e168c028fe2987f/drivers/block/rbd.c#L98 in cephcsi we arekeeping the default to 450 to reserve 10% to avoid issues. Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
This commit is contained in:
committed by
mergify[bot]
parent
c04b903eca
commit
8ef7143e6c
@ -79,7 +79,7 @@ func init() {
|
||||
|
||||
flag.UintVar(&conf.RbdHardMaxCloneDepth, "rbdhardmaxclonedepth", 8, "Hard limit for maximum number of nested volume clones that are taken before a flatten occurs")
|
||||
flag.UintVar(&conf.RbdSoftMaxCloneDepth, "rbdsoftmaxclonedepth", 4, "Soft limit for maximum number of nested volume clones that are taken before a flatten occurs")
|
||||
|
||||
flag.UintVar(&conf.MaxSnapshotsOnImage, "maxsnapshotsonimage", 450, "Maximum number of snapshots allowed on rbd image without flattening")
|
||||
flag.BoolVar(&conf.SkipForceFlatten, "skipforceflatten", false,
|
||||
"skip image flattening if kernel support mapping of rbd images which has the deep-flatten feature")
|
||||
|
||||
@ -182,6 +182,7 @@ func main() {
|
||||
switch conf.Vtype {
|
||||
case rbdType:
|
||||
validateCloneDepthFlag(&conf)
|
||||
validateMaxSnaphostFlag(&conf)
|
||||
driver := rbd.NewDriver()
|
||||
driver.Run(&conf, cp)
|
||||
|
||||
@ -212,3 +213,13 @@ func validateCloneDepthFlag(conf *util.Config) {
|
||||
klog.Fatalln("rbdsoftmaxclonedepth flag value should not be greater than rbdhardmaxclonedepth")
|
||||
}
|
||||
}
|
||||
|
||||
func validateMaxSnaphostFlag(conf *util.Config) {
|
||||
// maximum number of snapshots on an image are 510 [1] and 16 images in
|
||||
// a parent/child chain [2],keeping snapshot limit to 500 to avoid issues.
|
||||
// [1] https://github.com/torvalds/linux/blob/master/drivers/block/rbd.c#L98
|
||||
// [2] https://github.com/torvalds/linux/blob/master/drivers/block/rbd.c#L92
|
||||
if conf.MaxSnapshotsOnImage == 0 || conf.MaxSnapshotsOnImage > 500 {
|
||||
klog.Fatalln("maxsnapshotsonimage flag value should be between 1 and 500")
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user