Blogs Engineering

Making -no-xattr Actually Skip Extended Attributes in Plakar Backups

Artículo en inglés. Plakar's -no-xattr flag never reached the filesystem importer, so FUSE mounts like /etc/pve failed to back up. A one-line fix plus a regression test.

GoPlakarKorp/plakarbackupCLI flagsFUSE

A flag that was parsed but never passed along, and a test that proves it now reaches the importer.

respuesta corta

Plakar's backup -no-xattr flag was accepted but never passed to the importer, so Plakar still read extended attributes. On filesystems that don't support them, such as Proxmox's FUSE-mounted /etc/pve, files failed with "operation not supported". The fix copies the flag into the importer options and adds a test that checks it arrives. It was merged as PR #2327 and closed issue #2045.

The problem

Plakar is an open-source backup tool written in Go. Issue #2045 showed a backup of a Proxmox server's config directory:

plakar at @s3-ik backup -no-xattr -tag pve /etc/pve
...
        import: nodes=273/273, objects=1659/1659, errors=83
...
✘ /etc/pve/notifications.cfg: operation not supported

The user had already passed -no-xattr, and the errors still appeared.

The fix

importerOpts := ctx.ImporterOpts()
importerOpts.Excludes = cmd.Excludes
importerOpts.NoXattr = cmd.NoXattr

The regression test registers a probe importer that records the NoXattr option it receives, then runs a backup with and without -no-xattr:

require.Equal(t, tc.want, xattrProbeNoXattr.Load(),
    "-no-xattr must reach the importer so it does not read extended attributes")

By the numbers

  • Repository: PlakarKorp/plakar, 2,102 stars (Nov 3, 2026), Go, ISC
  • Files changed: 2 (1 source file, 1 test file)
  • Lines: +45 / -0
  • Commits: 1
  • Opened: Aug 21, 2026. Merged: Sep 22, 2026. Time to merge: 31 days, 19 hours
  • Review: 3 approvals

How the review went

Three reviewers approved the change over about three weeks, the last two with "lgtm" and "LGTM thx." It was merged on Sep 22.

Preguntas frecuentes

What did the bug affect?

Any backup where -no-xattr was meant to avoid reading extended attributes. The issue's example was Proxmox's /etc/pve.

Where can I read more?

See the pull request and the original issue.

el objetivo

The production change is one line. The test is what makes it last, because it fails the moment the flag stops reaching the importer again.

Ejecuta el ciclo

Convierte señales de producción en fixes revisados.

Empieza una prueba gratuita y descubre cómo Prilog conecta incidentes reales con pull requests a nivel de código.