refquota der Quelle auf dem Ziel berücksichtigen #20

Closed
thorsten.spille wants to merge 0 commits from thorsten.spille/feature-4-refquota into main AGit

Setzt #4 um.

Problem

refquota wird nur mit der Erstreplikation übertragen (send -p). Wird sie auf der Quelle später erhöht, behält das Ziel den alten Wert, und die Replikation scheitert mit „quota exceeded“, sobald die Daten darüber wachsen.

Änderung

  • Vor der inkrementellen Replikation eines Dateisystems wird die refquota auf dem Ziel auf den Wert der Quelle erhöht bzw. aufgehoben, wenn die Quelle keine hat. Sie wird nie verkleinert; Volumes und quota bleiben unangetastet.
  • Die refquota der Quelle kommt mit der vorhandenen Abfrage der Dataset-Typen (zfs list -Hp -o name,type,refquota), also kein zusätzlicher Aufruf auf der Quelle; auf dem Ziel eine lokale Abfrage je Dateisystem.
  • Log z. B. [INFO] pool/a - raising refquota of backup/zsync/pool/a from 10GiB to 20GiB (refquota of the source); schlägt zfs set fehl: [ERROR] und Exit-Code 1.
  • README-Abschnitt „refquota“, CHANGELOG.

Tests

  • neues Szenario 15-refquota: erhöhen, aufheben, größere und unbegrenzte Ziel-refquota bleiben, Volume ohne refquota
  • alle anderen 14 Szenarien: verändernde Aufrufe identisch zu main
  • zfs-Stub liefert die angefragten Spalten und refquota

Closes #4

🤖 Generated with Claude Code

Setzt #4 um. ## Problem `refquota` wird nur mit der Erstreplikation übertragen (`send -p`). Wird sie auf der Quelle später erhöht, behält das Ziel den alten Wert, und die Replikation scheitert mit „quota exceeded“, sobald die Daten darüber wachsen. ## Änderung - Vor der inkrementellen Replikation eines Dateisystems wird die `refquota` auf dem Ziel auf den Wert der Quelle **erhöht** bzw. **aufgehoben**, wenn die Quelle keine hat. Sie wird **nie verkleinert**; Volumes und `quota` bleiben unangetastet. - Die `refquota` der Quelle kommt mit der vorhandenen Abfrage der Dataset-Typen (`zfs list -Hp -o name,type,refquota`), also kein zusätzlicher Aufruf auf der Quelle; auf dem Ziel eine lokale Abfrage je Dateisystem. - Log z. B. `[INFO] pool/a - raising refquota of backup/zsync/pool/a from 10GiB to 20GiB (refquota of the source)`; schlägt `zfs set` fehl: `[ERROR]` und Exit-Code 1. - README-Abschnitt „refquota“, CHANGELOG. ## Tests - neues Szenario `15-refquota`: erhöhen, aufheben, größere und unbegrenzte Ziel-refquota bleiben, Volume ohne refquota - alle anderen 14 Szenarien: verändernde Aufrufe identisch zu `main` - zfs-Stub liefert die angefragten Spalten und `refquota` Closes #4 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Raise the refquota on the target to the value of the source
All checks were successful
/ build (pull_request) Successful in 26s
/ test (debian-13) (pull_request) Successful in 44s
/ test (ubuntu-24.04) (pull_request) Successful in 46s
/ test (debian-12) (pull_request) Successful in 51s
/ test (ubuntu-26.04) (pull_request) Successful in 52s
/ publish (pull_request) Has been skipped
/ package (pull_request) Successful in 0s
6880bbeb47
The refquota is only received with the initial replication (send -p). A refquota
raised on the source later stayed at the old value on the target, so the
replication failed with "quota exceeded" once the data grew beyond it.

Before the incremental replication of a filesystem the target refquota is raised
to the source value, or removed if the source has none. It is never lowered,
volumes and quota are not touched. The refquota of the source comes with the
existing query of the dataset types (no additional call on the source).

Tests: scenario 15 (raise, remove, keep a larger and an unlimited target
refquota, volume); the zfs stub returns the requested columns and refquota.

Refs #4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Manuell nach main gemergt (1543296), CI inkl. publish nach testing grün. Schließe den PR.

Manuell nach `main` gemergt (1543296), CI inkl. publish nach testing grün. Schließe den PR.
thorsten.spille closed this pull request 2026-10-15 19:08:14 +02:00
All checks were successful
/ build (pull_request) Successful in 26s
/ test (debian-13) (pull_request) Successful in 44s
/ test (ubuntu-24.04) (pull_request) Successful in 46s
/ test (debian-12) (pull_request) Successful in 51s
/ test (ubuntu-26.04) (pull_request) Successful in 52s
/ publish (pull_request) Has been skipped
/ package (pull_request) Successful in 0s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
bashclub/zsync!20
No description provided.