{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":7258685,"defaultBranch":"master","name":"osv","ownerLogin":"cloudius-systems","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-12-20T14:08:55.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3273374?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1671022342.665167","currentOid":""},"activityList":{"items":[{"before":"50e92550308d630dfdd17bcf685b9848b70986c0","after":"9c1528137c1fdee1184c08786702ed511b9173ae","ref":"refs/heads/master","pushedAt":"2024-09-08T15:49:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"scripts: add deploy_to_gce.sh to allow deploying to Google Cloud Engine\n\nThis adds new script deploy_to_gce.sh to automate deploying\nan OSv image to Google Cloud Engine.\n\n./scripts/deploy_to_gce.sh create \n\nThe script does the following:\n- creates an image tarball of the last built OSv image\n- copies the image tarball to the Google storage folder specified by \n- creates a GCE instance image of the tarball in GCS\n- creates and starts a new GCE instance of the image created above\n- creates firewall rules to allow networking traffic on ports 8000 and 9000\n\nAlso, the script takes a third optional parameter: the instance type. The default one is f1-micro\n\nFor more information on how to deploy to GCE, please look\nat https://github.com/cloudius-systems/osv/wiki/Running-OSv-on-Google-Compute-Engine.\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"scripts: add deploy_to_gce.sh to allow deploying to Google Cloud Engine"}},{"before":"a7a65be3882251d6a47a0d067f44ab5d20541f04","after":"50e92550308d630dfdd17bcf685b9848b70986c0","ref":"refs/heads/master","pushedAt":"2024-09-04T02:04:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"Describe application launch modes","shortMessageHtmlLink":"Describe application launch modes"}},{"before":"fcbe8ad378160c8519d567e5c70f346869463806","after":"a7a65be3882251d6a47a0d067f44ab5d20541f04","ref":"refs/heads/master","pushedAt":"2024-09-02T03:30:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"Update README.md to add ext filesystem information","shortMessageHtmlLink":"Update README.md to add ext filesystem information"}},{"before":"03d3fb23ee2275ab04bcfc9d6ca059d18926c933","after":"fcbe8ad378160c8519d567e5c70f346869463806","ref":"refs/heads/master","pushedAt":"2024-08-21T15:47:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"net_trace: do not use constexpr for std::distance declaration if C++<17\n\nAs the https://en.cppreference.com/w/cpp/iterator/distance explains\nthe C++98 implementation of std::distance starting with C++17 compiler\nrequires constexpr.\n\nThis patch adds relevant #ifdef to net_trace.cc to make it compile\nwith both older (<17) and 17 version of C++ compiler.\n\nFixes #1331\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"net_trace: do not use constexpr for std::distance declaration if C++<17"}},{"before":"ba39c4c08eda4cde5bf29bba98b45d918b046f36","after":"03d3fb23ee2275ab04bcfc9d6ca059d18926c933","ref":"refs/heads/master","pushedAt":"2024-08-20T21:37:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"kernel: upgrade to C++ 17\n\nThis patch makes necessary changes to the relevant source files to make it\npossible to build kernel at C++ 17 level. This will allows us to take\nadvantage of new features available in C++ 17 standard.\n\nFollowing changes have been:\n\n- remove obsolete 'register' keyword (mostly under bsd/ part of the\n tree)\n\n- add 'const' specifier to the comparison operator definitions where\n necessary\n\n- replace deprecated 'std::iterator' usage with explicit definition\n of traits (for example iterator_category, value_type and 3 others)\n (for some background info read this -\nhttps://www.fluentcpp.com/2018/05/08/std-iterator-deprecated/)\n\n- add constexpr to the 'friend' declaration of std::distance\n\n- build using C++17 using following command:\n\n./scripts/build image=tests conf_cxx_level=gnu++17\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"kernel: upgrade to C++ 17"}},{"before":"f8fa5f2785a98a6725e96166f22fe5cc1daf3875","after":"ba39c4c08eda4cde5bf29bba98b45d918b046f36","ref":"refs/heads/master","pushedAt":"2024-08-20T17:50:50.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"aws: enhance deploy_to_aws.sh to support both old Xen and new KVM EC2\n\nThis patch refines the script deploy_to_aws.sh to make it easier\nto deploy an OSv image to AWS EC2 instance.\n\nFor example instead of manually modifying the parameters file,\none can pass the VPC id, subnet id and name of the stack/instance\nand optionally instance type (t2.nano, t3.micro, etc) when calling the\nscript like so:\n\n./scripts/build fs=rofs image=golang-pie-httpserver,httpserver-monitoring-api fs_size_mb=128\n\n./scripts/deploy_to_aws.sh vpc-xyz subnet-abc OSv-57-golang-http-api-rofs-kvm t3.nano #New KVM/Nitro instance\n\n./scripts/deploy_to_aws.sh vpc-xyz subnet-abc OSv-57-golang-http-api-rofs-xen t2.nano #Old Xen instance\n\nThe script uploads latest built image as a snapshot, registers it as new\nAMI and creates single EC2 instance using simple cloud formation stack.\n\nFinally, it waits for stack completion and prints public DNS name of the created\ninstance.\n\nFor small images like in the examples whole process takes less than 2-5\nminutes (depends on connectivity speed to AWS).\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"aws: enhance deploy_to_aws.sh to support both old Xen and new KVM EC2"}},{"before":"879994fa9c81e3b75b464ddf4623c5fca63e2c85","after":"f8fa5f2785a98a6725e96166f22fe5cc1daf3875","ref":"refs/heads/master","pushedAt":"2024-08-15T11:32:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"loader.py: fix 'osv syms' load bootfs.manifest\n\nIt has been a while since we extracted the ZFS code from kernel\nto build it as a shared library libsolaris.so that gets placed on\nbootfs filesystem and loaded from there. For details see\nd7a627484b34aa8254d8fe444972aa18fe007ca7.\n\nThe command 'osv syms' used when debugging and implemented in loader.py\nrelies on the list of files that go into the image and is specified in\nbuild/last/usr.manifest. Unfortunately, libsolaris.so is not part of\nthis manifest file but instead is part of bootfs.manifest. This causes\nthe 'osv syms' command to break as illustrated by #1324.\n\nThis patch fixes this by changing the Manifest class constructor\nto load information about files from both bootfs.manifest and\nusr.manifest.\n\nThis patch also fixes warnings about unescaped backslashes in the\nregex expressions.\n\nFixes #1324\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"loader.py: fix 'osv syms' load bootfs.manifest"}},{"before":"a9a1fd86fd201c63ab16a58f7fcf1074c6ff2d04","after":"879994fa9c81e3b75b464ddf4623c5fca63e2c85","ref":"refs/heads/master","pushedAt":"2024-08-14T16:21:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"xen: stop using loop device in run.py\n\nThis patch eliminates use of losetup in run.py when running OSv\non Xen. Instead of creating a loop device pointing to qcow2 or\nraw image, run.py adds an entry to the xl config file pointing\ndirectly to the OSv disk image like so:\n\ndisk=['/home/wkozaczuk/projects/osv/build/last/usr.img,qcow2,hda,rw']\n\nor:\n\ndisk=['/home/wkozaczuk/projects/osv/build/last/usr.raw,raw,hda,rw']\n\nIn addition, we also enhance run.py to support 2nd disk when running\nOSv on Xen. Finally, when executing run.py with '--dry-run', one can\nsee content of the xl config file which can be useful for\ntroubleshouting or manually running OSv using the xl utility.\n\nExamples to run OSv on Xen:\n\n./scripts/run.py -p xen #uses default qcow2 image build/last/usr.img\n\n./scripts/run.py -nv -c 1 -p xen --script vif-bridge -b virbr0\n\n./scripts/run.py -p xen --second-disk-image ./disk.raw\n\nFixes #285\nFixes #344\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"xen: stop using loop device in run.py"}},{"before":"d44822806cf2931c26e35b3a91c583b2103f78f7","after":"a9a1fd86fd201c63ab16a58f7fcf1074c6ff2d04","ref":"refs/heads/master","pushedAt":"2024-07-31T19:22:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"xen: allocate contiguous memory for ring buffers\n\nDevice drivers often use ring buffers to share data between\nguest and host and therefore require allocation of contiguous\narea of memory. This is the case for virtio devices as well as Xen\nfront-end para-virtual devices.\n\nThe relevant code where xen ring buffers are allocated comes\nfrom FreeBSD and uses malloc with the arena parameter which\nunfortunately is ignored in OSv. To fix this we use explicit\nmemory::alloc_phys_contiguous_aligned() to allocate contiguous\narea of memory for both netfront and blkfront devices.\n\nWhat is interesting, this bug would only show up in cases when\nnumber of ring buffer pages was greater than 1 (for details\nsee discussion here - https://github.com/cloudius-systems/osv/issues/345#issuecomment-2237745151).\nFor example this would not happen on EC2 Xen instances but\nit would on XCP and Xen server with Fedora on DOM0.\n\nAlso note that netfront rx and tx buffer use single page\nring buffer, but we also change the code to be consistent\nwith blkfront.\n\nFixes #345\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"xen: allocate contiguous memory for ring buffers"}},{"before":"9d44487acd04bcb7dc0606daba9f7c1cb24a7564","after":"d44822806cf2931c26e35b3a91c583b2103f78f7","ref":"refs/heads/master","pushedAt":"2024-07-31T19:21:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"patch to support EPYC 9654P cpu","shortMessageHtmlLink":"patch to support EPYC 9654P cpu"}},{"before":"3c35189ec7b02ff3d8111caab26603f0feb84ff5","after":"9d44487acd04bcb7dc0606daba9f7c1cb24a7564","ref":"refs/heads/master","pushedAt":"2024-07-31T19:19:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"rofs: use contiguous buffer when reading i-node table\n\nThe filesystem read and write operations call the strategy()\nfunction of block device drivers. The buffer argument of these\nfunctions needs to point to contiguous area of physical memory\nbecause eventually the virtual address pointer will be converted\nto physical one before being passed to the host layer.\n\nUnfortunately, the logic in the ROFS mount that reads master block\nand the i-node table uses regular malloc to allocate buffers to read to.\nIf the i-node table occupies less than 1 page (4K) on disk everything works\nfine. But if it occupies more than 1 page of memory and underlying\nphysical memory is fragmented one can experience errors like the one\nin the description of the issue #1033.\n\nThis patch fixes this issue, by changing two malloc() calls with\nalloc_phys_contiguous_aligned(). In addition, we improve the code\nby using std::unique_ptr() to let compiler emit code to automatically\ncall free_phys_contiguous_aligned() in all cases when the rofs_mount()\nreturns.\n\nFixes #1033\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"rofs: use contiguous buffer when reading i-node table"}},{"before":"7ceff0f50876df7a2d5e4391f0ed6f8126f8fdb8","after":"3c35189ec7b02ff3d8111caab26603f0feb84ff5","ref":"refs/heads/master","pushedAt":"2024-07-10T21:29:29.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"README container entrypoint fix","shortMessageHtmlLink":"README container entrypoint fix"}},{"before":"501acdd72456c7c0c26ade2f581bcdac3399ff4d","after":"7ceff0f50876df7a2d5e4391f0ed6f8126f8fdb8","ref":"refs/heads/master","pushedAt":"2024-07-09T19:07:48.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"libext: make it thread-safe\n\nThis patch enhances libext module to make the ext2/3/4 filesystem\ndriver thread-safe. It mostly relies on the changes made to the OSv\nfork of lwext4 to add mutex-based protection where needed -\nhttps://github.com/osvunikernel/lwext4/commit/44c33291c78d10012294ec197af3aebb27c6788f.\n\nMore specifically, this patch implements 3 pairs of lock()/unlock()\ncallback functions:\n- inode_alloc_lock() and inode_alloc_unlock() to guard\n allocation of i-node numbers\n\n- block_alloc_lock() and block_alloc_unlock() to guard\n allocation of file blocks\n\n- bcache_alloc_lock() and bcache_alloc_unlock() to guard\n access to global metadata block cache\n\nThe changes made to lwext4 that utilize these lock/unlock\nfunction along with locking at vnode level in VFS layer\nshould make libext thread-safe.\n\nVarious tests involving fio have been conducted to verify\nlibext is thread-safe:\n\n./modules/libext/test.sh '/fio --name=fiotest --directory=/data/read --size 1M --numjobs=4 --rw=read'\n./modules/libext/test.sh '/fio --name=fiotest --directory=/data/randread --size 1M --numjobs=4 --rw=randread'\n./modules/libext/test.sh '/fio --name=fiotest --directory=/data/write --size 1M --numjobs=4 --rw=write'\n./modules/libext/test.sh '/fio --name=fiotest --directory=/data/randwrite --size 1M --numjobs=4 --rw=randwrite'\n\nIn addition, this patch fixes couple of bugs in ext_internal_write() uncovered\nwhen running the fio tests.\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"libext: make it thread-safe"}},{"before":"1836c75a332dcbda2772cf9b30d275d8fedb0e6c","after":"501acdd72456c7c0c26ade2f581bcdac3399ff4d","ref":"refs/heads/master","pushedAt":"2024-07-03T09:18:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"Fix warning in route.cc\n\nIn route.cc we have code which writes some socket addresses to a routing\nsocket. The write is supposed to be 8-byte aligned length, and the code\nalso *reads* a multiple of 8 bytes, even though the actual structure may\nbe shorter.\n\nGcc 8 already discovered this inconsistency (reading 56 bytes from a\nstructure known to be 54 bytes long) and complained, and we fixed its\ncomplaint in commit 5fee2918d74b0bf5707bb48f07a0a2808e6ffe69 by fixing\nthe CP_ADDR macro. But it turns out that there was another, unfixed, copy\nof that macro - and gcc 14 began to complain about that.\n\nSo in this patch I remove the extra copy of the CP_ADDR macro, and use\nthe already-fixed one.\n\nOther than quieting the compiler, this change shouldn't fix any real bug.\n\nAfter this patch, OSv builds and runs (as usual, I tested just the \"rogue\"\nimage) on Fedora 40, so:\nFixes #1320\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"Fix warning in route.cc"}},{"before":"8340a406e4f969b83881a9181ca259258bdb197c","after":"1836c75a332dcbda2772cf9b30d275d8fedb0e6c","ref":"refs/heads/master","pushedAt":"2024-06-28T21:09:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"blk_ioctl: address the review suggestion\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"blk_ioctl: address the review suggestion"}},{"before":"707bf67228885789276246f87724160f59389ec3","after":"8340a406e4f969b83881a9181ca259258bdb197c","ref":"refs/heads/master","pushedAt":"2024-06-28T14:53:36.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"nvme: free aligned_new() with free()\n\nThis is the same problem of over-zealos gcc warnings that we already fixed\nin commit 3a7c0db761cc65e908b1d3e8ef41d433dad517a8, but this patch introduces\na more general fix that can be used every time we have this problem.\n\nMemory allocated with aligned_new() should be freed with free(), not\nwith operator delete - although in our actual implemention those are really\nthe same thing. gcc 14.1.1 started to detect cases where we use std::unique_ptr\nwith a pointer allocated with aligned_new(), but unique_ptr's default deleter\nuses delete.\n\nSo in this patch we introduce in aligned_new.hh a new deleter class,\naligned_new_deleter, which can be used with unique_ptr to ensure the\npointer is eventually deleted with free instead of operator delete, and\npacifies the gcc error checker.\n\nIn the patch we use this new facility in a couple of places in\ndrivers/nvme.cc which had this problem.\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"nvme: free aligned_new() with free()"}},{"before":"73fa018efc9bf9798af4e1420b581c92909a4f56","after":"707bf67228885789276246f87724160f59389ec3","ref":"refs/heads/master","pushedAt":"2024-06-22T23:20:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"Implement NVMe driver\n\nThis patch implements the NVMe block device driver. It is greatly based\non the pull request submitted by Jan Braunwarth (see\nhttps://github.com/cloudius-systems/osv/pull/1284) so most credit goes\nto Jan.\n\nAs his PR explains, OSv can be started with emulated NVMe disk on QEMU\nlike so:\n\n./scripts/run.py --nvme\n\nCompared to the Jan's PR, this patch is different in following ways:\n- removes all non-NVMe changes (various bug fixes or ioctl enhancements\n are part of separate PRs)\n- replaces most of the heap allocations by using stack which should\n reduce some contention\n- tweaks PRP-handling code to use lock-less ring buffer which should\n further reduce contention when allocating memory\n- fixes a bug in I/O queue CQ handling to correctly determine if SQ is\n not full\n- assumes single namespace - 1 (most logic to deal with more has been\n preserved)\n- reduces I/O queue size to 64 instead of 256\n- makes code a little more DRY\n\nPlease note that, as Jan points out, the block cache logic of splitting\nreads and writes into 512-byte requests causes very poor performance when\nstress testing at devfs level. However, this behavior is not NVMe\nspecific and does not affect most applications that go through a\nVFS and filesystem driver (ZFS, EXT, ROFS) which use the strategy()\nmethod which does not use block cache.\n\nBased on my tests, the NVMe read performance (IOPs and\nbytes/s) is 60-70% of the virtio-blk on QEMU. I am not sure how much\nthat is because of this implementation of the NVMe driver or it is\nbecause virtio-blk is by design much faster than anything emulated\nincluding NVMe.\n\nCloses #1203\n\nSigned-off-by: Jan Braunwarth \nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"Implement NVMe driver"}},{"before":"482901f6cde14b500e2858e9a4fc0ad3508c0698","after":"73fa018efc9bf9798af4e1420b581c92909a4f56","ref":"refs/heads/master","pushedAt":"2024-06-22T16:02:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"add basic ioctl support for block devices\n\nThis patch add very basic support of ioctl for block\ndevices as described by #1315.\n\nFixes #1315\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"add basic ioctl support for block devices"}},{"before":"b507540ee0ed6fe6c3427eef2ae97ea017f9bda0","after":"482901f6cde14b500e2858e9a4fc0ad3508c0698","ref":"refs/heads/master","pushedAt":"2024-06-18T15:35:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"fix _IOW, _IOR and _IORW macro\n\nThis fixes the overflow issue as described by the issue #1313.\n\nFixes #1313\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"fix _IOW, _IOR and _IORW macro"}},{"before":"0288cbe3da5ed119550e6bdba7aba30c1d63ce8d","after":"b507540ee0ed6fe6c3427eef2ae97ea017f9bda0","ref":"refs/heads/master","pushedAt":"2024-06-18T15:34:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"block cache: use correct data type for block number\n\nThis issue was discovered by Jan Braunwarth when implementing\nthe NVMe driver and full credit goes to him.\n\nThe b_blkno field of the buf struct uses 4-bytes int type\nand may cause overflow when block cache is used by bdev_read()\nand bdev_write() in devfs. To correct we change the type to\noff_t.\n\nSigned-off-by: Jan Braunwarth \nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"block cache: use correct data type for block number"}},{"before":"1c30ad014b03a2a313590d954cf65ea004fe311f","after":"0288cbe3da5ed119550e6bdba7aba30c1d63ce8d","ref":"refs/heads/master","pushedAt":"2024-06-17T02:35:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"apps: update to the latest\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"apps: update to the latest"}},{"before":"18865c6a3d1bd1090bf70ba89e6d95f47e34018f","after":"1c30ad014b03a2a313590d954cf65ea004fe311f","ref":"refs/heads/master","pushedAt":"2024-03-19T03:35:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"ext4: add initial implementation\n\nThis commit adds an initial implementation of the ext4\nfilesystem driver based on the lwext4 project\n(https://github.com/gkostka/lwext4). It provides a light weight\nread-write alternative to ZFS filesystem.\n\nPlease note this implementation is NOT thread-safe\nand will need to be enhanced to be so in future. However it is\nfunctional enough to support the test cases examined by\nmodules/libext/test.sh.\n\nOne can build the OSv like so:\n\n./scripts/manifest_from_host.sh -w /usr/bin/find && ./scripts/build fs=rofs image=libext,native-example -j$(nproc)\n--append-manifest\n\nThen create an ext4 filesystem:\n\nmkdir -p ext_images\ndd if=/dev/zero of=ext_images/ext4 bs=1M count=128\nsudo mkfs.ext4 ext_images/ext4\n\nAdd some files to it if needed:\n\nsudo losetup -o 0 -f --show ext_images/ext4\nsudo mount /dev/loop0 ext_images/image\n\n.. update content\n\nsudo umount ext_images/image\nsudo losetup -d /dev/loop0\n\nqemu-img convert -f raw -O qcow2 ext_images/ext4 ext_images/ext4.img\n\nAnd then run it:\n\n./scripts/run.py --execute='--mount-fs=ext,/dev/vblk1,/data /hello' --second-disk-image ./ext_images/ext4.img\n\nor using the test.sh\n\n./modules/libext/test.sh '/find /data/ -ls'\n\nFixes #1179\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"ext4: add initial implementation"}},{"before":"102c3deff98007f96ea09b014ea997a99643b25e","after":"18865c6a3d1bd1090bf70ba89e6d95f47e34018f","ref":"refs/heads/master","pushedAt":"2024-03-18T17:28:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"vfs: implement linkat() except for AT_SYMLINK_FOLLOW\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"vfs: implement linkat() except for AT_SYMLINK_FOLLOW"}},{"before":"0f19155cdec4aadb053d9f783224d4bb0b7a9040","after":"102c3deff98007f96ea09b014ea997a99643b25e","ref":"refs/heads/master","pushedAt":"2024-03-18T16:36:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"vfs: implement subset of copy_file_range()\n\nThis patch implements subset of copy_file_range() needed\nby the GNU cp utility to function.\n\nThe implementation delagates to sendfile() and accepts\ncalls with off_out equal to 0 only.\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"vfs: implement subset of copy_file_range()"}},{"before":"23d560727c8af14dd33858d28d26c6997e7ac875","after":"0f19155cdec4aadb053d9f783224d4bb0b7a9040","ref":"refs/heads/master","pushedAt":"2024-03-18T11:18:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"vfs: make headers export C API when included in C++\n\nThe upcoming C++ implementation of the ext4 filesystem as a module\nand shared library needs some VFS headers which cannot be\nincluded as C++ because it would pull all kind of other C++\nheaders (boost, etc) that we do not need and want in this ext4\nimplementation.\n\nThe headers included by C++ compiler are preprocessed with the __cplusplus\nmacro which enables them as C++. In order to make them \"include-able\" as\nC in C++ source code, we add extra macro USE_C_INTERFACE which when\ndefined in C++ code would force the relevant headers to expose its C api.\n\nThis example illustrates how this can be accomplished:\n\nSigned-off-by: Waldemar Kozaczuk \n\nCloses #1309","shortMessageHtmlLink":"vfs: make headers export C API when included in C++"}},{"before":"2d14fb7df369e8acb59c443bf50190ae76244f5a","after":"23d560727c8af14dd33858d28d26c6997e7ac875","ref":"refs/heads/master","pushedAt":"2024-03-18T11:14:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"vfs futimens: prepend path with a mount point part\n\nWhen mounting an optional filesystem using the option '--mount-fs',\nit is important in VFS layer to prepend the final path with a mount\npoint path. This commit fixes it in futimens() implementation.\n\nSigned-off-by: Waldemar Kozaczuk \n\nCloses #1306","shortMessageHtmlLink":"vfs futimens: prepend path with a mount point part"}},{"before":"a61a1dc991875fd887d502c2abd9c4896fcda933","after":"2d14fb7df369e8acb59c443bf50190ae76244f5a","ref":"refs/heads/master","pushedAt":"2024-03-17T23:17:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"memory: expose C functions to allocate and free contiguous area\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"memory: expose C functions to allocate and free contiguous area"}},{"before":"5c264d5594750fefd30ff32da0e46a625be8ab08","after":"a61a1dc991875fd887d502c2abd9c4896fcda933","ref":"refs/heads/master","pushedAt":"2024-03-17T22:03:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"vfs: implement subset of renameat2\n\nThis commit adds minimal implementation of renameat2() that\ndelegates to renameat() if flags == 0. Otherwise it returns error\nand sets errno to EINVAL.\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"vfs: implement subset of renameat2"}},{"before":"622d872bba2eee23f5bdc27240d133ce3d58113a","after":"5c264d5594750fefd30ff32da0e46a625be8ab08","ref":"refs/heads/master","pushedAt":"2024-03-17T17:40:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wkozaczuk","name":"WALDEMAR KOZACZUK","path":"/wkozaczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5296673?s=80&v=4"},"commit":{"message":"vfs: unmount optionally mounted filesystems on exit\n\nThe commit b1452f9a3 enhanced OSv to mount extra filesystem\nusing the --mount-fs option. One use case is NFS, where the NFS\nfilesystem layer may be implemented as shared library (see module nfs)\nand can be initialized and mounted by passing appropriate boot option.\nSimilarly, we can mount ZFS disk like so:\n\n./scripts/run.py --execute='--rootfs=rofs --mount-fs=zfs,/dev/vblk1.1,/data /hello' --second-disk-image \n\nFor more details look at\nhttps://github.com/cloudius-systems/osv/wiki/Filesystems.\n\nSo, the original commit missed to add the logic to unmount such\nfilesystem on exit. This commit fills this blank space.\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"vfs: unmount optionally mounted filesystems on exit"}},{"before":"cf20f21b6c0c04104e433cdbae846caa7d87fd72","after":"622d872bba2eee23f5bdc27240d133ce3d58113a","ref":"refs/heads/master","pushedAt":"2024-03-17T12:40:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"libc: implement setfsuid() and setfsgid()\n\nTrivial implementation of setfsuid() and setfsgid() - which like the\nrest of the set*id() functions we already implemented, just does nothing\non OSv's single-user-is-root (only id=0 is support) implementation.\n\nRecently (e.g., Fedora 39) libtinfo started using these functions.\n\nAfter this patch, the default Lua-shell build (scripts/build;\nscripts/run.py) now works well on Fedora 39.\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"libc: implement setfsuid() and setfsgid()"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOFQxNTo0OToxNi4wMDAwMDBazwAAAASwK4CW","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOFQxNTo0OToxNi4wMDAwMDBazwAAAASwK4CW","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0xN1QxMjo0MDoyOS4wMDAwMDBazwAAAAQXy8JF"}},"title":"Activity ยท cloudius-systems/osv"}