diff options
author | Giuseppe Scrivano <gscrivan@redhat.com> | 2022-04-28 11:39:12 +0200 |
---|---|---|
committer | Giuseppe Scrivano <gscrivan@redhat.com> | 2022-04-28 13:29:01 +0200 |
commit | 91ead15283200feb9db8054a26d322fbfdc3fa59 (patch) | |
tree | b839bbaa27a5bb4935786603e738b47bc1ea9d13 /libpod/options.go | |
parent | 9133a6d044c0ab525cc087ca12c1bbc005f5f325 (diff) | |
download | podman-91ead15283200feb9db8054a26d322fbfdc3fa59.tar.gz podman-91ead15283200feb9db8054a26d322fbfdc3fa59.tar.bz2 podman-91ead15283200feb9db8054a26d322fbfdc3fa59.zip |
volume: add new option -o o=noquota
add a new option to completely disable xfs quota usage for a volume.
xfs quota set on a volume, even just for tracking disk usage, can
cause weird errors if the volume is later re-used by a container with
a different quota projid. More specifically, link(2) and rename(2)
might fail with EXDEV if the source file has a projid that is
different from the parent directory.
To prevent such kind of issues, the volume should be created
beforehand with `podman volume create -o o=noquota $ID`
Closes: https://github.com/containers/podman/issues/14049
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Diffstat (limited to 'libpod/options.go')
-rw-r--r-- | libpod/options.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libpod/options.go b/libpod/options.go index 57e2d7cf6..98eb45e76 100644 --- a/libpod/options.go +++ b/libpod/options.go @@ -1634,6 +1634,19 @@ func WithVolumeNoChown() VolumeCreateOption { } } +// WithVolumeDisableQuota prevents the volume from being assigned a quota. +func WithVolumeDisableQuota() VolumeCreateOption { + return func(volume *Volume) error { + if volume.valid { + return define.ErrVolumeFinalized + } + + volume.config.DisableQuota = true + + return nil + } +} + // withSetAnon sets a bool notifying libpod that this volume is anonymous and // should be removed when containers using it are removed and volumes are // specified for removal. |