Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Date: Thu, 10 May 2001 17:20:00 +0400 From: egor duda X-Mailer: The Bat! (v1.45) Personal Reply-To: egor duda Organization: deo X-Priority: 3 (Normal) Message-ID: <1791875116.20010510172000@logos-m.ru> To: cygwin-developers AT cygwin DOT com Subject: storing symlink in extended attribute (on ntfs) X-Sender: egor duda Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----------A51F323E29C4263B" ------------A51F323E29C4263B Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi! i've modified cygwin slightly to store symlink value in shortcut's extended attribute, and to try to get it from there. my (rough) benchmarking shows 30%-50% speedup in symlink resolution code. turn ntea "on" before running. create_tree.sh creates tree structure used for benchmarking, traverse_tree.sh is actual "benchmark" the patch is only proof-of-concept. of course, if will be cleaned up (work only on ntfs, better error checking, etc.) if we decide we need such functionality in cygwin. Comments? egor. mailto:deo AT logos-m DOT ru icq 5165414 fidonet 2:5020/496.19 ------------A51F323E29C4263B Content-Type: application/octet-stream; name="traverse_tree.sh" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="traverse_tree.sh" Zm9yIHggaW4gMSAyIDMgNDsgZG8NCiAgZm9yIHkgaW4gMSAyIDMgNDsgZG8NCiAgICBmb3IgeiBp biAxIDIgMyA0OyBkbw0KICAgICAgZm9yIHUgaW4gMSAyIDMgNDsgZG8NCiAgICAgICAgZm9yIHYg aW4gMSAyIDMgNDsgZG8NCiAgICAgICAgICBjZCAvdG1wL3NsLyR4LyR5LyR6LyR1LyR2IDsNCiAg ICAgICAgZG9uZQ0KICAgICAgZG9uZQ0KICAgIGRvbmUNCiAgZG9uZQ0KZG9uZQ0K ------------A51F323E29C4263B Content-Type: application/octet-stream; name="create_tree.sh" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="create_tree.sh" IyEgL2Jpbi9iYXNoCgplY2hvICRACgppZiBbICEgLXogJDUgXTsgdGhlbgogIGV4aXQgCmZpCgpp ZiBbIC16ICQxIF07IHRoZW4KICBta2RpciAvdG1wL3NsCiAgY2QgL3RtcC9zbApmaQoKZm9yIHgg aW4gMSAyIDMgNDsgZG8KICBta2RpciAkeC5kaXIgOwogIGxuIC1zICR4LmRpciAkeCA7CmRvbmUK CmZvciB4IGluIDEgMiAzIDQ7IGRvCiAgcHVzaGQgJHguZGlyID4vZGV2L251bGwKICBzaCAtYyAi L3RtcC9jcmVhdGVfdHJlZS5zaCAkQCAkeCIKICBwb3BkID4vZGV2L251bGwKZG9uZQo= ------------A51F323E29C4263B Content-Type: application/octet-stream; name="symlink-in-ea.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="symlink-in-ea.diff" SW5kZXg6IG50ZWEuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9j eWd3aW4vbnRlYS5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXUgLXAgLTIgLXIx LjMgbnRlYS5jYwotLS0gbnRlYS5jYwkyMDAwLzA5LzA4IDAyOjU2OjU0CTEuMworKysgbnRlYS5j YwkyMDAxLzA1LzEwIDEyOjU0OjA4CkBAIC0yNTUsNSArMjU1LDUgQEAgTlRSZWFkRUFSYXcgKEhB TkRMRSBoRmlsZVNvdXJjZSwgaW50ICpsZQogCiBCT09MIF9fc3RkY2FsbAotTlRXcml0ZUVBIChj b25zdCBjaGFyICpmaWxlLCBjb25zdCBjaGFyICphdHRybmFtZSwgY2hhciAqYnVmLCBpbnQgbGVu KQorTlRXcml0ZUVBIChjb25zdCBjaGFyICpmaWxlLCBjb25zdCBjaGFyICphdHRybmFtZSwgY29u c3QgY2hhciAqYnVmLCBpbnQgbGVuKQogewogICAvKiByZXR1cm4gaW1tZWRpYXRlbHkgaWYgTlRF QSB1c2FnZSBpcyB0dXJuZWQgb2ZmICovCkluZGV4OiBwYXRoLmNjCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL3BhdGguY2MsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTM3CmRpZmYgLXUgLXAgLTIgLXIxLjEzNyBwYXRoLmNjCi0tLSBwYXRoLmNjCTIwMDEv MDUvMDkgMTg6NTk6MTAJMS4xMzcKKysrIHBhdGguY2MJMjAwMS8wNS8xMCAxMjo1NDoxMwpAQCAt MjQyMSw0ICsyNDIxLDUgQEAgc3ltbGluayAoY29uc3QgY2hhciAqdG9wYXRoLCBjb25zdCBjaGFy IAogCQkgICAgJiYgV3JpdGVGaWxlIChoLCB3MzJ0b3BhdGgsIHdpbl9sZW4sICZ3cml0dGVuLCBO VUxMKQogCQkgICAgJiYgd3JpdHRlbiA9PSB3aW5fbGVuOworICAgICAgICAgIE5UV3JpdGVFQSh3 aW4zMl9wYXRoLCBTWU1MSU5LX0VBX05BTUUsIHRvcGF0aCwgc3RybGVuICh0b3BhdGgpICsgMSk7 CiAJfQogICAgICAgZWxzZQpAQCAtMjcwMyw0ICsyNzA0LDEyIEBAIHN5bWxpbmtfaW5mbzo6Y2hl Y2sgKGNoYXIgKnBhdGgsIGNvbnN0IHMKICAgICAgIGlmICghc3ltX2NoZWNrKQogCWdvdG8gZmls ZV9ub3Rfc3ltbGluazsKKworICAgICAgaWYgKHN5bV9jaGVjayA+IDAgJiYKKyAgICAgICAgICAo cmVzID0gTlRSZWFkRUEgKHN1ZmZpeC5wYXRoLCBTWU1MSU5LX0VBX05BTUUsIGNvbnRlbnRzLCBz aXplb2YgKGNvbnRlbnRzKSkgLSAxKSA+IDApCisJeworCSAgcGZsYWdzID0gUEFUSF9TWU1MSU5L OworCSAgZGVidWdfcHJpbnRmICgiZ290IHN5bWxpbmsgZnJvbSBlYTogJXMiLCBjb250ZW50cyk7 CisJICBnb3RvIG91dDsKKwl9CiAKICAgICAgIC8qIE9wZW4gdGhlIGZpbGUuICAqLwpJbmRleDog cGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL3Bh dGguaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNgpkaWZmIC11IC1wIC0yIC1yMS4yNiBwYXRo LmgKLS0tIHBhdGguaAkyMDAxLzA0LzE3IDIzOjEyOjExCTEuMjYKKysrIHBhdGguaAkyMDAxLzA1 LzEwIDEyOjU0OjEzCkBAIC0xMjksNCArMTI5LDYgQEAgY2xhc3MgcGF0aF9jb252CiAjZGVmaW5l IFNZTUxJTktfQ09PS0lFICIhPHN5bWxpbms+IgogCisjZGVmaW5lIFNZTUxJTktfRUFfTkFNRSAi LkNZR1NZTUxJTksiCisKIC8qIFNvY2tldCBtYXJrZXIgKi8KICNkZWZpbmUgU09DS0VUX0NPT0tJ RSAgIiE8c29ja2V0ID4iCkluZGV4OiBzZWN1cml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j dnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL3NlY3VyaXR5LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuNwpkaWZmIC11IC1wIC0yIC1yMS43IHNlY3VyaXR5LmgKLS0tIHNlY3VyaXR5LmgJMjAwMS8w NC8zMCAyMToxOTo0MgkxLjcKKysrIHNlY3VyaXR5LmgJMjAwMS8wNS8xMCAxMjo1NDoxMwpAQCAt MTAzLDMgKzEwMywzIEBAIGV4dGVybiBTRUNVUklUWV9BVFRSSUJVVEVTICpfX3N0ZGNhbGwgc2UK IAogaW50IF9fc3RkY2FsbCBOVFJlYWRFQSAoY29uc3QgY2hhciAqZmlsZSwgY29uc3QgY2hhciAq YXR0cm5hbWUsIGNoYXIgKmJ1ZiwgaW50IGxlbik7Ci1CT09MIF9fc3RkY2FsbCBOVFdyaXRlRUEg KGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IGNoYXIgKmF0dHJuYW1lLCBjaGFyICpidWYsIGludCBs ZW4pOworQk9PTCBfX3N0ZGNhbGwgTlRXcml0ZUVBIChjb25zdCBjaGFyICpmaWxlLCBjb25zdCBj aGFyICphdHRybmFtZSwgY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuKTsK ------------A51F323E29C4263B--