mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
btrfs: annotate error with human-readable hint string
Add hints for "Failed to destroy btrfs snapshot <DIR> for <ID>: operation not permitted" on rootless Related to issue 41762 Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
This commit is contained in:
parent
12f1b3ce43
commit
3deac5dc85
1 changed files with 5 additions and 0 deletions
|
@ -26,6 +26,7 @@ import (
|
|||
"sync"
|
||||
"unsafe"
|
||||
|
||||
"github.com/containerd/containerd/pkg/userns"
|
||||
"github.com/docker/docker/daemon/graphdriver"
|
||||
"github.com/docker/docker/pkg/containerfs"
|
||||
"github.com/docker/docker/pkg/idtools"
|
||||
|
@ -600,6 +601,10 @@ func (d *Driver) Remove(id string) error {
|
|||
|
||||
if err := subvolDelete(d.subvolumesDir(), id, d.quotaEnabled); err != nil {
|
||||
if d.quotaEnabled {
|
||||
// use strings.Contains() rather than errors.Is(), because subvolDelete() does not use %w yet
|
||||
if userns.RunningInUserNS() && strings.Contains(err.Error(), "operation not permitted") {
|
||||
err = errors.Wrap(err, `failed to delete subvolume without root (hint: remount btrfs on "user_subvol_rm_allowed" option, or update the kernel to >= 4.18, or change the storage driver to "fuse-overlayfs")`)
|
||||
}
|
||||
return err
|
||||
}
|
||||
// If quota is not enabled, fallback to rmdir syscall to delete subvolumes.
|
||||
|
|
Loading…
Add table
Reference in a new issue