[PATCH] Cygwin: 3.6.0: add release entries for my patches.
These are: 04a5b07294 Cygwin: expose all windows volume mount points. 0d113da235 Cygwin: /proc//mount*: escape strings. 7923059bff Cygwin: uname: add host machine tag to sysname. b091b47b9e cygthread: suspend thread before terminating. Signed-off-by: Jeremy Drake --- winsup/cygwin/release/3.6.0 | 21 + 1 file changed, 21 insertions(+) diff --git a/winsup/cygwin/release/3.6.0 b/winsup/cygwin/release/3.6.0 index e193a20c03..5869d7ffc8 100644 --- a/winsup/cygwin/release/3.6.0 +++ b/winsup/cygwin/release/3.6.0 @@ -91,3 +91,24 @@ What changed: MAP_SHARED/MAP_PRIVATE flags agree and MAP_NORESERVE is not set for either mapping. Addresses: https://cygwin.com/pipermail/cygwin/2024-December/256901.html + +- Fix a long-standing hang issue when running on ARM64 under emulation. + This was due to a thread being terminated while the emulation was + holding an internal lock. + Addresses: https://cygwin.com/pipermail/cygwin-developers/2024-May/012694.html + +- Add a host machine tag to uname(2)'s sysname field. This echoes what + used to be done with -WOW64 (when that was supported), but now with + -ARM64 when running on an ARM64 host under emulation. The Cygwin DLL's + own architecture continues to be reported in the machine field. + +- Escape special characters in /proc//mount*. This allows the + contents to be parsed consistently, and matches what is done on Linux. + Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256082.html + +- Expose all Windows volume mount points via getmntent(3). This also + exposes them via /proc//mount*. A change in behavior from + previous Cygwin versions is that volumes whose root is mounted + explicitly in Cygwin will now also show up as mounted under the + cygdrive prefix, whereas before that entry would have been suppressed. + Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256081.html -- 2.48.1.windows.1
Re: [PATCH v3 2/2] Cygwin: expose all windows volume mount points.
On Thu, 13 Feb 2025, Corinna Vinschen wrote: > The new behaviour makes more sense, actually. > > Pushed! > > Would you mind to send a patch with a release message we can add > to release/3.6.0? Sent. I also documented my other patches that only seem to be on the master branch (ie, not backported to 3.5).
Re: [PATCH v3 2/2] Cygwin: expose all windows volume mount points.
On Feb 12 17:37, Jeremy Drake via Cygwin-patches wrote: > On Wed, 12 Feb 2025, Jeremy Drake via Cygwin-patches wrote: > > > On Wed, 12 Feb 2025, Jeremy Drake via Cygwin-patches wrote: > > > > > It was *supposed* to not return the second one. Maybe I broke it when > > > trying to break out of the loop early... I will test this scenario and > > > see why it doesn't work as expected. > > > > Yeah, I never actually looked at how posix_sorted was sorted. It's sorted > > by length first, then by strcmp. This was probably a premature > > optimization anyway. conv_to_posix_path doesn't try to bail early, it > > just continues, and that's going to be a much more common code path than > > this... > > Not only that, but there's a sash-vs-backslash mismatch between > native_path and mnt_fsname resulting in the strcasematch not matching. I > must have only tested the root-of-drive-letter case (where the paths are > like C:), because that was the case the existing code was handling: > > diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc > index 4be24fbe84..ef3070dbe1 100644 > --- a/winsup/cygwin/mount.cc > +++ b/winsup/cygwin/mount.cc > @@ -1645,14 +1645,8 @@ fillout_mntent (const char *native_path, const char > *posix_path, unsigned flags) >struct mntent& ret=_my_tls.locals.mntbuf; >bool append_bs = false; > > - /* Remove drivenum from list if we see a x: style path */ >if (strlen (native_path) == 2 && native_path[1] == ':') > -{ > - int drivenum = cyg_tolower (native_path[0]) - 'a'; > - if (drivenum >= 0 && drivenum <= 31) > - _my_tls.locals.available_drives &= ~(1 << drivenum); >append_bs = true; > -} > > > I have a fix for these, and I also added a patch 3 on top which removes > the de-duplication code and calls cygdrive_posix_path instead of > conv_to_posix_path. You can not apply patch 3, apply patch 3 in case it > has to be reverted later, or squash it into 2 if you prefer, there's > options. I think this looks good, including patch 3. If you're fine with that, I'll push all three patches. Corinna
Re: [PATCH v3 2/2] Cygwin: expose all windows volume mount points.
On Feb 13 15:15, Corinna Vinschen wrote: > On Feb 12 17:37, Jeremy Drake via Cygwin-patches wrote: > > On Wed, 12 Feb 2025, Jeremy Drake via Cygwin-patches wrote: > > > > > On Wed, 12 Feb 2025, Jeremy Drake via Cygwin-patches wrote: > > > > > > > It was *supposed* to not return the second one. Maybe I broke it when > > > > trying to break out of the loop early... I will test this scenario and > > > > see why it doesn't work as expected. > > > > > > Yeah, I never actually looked at how posix_sorted was sorted. It's sorted > > > by length first, then by strcmp. This was probably a premature > > > optimization anyway. conv_to_posix_path doesn't try to bail early, it > > > just continues, and that's going to be a much more common code path than > > > this... > > > > Not only that, but there's a sash-vs-backslash mismatch between > > native_path and mnt_fsname resulting in the strcasematch not matching. I > > must have only tested the root-of-drive-letter case (where the paths are > > like C:), because that was the case the existing code was handling: > > > > diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc > > index 4be24fbe84..ef3070dbe1 100644 > > --- a/winsup/cygwin/mount.cc > > +++ b/winsup/cygwin/mount.cc > > @@ -1645,14 +1645,8 @@ fillout_mntent (const char *native_path, const char > > *posix_path, unsigned flags) > >struct mntent& ret=_my_tls.locals.mntbuf; > >bool append_bs = false; > > > > - /* Remove drivenum from list if we see a x: style path */ > >if (strlen (native_path) == 2 && native_path[1] == ':') > > -{ > > - int drivenum = cyg_tolower (native_path[0]) - 'a'; > > - if (drivenum >= 0 && drivenum <= 31) > > - _my_tls.locals.available_drives &= ~(1 << drivenum); > >append_bs = true; > > -} > > > > > > I have a fix for these, and I also added a patch 3 on top which removes > > the de-duplication code and calls cygdrive_posix_path instead of > > conv_to_posix_path. You can not apply patch 3, apply patch 3 in case it > > has to be reverted later, or squash it into 2 if you prefer, there's > > options. > > I think this looks good, including patch 3. To wit: $ mount | grep drvmount C:/drvmount on /mnt/c/drvmount type ntfs (binary,posix=0,noumount,auto) $ mount C:/drvmount /home/corinna/drv $ mount | grep drvmount C:/drvmount on /home/corinna/drv type ntfs (binary,user) C:/drvmount on /mnt/c/drvmount type ntfs (binary,posix=0,noumount,auto) $ df /mnt/c/drvmount Filesystem 1K-blocks Used Available Use% Mounted on C:/drvmount 4175868 56744 4119124 2% /mnt/c/drvmount $ df /home/corinna/drv Filesystem 1K-blocks Used Available Use% Mounted on C:/drvmount 4175868 56744 4119124 2% /home/corinna/drv > If you're fine with that, > I'll push all three patches. > > > Corinna
Re: [PATCH v3 2/2] Cygwin: expose all windows volume mount points.
On Thu, 13 Feb 2025, Corinna Vinschen wrote: > On Feb 13 15:15, Corinna Vinschen wrote: > > > I think this looks good, including patch 3. > > To wit: > > $ mount | grep drvmount > C:/drvmount on /mnt/c/drvmount type ntfs (binary,posix=0,noumount,auto) > $ mount C:/drvmount /home/corinna/drv > $ mount | grep drvmount > C:/drvmount on /home/corinna/drv type ntfs (binary,user) > C:/drvmount on /mnt/c/drvmount type ntfs (binary,posix=0,noumount,auto) > $ df /mnt/c/drvmount > Filesystem 1K-blocks Used Available Use% Mounted on > C:/drvmount 4175868 56744 4119124 2% /mnt/c/drvmount > $ df /home/corinna/drv > Filesystem 1K-blocks Used Available Use% Mounted on > C:/drvmount 4175868 56744 4119124 2% /home/corinna/drv > > > If you're fine with that, > > I'll push all three patches. Sounds good to me. It's less code, and the code it calls (cygdrive_posix_path) is more efficient because it doesn't have to loop through all mounts. As long as you're ok with the change in behavior that: mount C: /c mount will now show C: on both /c and /cygdrive/c, instead of just /c as before (this is the behavior all of that de-duplication mess was trying to replicate).
Re: [PATCH v3 2/2] Cygwin: expose all windows volume mount points.
On Feb 13 10:08, Jeremy Drake via Cygwin-patches wrote: > On Thu, 13 Feb 2025, Corinna Vinschen wrote: > > > On Feb 13 15:15, Corinna Vinschen wrote: > > > > > I think this looks good, including patch 3. > > > > To wit: > > > > $ mount | grep drvmount > > C:/drvmount on /mnt/c/drvmount type ntfs (binary,posix=0,noumount,auto) > > $ mount C:/drvmount /home/corinna/drv > > $ mount | grep drvmount > > C:/drvmount on /home/corinna/drv type ntfs (binary,user) > > C:/drvmount on /mnt/c/drvmount type ntfs (binary,posix=0,noumount,auto) > > $ df /mnt/c/drvmount > > Filesystem 1K-blocks Used Available Use% Mounted on > > C:/drvmount 4175868 56744 4119124 2% /mnt/c/drvmount > > $ df /home/corinna/drv > > Filesystem 1K-blocks Used Available Use% Mounted on > > C:/drvmount 4175868 56744 4119124 2% /home/corinna/drv > > > > > If you're fine with that, > > > I'll push all three patches. > > Sounds good to me. It's less code, and the code it calls > (cygdrive_posix_path) is more efficient because it doesn't have to loop > through all mounts. As long as you're ok with the change in behavior > that: > > mount C: /c > mount > > will now show C: on both /c and /cygdrive/c, instead of just /c as before > (this is the behavior all of that de-duplication mess was trying to > replicate). The new behaviour makes more sense, actually. Pushed! Would you mind to send a patch with a release message we can add to release/3.6.0? Thanks, Corinna