delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2016/06/19/16:32:26

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:subject:to:references:from:message-id:date
:mime-version:in-reply-to:content-type
:content-transfer-encoding; q=dns; s=default; b=IbFZ9pf2mnVeLyf7
BSwJRIVIN5PeHFUX99IkCukQsr9OTJH1lKOt2PHj1/xxjSw42TdrY8Z3p/r+Jof4
L+AlBezx440qu6KP23QPzAAr6Rz/mua5JCrEDeZXXd1UyYisSA1qPugYEs/xp5Fr
PRErLfgtbO8PHpcNJJlmisDF0JY=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:subject:to:references:from:message-id:date
:mime-version:in-reply-to:content-type
:content-transfer-encoding; s=default; bh=nvCZtoN0uyoe8iAXiGn11w
ZBfew=; b=oeGF7w5NvJNiNGRkkKAaaQw+4OEn+xmBb2WTNR5EkTfxGB62wHrLor
n7vCeEySDceuBDw4rCh5W8ifJhlxaJw5NrizP8IT/vmCyt7sBLy6R6oLGgSLipPG
q1ww7eD62LN/6IFOxRe6i6Uh1FJ78vHpuO1rdAANUYp9b7lZ7ZSqk=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=one!, citizens, faces, sk:casein
X-HELO: mout.gmx.net
Subject: Re: FUSE for Cygwin
To: cygwin AT cygwin DOT com
References: <D389ABB9.931F%billziss AT navimatics DOT com> <57667FEF DOT 5070801 AT gmx DOT de> <D38C1E3D.9385%billziss AT navimatics DOT com>
From: Herbert Stocker <hersto AT gmx DOT de>
Message-ID: <57670140.7050001@gmx.de>
Date: Sun, 19 Jun 2016 22:32:00 +0200
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101 Thunderbird/38.1.0
MIME-Version: 1.0
In-Reply-To: <D38C1E3D.9385%billziss@navimatics.com>
X-UI-Out-Filterresults: notjunk:1;V01:K0:h3+UuKfMukI=:ugqGocEnxYdJP04WPpz5k+ sG23PPFKThWdyLUibRYqBA3kl93BIu2RFqHag+/z71wW80/hmJhfUe/2lsZr0aMqumNG0Rjms nbA/4fRF2ronBGtaqroy4v2JqhGw1Xzb8uTY7vvQm8EugI/X57+ZeQPAv7ZO5HKupA86uXzt6 ATrHbAIC/dolIYbV46q7JXBlpTCdz8jqVigYIIC6tb3eUI0jSzgkU2Gpw4Xg482P2o5+ryiLL kfxXcaNr23QPzoBfgEfaUQ2q64CgSFyOi7w3g7pJ4sxneOuZlGxSp+3GmIWPLsaFaBBoJvBtk hBuLYgq88cm1xEqcPrMO6JAvFML4Mc1g5g+wI+iAqm8DRZQ+8AXGMvwITh/G6N5MsW3OJITwD QO3ulY5I0OR1dfet0JcleaR3ir7fWVmAj/Ug+ZgM2DmQPSyAlJ6boYtbtWPPPUkNI+UHUc9fQ 6BWLHc49MzFOPY3TsKbBCxMyniT+gPQkpoJbs5Z9MvOEKaa8q1crCFyz0fvz6H6aGzDrZVWGj gW5saQoSIS5DluWcdVfeAzD5W0co/f/aMFnYdfUMzAUqvVZeKDHMOuTcjWdKOHUIlnu+Xfk18 i4o5pkHiOWG/JAPqHx6Hrew9FD9UZ8XS+IFGZtoiBZmx0qlIMemHGpnSUsoZxGsf/RBuBDFm5 c39hK8q7pkgyieIwyrrrxuDnLrDaKKNjCpaq00zF+iat70jT5EkZF6KsLEyNcQirUpet2TXvu f05RUbeqYzJJr3oBVIvgVLReFf2HmrMO5LgEif9XPShJN7nabO78ubkE7lnCaGtckRxrT0pFp uLbMLNF
X-IsSubscribed: yes

Hi Bill,

i agree with you that there are only two context switches involved
and that Cygwin processes are not 2nd class performance.

But i was *not* talking about context switches.
i was talking about *translating of semantics* mostly in my mail.

Because i was trying to avoid translation from Posix to Win32
*and back*, just to go from Cygwin process to Cygwin process.

And the reason i want to avoid the translations is not performance.
It is because mode (4) does not have those issues that WinFsp must
take care of in (3). See my points B) to G).

Please also see the end of this mail, i overlooked something you did
not. So i'm now more biased towards (3).


Now some specific answers:
 >> E) Same for uid/gid to SID mapping.
 >>    No need to implement or follow Cygwin.
 >>    And how about the case where a uid/gid has no correspoinding SID?
 >>    Can this happen?
 >
 > Yes, it can, but this is an issue that Cygwin faces itself.
 >
It will not face it if communication between both Cygwin processes
does not leave Posix semantics. See what i try to avoid?


 >> F) Pipes:
 >
 > Good catch this one!
 >
 > Of course I can try to fix this in the WinFsp/FUSE layer
 > implementation, but the fix would probably be a gross and
 > Cygwin-specific hack.

Mode (4) would avoid such things *by design*.
Not because we happen to catch all of them.


>> To fix this with mode (3) you'd have to recognize these .lnk
>>    files and forward them to the file system as pipes, and you'd
>>    have to generate .lnk files on the fly when the file system
>>    says there is a pipe file (e.g. on readdir).
>
> Yes, I agree. Not pretty!
>
But please do that if you stay with mode (3).


>> G) Case sensitivity.
>
> WinFsp (and Windows) allows for both case-sensitive and case-insensitive
> file systems.
 > <snip>
> FUSE file systems are marked as case-sensitive by default.

If WinFsp marks FUSE file systems as case-sensitive then there is no
issue with case sensitiity.

However we should have a look into OSXFUSE, it also has to deal with
case sensitivity. Let's see how they solved it. There's also MacFUSE
and Fuse4X according to Wikipedia.



> Just to clarify: I believe that Cygwin processes are already on the same
> class as Win32 processes when it comes to a WinFsp exposed file system.
> There are no extra context switches

Context switch wise they are the same class. But i was not concerned
about context switches.

> Even if you created an intermediate Cygwin process (that
> acted as a WinFsp file system) to let Win32 processes access these FUSE
> file systems,

That was defintively my aim. And i think we should use WinFsp for that.

> you would now make those Win32 processes 2nd class citizens,
> as they would have to go through that intermediate process (which means 4
> context switches per file system request for them).

You are right. I did not think about this extra process. Performance
wise Win32 processes would be 2nd class. i was just thinking about
feature wise, where they don't lose.


 >>>>>>>
Now this argument of yours makes me more biased towards mode (3). Let's
pay with some design unprettiness (remember pipes) and have the better
performance for both worlds.

And besides, the translations are necessary anyway for mode (2).
Except for the pipes and hardlinks, they need not be supported in
mode (2).


best regards,
as before, i am looking forward to use WinFsp and have FUSE available
for my Cygwin scripts and stuff. And even for windows processes.

Herbert




--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019