Announcement

Collapse
No announcement yet.

Proposed Reflink Support Would Provide Big Space Savings For Wine

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Originally posted by Hi-Angel View Post

    What people refer to as "CoW filesystem" is orthogonal to copying files by references aka doing reflinks.

    "CoW filesystem" usually refers to a filesystem that upon changing a file will not actually overwrite its blocks, but instead it would create ones with the new content elsewhere. Thus you have both new and old blocks, and can rollback to the older version of data.

    reflinks are indeed related to CoW in a sense that they employ CoW behavior where file blocks are only copied on write. However: α) this does not require a CoW filesystem, for example XFS supports it; and β) this does not have to be supported by a CoW filesystem, for example ZFS does not support it.

    It would seem to me like once you have a CoW FS, adding reflinks support there should be absolutely trivial. However, if you look at the ZFS bugreport (provided in the comment you quoted), you might find it was reported in 2011 year. I admittedly didn't delve into it, but judging by the age and the amount of comments, there are apparently technical hurdles. Which even further highlights the point, that CoW and reflinks are orthogonal features.
    According to https://github.com/openzfs/zfs/discussions/4237, they just don’t bother to add it as it does not improve performance significantly.

    Comment


    • #32
      Originally posted by landeel View Post
      I'm considering using a BTRFS partition to share my data and game library between Linux and Windows.
      Does anyone know how stable and secure WinBtrfs is? Risks of data loss?
      Generally it's stable (in case of not damaging the FS), but causes troubles with Windows Update (sometimes seasonal updates fail) and has performance regressions.

      Comment


      • #33
        There are many people who prefer old style partitioning with /home and / on mounted on different partitions. Easier to do clean reinstall that way. Reflinks don't work across different filesystems.

        Comment


        • #34
          One of my pet beefs with wine. Still making the feature dependent on filesystem features is ackward.

          I would prefer the docker approach of using overlays. Would be quite handy in case of updates to the underlying base filesystem.

          But having an AMD GPU, that's of course all theoretical.

          Comment


          • #35
            It would be nice, if the default prefix came installed with Mono and all that windows stuff that is needed for many applications/games then. I doubt it would slow down apps that don't use .Net significantly, but installing stat stuff all the time is kinda annoying.

            Comment


            • #36
              Originally posted by Khrundel View Post
              There are many people who prefer old style partitioning with /home and / on mounted on different partitions. Easier to do clean reinstall that way. Reflinks don't work across different filesystems.
              I don't see a problem here. / holds the initial copy of wine and /home holds N prefixes, these can all be reflink'ed. So 1+N copies become 2 copies. When using btrfs you could even use nested subvolumes to take advantage of cross-subvolume-reflinks. (https://github.com/torvalds/linux/co...5f55c214d164ce)

              Personally I use one btrfs per device and subvolumes instead of partitions. It gives you clean separation without ever worrying about partition sizes.

              Comment


              • #37
                What stops them from having globally accessible system/system32 directories for DLLs that can be overriden by files within prefixes? I mean look for a dll inside the prefix first and if it's not present there, look for it in Wine installation directory. It would do the trick and there wouldn't be anything filesystem-specific to it. Are there any reasons why it couldn't work like that?

                Comment


                • #38
                  Does Btrfs and XFS support case-folded file names?

                  Comment


                  • #39
                    I always thought Wine needed some kind of virtual file system or overlay. It could work like reflinks but also be used for stuff like winetricks where you would have to install painful stuff like dotnet (still broken) only once and to reuse it you just add an override on top of another bottle. It would need to go beyond the filesystem probably like it touches the registry and who knows what else.

                    I'm curious to see how it will work out in practice since I use 10 different wine versions, proton, patches, and downgrade/upgrade them even in the same profile.

                    Comment


                    • #40
                      Originally posted by bple2137 View Post
                      What stops them from having globally accessible system/system32 directories for DLLs that can be overriden by files within prefixes? I mean look for a dll inside the prefix first and if it's not present there, look for it in Wine installation directory. It would do the trick and there wouldn't be anything filesystem-specific to it. Are there any reasons why it couldn't work like that?
                      Anti cheat and copy protection made by some vendors install/upgrade process. Wine dll load order has been doing what you are talking about for a while.

                      The problem patterns goes as follows.
                      1 ) Open file handle to DLL.
                      2) use this file handle to modify DLL.
                      3) expect this to have happened with no error.
                      4) when program loads without modified DLL destory program registration information due to being hacked.

                      Why did 2 fail simple system wide file has to be protected from modification. So a COW is not a optional feature here.

                      Anti-cheats/copy protection that contain their own dll loaders. This is also why wine dll fakes had to go from a place holder to really callable library place holder libraries as well. Yes these will want the file handle to the dll open and read the dll . So this means you have to provide a faked "system/system32" or have a file system that can reflink to share effectively.

                      Comment

                      Working...
                      X