Summary: | emerge --sync should ignore .zfs directories | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Erik Ohrnberger <eohrnberger> |
Component: | Core - Configuration | Assignee: | Portage team <dev-portage> |
Status: | CONFIRMED --- | ||
Severity: | normal | CC: | esigra |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: |
https://bugs.gentoo.org/show_bug.cgi?id=666554 https://bugs.gentoo.org/show_bug.cgi?id=657324 |
||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 240187 | ||
Attachments: | emerge --info text file attached |
Yes, we can add --exclude=/.zfs to the default excludes, like the others from bug 666554: https://gitweb.gentoo.org/proj/portage.git/commit/?id=b587fc874ce95064139ba85552e146da957cce9e We could extend repos.conf to allow explicit excludes, and could also use excludes from sync-rsync-extra-opts. Hmm. Hadn't realized something until I looked at my PORTAGE_RSYNC_OPTS again. PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git --exclude=/.zfs" I suppose I need to change it to: --exclude=.zfs ? The --exclude=/.zfs option is correct, however the code seen in https://gitweb.gentoo.org/proj/portage.git/commit/?id=b587fc874ce95064139ba85552e146da957cce9e does not use PORTAGE_RSYNC_OPTS because bug 666554 was triggered by people putting --delete-excluded in PORTAGE_RSYNC_OPTS. We could scrape the --exclude settings from PORTAGE_RSYNC_OPTS, but it's probably better create a separate configuration setting for excludes. A separate configuration setting for excludes would also be useful for the purposes of bug 657324. There are actually 2 distinct types of excludes to deal with, though they are sometimes lumped them together: 1) Excludes for remote files that we would want to delete locally if matching files exist (which is why people put --delete-excluded in PORTAGE_RSYNC_OPTS). 2) Excludes for local files that we want to keep, including /distfiles, /local, /lost+found, /packages, and /.zfs. |
Created attachment 555922 [details] emerge --info text file attached If you have /usr/portage mounted as a zfs dataset, And if zfs set snapdir=visible on that dataset Then it appears that the rsync tree verification recurses through all the snapshots that are visible in the /usr/portage/.zfs directories, eventually exhausting the storage of that zfs dataset populating the /usr/portage/.tmp-unverified-download-quarantine directory with recursive copies of /usr/portage/.tmp-unverified-download-quarantine/.zfs/snapshot Temporary solution is to: zfs set snapdir=hidden <pool>/<dataset> emerge --sync zfs set snapdir=visible <pool>/<dataset> However, couldn't the rsync tree verification be set to ignore any .zfs directories?