isMountPointExcluded to isMountPointIncluded

This commit is contained in:
DRON-666 2024-04-29 01:23:50 +03:00
parent 24330c19a8
commit 90b168eb6c
2 changed files with 20 additions and 22 deletions

View File

@ -145,22 +145,20 @@ func (fs *LocalVss) Lstat(name string) (os.FileInfo, error) {
return os.Lstat(fs.snapshotPath(name))
}
// isMountPointExcluded is true if given mountpoint excluded by user.
func (fs *LocalVss) isMountPointExcluded(mountPoint string) bool {
// isMountPointIncluded is true if given mountpoint included by user.
func (fs *LocalVss) isMountPointIncluded(mountPoint string) bool {
if fs.excludeVolumes == nil {
return false
return true
}
volume, err := GetVolumeNameForVolumeMountPoint(mountPoint)
if err != nil {
fs.msgError(mountPoint, errors.Errorf("failed to get volume from mount point [%s]: %s", mountPoint, err))
return false
return true
}
_, ok := fs.excludeVolumes[strings.ToLower(volume)]
return ok
return !ok
}
// snapshotPath returns the path inside a VSS snapshots if it already exists.
@ -199,20 +197,20 @@ func (fs *LocalVss) snapshotPath(path string) string {
if !snapshotExists && !snapshotFailed {
vssVolume := volumeNameLower + string(filepath.Separator)
if fs.isMountPointExcluded(vssVolume) {
if !fs.isMountPointIncluded(vssVolume) {
fs.msgMessage("snapshots for [%s] excluded by user\n", vssVolume)
fs.failedSnapshots[volumeNameLower] = struct{}{}
} else {
fs.msgMessage("creating VSS snapshot for [%s]\n", vssVolume)
var filter VolumeFilter
var includeVolume VolumeFilter
if !fs.excludeAllMountPoints {
filter = func(volume string) bool {
return !fs.isMountPointExcluded(volume)
includeVolume = func(volume string) bool {
return fs.isMountPointIncluded(volume)
}
}
if snapshot, err := NewVssSnapshot(fs.provider, vssVolume, fs.timeout, filter, fs.msgError); err != nil {
if snapshot, err := NewVssSnapshot(fs.provider, vssVolume, fs.timeout, includeVolume, fs.msgError); err != nil {
fs.msgError(vssVolume, errors.Errorf("failed to create snapshot for [%s]: %s",
vssVolume, err))
fs.failedSnapshots[volumeNameLower] = struct{}{}

View File

@ -154,10 +154,10 @@ func TestParseMountPoints(t *testing.T) {
sysVolumeMatch,
},
[]check{
{`c:\`, true},
{`c:`, true},
{sysVolume, true},
{sysVolumeMutated, true},
{`c:\`, false},
{`c:`, false},
{sysVolume, false},
{sysVolumeMutated, false},
},
[]string{},
},
@ -169,10 +169,10 @@ func TestParseMountPoints(t *testing.T) {
sysVolumeMatch,
},
[]check{
{`c:\windows\`, false},
{`\\?\Volume{39b9cac2-bcdb-4d51-97c8-0d0677d607fb}\`, false},
{`c:`, true},
{``, false},
{`c:\windows\`, true},
{`\\?\Volume{39b9cac2-bcdb-4d51-97c8-0d0677d607fb}\`, true},
{`c:`, false},
{``, true},
},
[]string{
`failed to parse vss\.exclude-volumes \[z:\\nonexistent\]:.*`,
@ -208,8 +208,8 @@ func TestParseMountPoints(t *testing.T) {
}
for _, c := range test.checks {
if dst.isMountPointExcluded(c.volume) != c.result {
t.Fatalf(`wrong check: isMountPointExcluded("%s") != %v`, c.volume, c.result)
if dst.isMountPointIncluded(c.volume) != c.result {
t.Fatalf(`wrong check: isMountPointIncluded("%s") != %v`, c.volume, c.result)
}
}