[PATCH] Cygwin: 3.6.0: add release entries for my patches.

2025-02-13 Thread Jeremy Drake via Cygwin-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.

2025-02-13 Thread Jeremy Drake via Cygwin-patches
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.

2025-02-13 Thread Corinna Vinschen
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.

2025-02-13 Thread Corinna Vinschen
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.

2025-02-13 Thread Jeremy Drake via Cygwin-patches
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.

2025-02-13 Thread Corinna Vinschen
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