Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

os: expand support for Windows Deduplication Reparse Points to Include SIS (NTFS) #66031

Open
upgrade0217 opened this issue Feb 29, 2024 · 5 comments
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. OS-Windows
Milestone

Comments

@upgrade0217
Copy link

I ran into an issue using restic where Windows SIS reparse points on an NTFS file system were failing to back up. After some discussion, it was pointed out that the new Windows NTFS deduplication is supported nicely in Go.

Here is where I was shown support for the new Windows NTFS deduplication scheme: (https://tip.golang.org/src/os/types_windows.go#L201. I'm not 100% sure, but I think the old-style SIS deduplication could be handled the same way, just with a different reparse tag.

@cagedmantis cagedmantis changed the title Support for Windows SIS Deduplication Reparse Points (NTFS) os: expand support for Windows SIS Deduplication Reparse Points (NTFS) Feb 29, 2024
@cagedmantis cagedmantis added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Feb 29, 2024
@cagedmantis cagedmantis added this to the Backlog milestone Feb 29, 2024
@cagedmantis
Copy link
Contributor

@golang/windows

@upgrade0217 upgrade0217 changed the title os: expand support for Windows SIS Deduplication Reparse Points (NTFS) os: expand support for Windows Deduplication Reparse Points to Include SIS (NTFS) Feb 29, 2024
@gopherbot
Copy link

Change https://go.dev/cl/568535 mentions this issue: os: added support for SIS-deduplicated files on Windows

@mister-sir
Copy link

I submitted a change that should fix this. I unfortunately don't have easy access to a Windows box that I can build go on, so I wasn't able to fully test the change. It seems fairly straightforward, but it would be awesome if someone with Windows could test this.

@mister-sir
Copy link

Built and tested on Windows, just awaiting code review.

@qmuntal
Copy link
Contributor

qmuntal commented Mar 18, 2024

It looks like SIS dedup is deprecated since Windows Server 2012 R2 and removed in Windows Server 2016 in favor of Data Deduplication, as per Microsoft docs. Considering that the minimum supported version is Windows Server 2016, then I'm afraid that special-casing IO_REPARSE_TAG_SIS would be out of policy.

Even with that, IMO the Go standard library can't special-case all reparse points at will. Downstream apps should decide what to do with them in a case-by-case basis.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. OS-Windows
Projects
None yet
Development

No branches or pull requests

5 participants