| delorie.com/archives/browse.cgi | search |
| 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:date:from:to:subject:message-id:reply-to | |
| :references:mime-version:content-type:in-reply-to; q=dns; s= | |
| default; b=RevZCcrkVB4WwZ5i/bM3QgEzSAQKDh9+BqDJpw4IkvMkR/lQWZlId | |
| 7Ey4/+nCjChiBj2QMnVff4E0AkWBZ0ptPM6WmnbKW8at0Eb+wGXKK8KfiyP9ggcY | |
| uQkfzGiecDU5KaGt6itMOPMm1uOsZXBtW+y/IzEQr7oP5egTSuXPM4= | |
| 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:date:from:to:subject:message-id:reply-to | |
| :references:mime-version:content-type:in-reply-to; s=default; | |
| bh=TqNzr8OCyRAnXtuP7iw2s7lTpbw=; b=Bz8reQ0AckSFJeYjd9hjyFQTlWFH | |
| shYkJHac763wMGPIVPQnTYrGkW11UTfSj2dcAshARZLg5k2zvrRHhPvmWYnin6J4 | |
| yYJT+X8EXeQjUxtc1R1zLhk8VzmmdiYj6LPmMMgFh1+C21VgqeO0x+xUsDUMCQDB | |
| /vpEv4gZ/IfAAEY= | |
| 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=-96.3 required=5.0 tests=AWL,BAYES_00,GOOD_FROM_CORINNA_CYGWIN,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_PBL,RCVD_IN_SORBS_DUL,RDNS_DYNAMIC autolearn=ham version=3.3.2 spammy=H*f:D389A1FE.92E9, H*MI:D389A1FE.92E9, H*i:D389A1FE.92E9, perfect |
| X-HELO: | calimero.vinschen.de |
| Date: | Sat, 18 Jun 2016 10:02:35 +0200 |
| From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
| To: | cygwin AT cygwin DOT com |
| Subject: | Re: FUSE for Cygwin - was: Re: Fork and Windows Heap |
| Message-ID: | <20160618080235.GA3332@calimero.vinschen.de> |
| Reply-To: | cygwin AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| References: | <D389A1FE.92E9%billziss AT navimatics DOT com> |
| MIME-Version: | 1.0 |
| In-Reply-To: | <D389A1FE.92E9%billziss@navimatics.com> |
| User-Agent: | Mutt/1.6.1 (2016-04-27) |
--IJpNTDwzlM2Ie8A6
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Hi Bill,
On Jun 17 19:48, Bill Zissimopoulos wrote:
> Hi, Corinna:
>=20
> On Jun 17 07:25, Bill Zissimopoulos wrote:
> > > Windows hard links are rather un-POSIX like and rarely used on Window=
s.
> > > After considering the required changes on the FSD for a feature that =
is
> > > so rarely used I opted against supporting them.
> >=20
> > I disagree here. Windows hardlinks work fine and pretty much as on
> > POSIX with the exception of DOS mode bits. Those are not per file but
> > per file entry as far as my experiecen goes. One of the reasons we try
> > to ignore them as much as possible.
>=20
> I no longer remember all the details now, because it was a few months ago
> that I looked into this and determined that hard links are "un-POSIX like=
".
> As far as I recall there was the FileAttributes issue (which I now think
> may have been my incorrect understanding of the documentation), but there
> was also the issue of FindFirstFileName/FindNextFileName, which is not
> something that POSIX supports out of the box (AFAIK).
>=20
> Regarding the FileAttributes issue. The Windows documentation seems to
> suggest that they are stored with the file and not the directory entry.
Yes, you're right. Apparently I didn't really think when writing. The
*real* issue with DOS attributes is that they are per file :) That has
implications if you have multiple hardlinks to symlinks of the "Windows
shortcut" type, but that shouldn't affect your WinFSD.
> The bigger issue is that the FSD now maintains an internal table of open
> files that is indexed by file name. It actually started as a table of open
> files indexed by IndexNumber (inode number Windows equivalent),
Yeah, Cygwin is presenting them as i-node numbers.
> but I
> eventually had to change it for a number of issues (notably Rename
> support).
For rename support you can use the index number as well, usually,
since you can open a file by index number. At least on NTFS.
> I am not saying that it would not be possible to change this
> part of WinFsp, I just believe that it is a non-trivial change at this
> moment.
Ok.
> [...]
> Let's examine the lifetime of a call to creat(). Suppose a Cygwin process
> does creat("/cygdrive/z/foo*bar"). In the following OP is the "originating
> process", CW is the "Cygwin runtime", NT is NTOS, WD is the "WinFsp FSD",
> WL is the "WinFsp DLL", FL is the "FUSE layer", and FS is the "user mode
> FUSE file system".
>=20
> OP: creat("/cygdrive/z/foo*bar")
> CW: NtCreateFile(L"<DEVICE>\\foo\xf02abar") <--- Cygwin translation
> NT: IRP_MJ_CREATE L"\\foo\xf02abar"
> WD: FspFsctlTransactCreateKind L"\\foo\xf02abar"
> WL: FSP_FILE_SYSTEM_INTERFACE::Create L"\\foo\xf02abar"
> FL: fuse_operations::create "/foo*bar" <--- WinFsp/FUSE
> translation
> FS: somehow satisfies fuse_operations::create
> [snip return path]
>=20
> The opposite happens when the file system communicates a file name back
> to the originating process, as in readdir().
>=20
> OP: readdir("/cygdrive/z/")
> [snip call path]
> FS: fuse_operations::readdir response: "foo*bar"
> FL: FSP_FILE_SYSTEM_INTERFACE::ReadDirectory response: L"foo\xf02abar"
> WL: FspFsctlTransactQueryDirectoryKind response: L"foo\xf02abar"
> WD: IRP_MN_QUERY_DIRECTORY response: L"foo\xf02abar"
> NT: NtQueryDirectoryFile response: L"foo\xf02abar"
> CW: readdir response: "foo*bar"
> OP: receives "foo*bar"
If I'm not missing anything crucial, that's pretty much exactly what we
need. The Cygwin process reads and writes the file as if the '*' is
a valid character and the entire process of mapping is completely
transparent to both sides. Looks perfect to me.
Corinna
--=20
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
--IJpNTDwzlM2Ie8A6
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAEBCAAGBQJXZQAbAAoJEPU2Bp2uRE+gYX0P+wYochfUDeqbHiIMXzMQH79t
QiKKNJ0zH3Da4Xc2wwC3u5H8+IWkXME/1NUHg5Fnhug2UaYzpbh9PqobZn3TPuYY
T2zm0vaCH/gLg21v9nzfRABSoVDOZ8GipkeRVBHQpjFpo3bn3OwvIPlrH8uhTvXG
YtFZN1Tju28q+vEc/4J92W290Tj4PTG7pYFoHxVJztZyhw6pKf776JHMJyJV6WfG
bUM+zTsj5avVjIZT+ibYyODbe/C7bhVZmVa0AGlfVFeY0aNr9hkaN4Fyb8d2AQaK
p50JDN5gfgiaGwIJxsCMpn4ATPb/jSUgdMpO0ALKEjVe8HMqjd/v0Ue0ZNy3jN9l
+sb3zrUa2UCPi6gcMUP110eH18kfAojHrxkWZtQW/g/ufWX9oO0nf5YZlQoK9sYF
sptOtqYaZLxB0uYGNQ+SOEG56gb7y/6pBFhVLXysppOaWQqYJwaGJxy5x9jhNhHQ
q4aCrsiZZ4XYpqLCdTApyoSgslFUeKsYYGlECnkqE1BI4EfAuG4QLhjCFc0HIpf9
DY3MLc7wRFXF0bB7cDtPnXaYCNqDPesfe24pnhu8afQDTjNMQbnDOYYTTGE3iItT
Fap9Pv+Cluap0RYK2AGV1dhZz5JAkaFmvRHkqMJMVOZ1kZ2b+X52+ChPhC1dSHN/
VH1ES9mhRVC12Al3G4LR
=/4Ld
-----END PGP SIGNATURE-----
--IJpNTDwzlM2Ie8A6--
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |