{"push_id":3450678373,"size":21,"distinct_size":21,"ref":"refs/heads/features/linuxprototype","head":"1a9d03a1575dfbfc0a4dc1286104f1671960795f","before":"34677e067522a2015998179bb571673b56375c90","commits":[{"sha":"8e5575060ce9479cbe47ca6e7884fb218bce7152","author":{"name":"Ashe Connor","email":"d89d1e1607ca3a85d5a7677b6e385665382717f1@kivikakk.ee"},"message":"Linux PrjFS: call libprojfs directly\n\nWe do the work of the VFS API extension to libprojfs directly in C#\ninstead, and refactor to simplify.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/8e5575060ce9479cbe47ca6e7884fb218bce7152"},{"sha":"ac408924873f2cbd557a7f344fb2ae6ee2519409","author":{"name":"Ashe Connor","email":"d89d1e1607ca3a85d5a7677b6e385665382717f1@kivikakk.ee"},"message":"Linux PrjFS: generate constants from C header","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/ac408924873f2cbd557a7f344fb2ae6ee2519409"},{"sha":"7d316a70de21f346e8698f4306e11d6b8631eb98","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"pass permissions mode when hydrating directories\n\nThis change requires a concomitant change the libprojfs API\nto accept a mode_t parameter in projfs_create_proj_dir().","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/7d316a70de21f346e8698f4306e11d6b8631eb98"},{"sha":"4390b671c6a71c5733208be05ec6a5c8cd2fafc8","author":{"name":"Ashe Connor","email":"12cd3788aaebfcff4b844610a745c8f3a5dc9e99@github.com"},"message":"Merge pull request #5 from github/vfs-api-dirmode\n\npass permissions mode when hydrating directories","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/4390b671c6a71c5733208be05ec6a5c8cd2fafc8"},{"sha":"7c2c12c012c51d0ad878745352678c87b6b710f2","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"implement local file IO write loop for hydration\n\nRather than calling down into the libprojfs API to write bytes to\na file during hydration, we can utilize the Mono.Unix.Native.Syscall\nwrite(2) wrapper and perform this loop the C# layer in\nour ProjFS.Linux WriteFileContents() method.\n\nThere should be no impact on performance as we are, in either case,\ncalling via P/Invoke into a dynamic library (our libprojfs.so or\nMono's .dll) to actually perform the write(2) call.\n\nHowever, this approach avoids the need to implement a generic write\nloop function in libprojfs and thus helps simplify that library's API.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/7c2c12c012c51d0ad878745352678c87b6b710f2"},{"sha":"1b66681228a06860b369a279ca4643a3d362fd79","author":{"name":"Chris Darroch","email":"8fd0a05ca98c9ebcfa5f6f997764dc7368d13beb@apache.org"},"message":"Merge pull request #6 from github/vfs-api-direct-fileio\n\nimplement local file IO write loop for hydration","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/1b66681228a06860b369a279ca4643a3d362fd79"},{"sha":"7afd1f0b6b57c9a32dd0f51eb4922fd32586cd46","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"align arg list format in Mac/Linux interop classes\n\nA purely non-functional whitespace change to align the argument\nlist formatting in the ProjFS Linux and Mac interoperability classes\nwhich import and wrap their respective lower-level dynamic libraries.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/7afd1f0b6b57c9a32dd0f51eb4922fd32586cd46"},{"sha":"14dc12c2cf27e9c164f33e6777a93d12da6f8042","author":{"name":"Ashe Connor","email":"12cd3788aaebfcff4b844610a745c8f3a5dc9e99@github.com"},"message":"Merge pull request #7 from github/vfs-api-arglist-ws\n\nalign arg list format in Mac/Linux interop classes","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/14dc12c2cf27e9c164f33e6777a93d12da6f8042"},{"sha":"0c84b9323e3d06f51cbfc469d2494abec514d226","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"use 32-bit uint for file mode_t arguments\n\nOn 64-bit x86 Linux systems, mode_t is defined as a 32-bit unsigned int,\nwhile on BSD/Darwin it's a 16-bit unsigned int; see:\n\nhttps://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/posix_types.h#L23\nhttps://github.com/freebsd/freebsd/blob/master/sys/sys/_types.h#L51\n\nTherefore we want to use a C# uint when passing mode_t values to\nthe libprojfs API.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/0c84b9323e3d06f51cbfc469d2494abec514d226"},{"sha":"9abb82c9d28e55872d5455fa2f821ac2c4473419","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"pass file ID metadata to/from interop layer\n\nPass our content and provider ID metadata to the Linux\ninteroperability class, which will (in subsequent commits and\nwith a dependency on changes to the libprojfs API) then write and read\nthese IDs as metadata fields stored as file extended attributes.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/9abb82c9d28e55872d5455fa2f821ac2c4473419"},{"sha":"96aefaaefdb7180d4fd7aea19d2a12080243e9eb","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"write content and provider IDs on file projection\n\nWe pass the content and provider IDs to the libprojfs API function\nprojfs_create_proj_file(), which will store them as extended\nattributes of the newly created file (pending revisions to the\nlibprojfs API).\n\nFor directory creation, however, we do not store any metadata\nattributes, as only files may need to be subsequently hydrated with\ndata, in a second post-projection step which depends on the content ID\nwritten during initial the projection step.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/96aefaaefdb7180d4fd7aea19d2a12080243e9eb"},{"sha":"cfe72b5f79c1d03ed3b8a88e78652dbaea3c379e","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"read content and provider IDs on file hydration\n\nWe retrieve the content and provider IDs using the new library\nfunction projfs_get_attrs(), which (pending revisions to the\nlibprojfs API) searches for and reads any matching extended attributes\nof the file being hydrated.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/cfe72b5f79c1d03ed3b8a88e78652dbaea3c379e"},{"sha":"6021d67aa564e559a0b360be44dec7bec54b17ba","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"convert IntPtr to byte* in Linux interop class","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/6021d67aa564e559a0b360be44dec7bec54b17ba"},{"sha":"9f3882141e1d9f1198132d8c9f9991cde9066c72","author":{"name":"Chris Darroch","email":"8fd0a05ca98c9ebcfa5f6f997764dc7368d13beb@apache.org"},"message":"Merge pull request #8 from github/vfs-api-id-attrs\n\nUse projection attributes for content and provider IDs","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/9f3882141e1d9f1198132d8c9f9991cde9066c72"},{"sha":"8edb1512863158d72abb87cdc4b316103ef99753","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"revert accidental whitespace changes in ProjFS.Mac\n\nAlso clean up some whitespace in ProjFS.Linux as well.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/8edb1512863158d72abb87cdc4b316103ef99753"},{"sha":"657c901d1deb45e0637f6b967ebb6ef1cea6130c","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"remove dependency on Mono from Linux interop class","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/657c901d1deb45e0637f6b967ebb6ef1cea6130c"},{"sha":"5a23f3b3f1ac890a2e2f979afe1372488da4532a","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"remove Mono from Linux VirtualizationInstance\n\nAlso introduce an Interop.Errno class for use with errno-to-Result\nconversions in future work.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/5a23f3b3f1ac890a2e2f979afe1372488da4532a"},{"sha":"6166196a30b96bc6e6dc54616d625713bf3ed0f0","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"remove Mono dependency in Linux errno conversions\n\nWe can also migrate the conversion of errno and Result values\ninto the interoperability namespace, which lets Result.cs align\nwith the macOS version again.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/6166196a30b96bc6e6dc54616d625713bf3ed0f0"},{"sha":"392a0a3f0309f9022a4071e8e16f5d6c173ca1ca","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"generate Linux interop constants at build time\n\nWe can utilize the C compiler's -dM and -E flags to acquire\nthe necessary macro constants required by the Linux\ninteroperability code.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/392a0a3f0309f9022a4071e8e16f5d6c173ca1ca"},{"sha":"99ab59ec7a5e9e96ca330c752fc8874d2335dd08","author":{"name":"Chris Darroch","email":"c5d1dc4ba8f93e14d32eaad152ba9d361164154d@github.com"},"message":"convert file mode to uint in Linux MirrorProvider\n\nFixup our use of uint for file permission modes on Linux\nin MirrorProvider to match the change in commit\n0c84b9323e3d06f51cbfc469d2494abec514d226.","distinct":true,"url":"https://api.github.com/repos/Microsoft/VFSForGit/commits/99ab59ec7a5e9e96ca330c752fc8874d2335dd08"}]}
{"actor":{"display_login":"jrbriggs"}}