{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":437011,"defaultBranch":"master","name":"zfs","ownerLogin":"openzfs","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2009-12-14T20:20:34.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/4510897?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714690604.0","currentOid":""},"activityList":{"items":[{"before":"8865dfbcaad44a1056f35be60d3058dd3b1e9145","after":"02c5aa9b092818785ed8db4e2246a828278138e3","ref":"refs/heads/master","pushedAt":"2024-05-25T02:11:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Destroy ARC buffer in case of fill error\n\nIn case of error dmu_buf_fill_done() returns the buffer back into\r\nDB_UNCACHED state. Since during transition from DB_UNCACHED into\r\nDB_FILL state dbuf_noread() allocates an ARC buffer, we must free\r\nit here, otherwise it will be leaked.\r\n\r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Jorgen Lundman \r\nSigned-off-by: Alexander Motin \r\nSponsored by: iXsystems, Inc.\r\nCloses #15665\r\nCloses #15802\r\nCloses #16216","shortMessageHtmlLink":"Destroy ARC buffer in case of fill error"}},{"before":"d0aa9dbccfb06778ca336732ee4e627f50475ad3","after":"8865dfbcaad44a1056f35be60d3058dd3b1e9145","ref":"refs/heads/master","pushedAt":"2024-05-25T02:02:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Fix assertion in Persistent L2ARC\n\nAt the end of l2arc_evict() fix an assertion in the case that l2ad_hand\r\n+ distance == l2ad_end.\r\n\r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: George Amanakis \r\nCloses #16202\r\nCloses #16207","shortMessageHtmlLink":"Fix assertion in Persistent L2ARC"}},{"before":"34906f8bbee337ee5aa9b79c141517bff0a4e0ab","after":"d0aa9dbccfb06778ca336732ee4e627f50475ad3","ref":"refs/heads/master","pushedAt":"2024-05-25T02:00:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Use memset to zero stack allocations containing unions\n\nC99 6.7.8.17 says that when an undesignated initialiser is used, only\r\nthe first element of a union is initialised. If the first element is not\r\nthe largest within the union, how the remaining space is initialised is\r\nup to the compiler.\r\n\r\nGCC extends the initialiser to the entire union, while Clang treats the\r\nremainder as padding, and so initialises according to whatever\r\nautomatic/implicit initialisation rules are currently active.\r\n\r\nWhen Linux is compiled with CONFIG_INIT_STACK_ALL_PATTERN,\r\n-ftrivial-auto-var-init=pattern is added to the kernel CFLAGS. This flag\r\nsets the policy for automatic/implicit initialisation of variables on\r\nthe stack.\r\n\r\nTaken together, this means that when compiling under\r\nCONFIG_INIT_STACK_ALL_PATTERN on Clang, the \"zero\" initialiser will only\r\nzero the first element in a union, and the rest will be filled with a\r\npattern. This is significant for aes_ctx_t, which in\r\naes_encrypt_atomic() and aes_decrypt_atomic() is initialised to zero,\r\nbut then used as a gcm_ctx_t, which is the fifth element in the union,\r\nand thus gets pattern initialisation. Later, it's assumed to be zero,\r\nresulting in a hang.\r\n\r\nAs confusing and undiscoverable as it is, by the spec, we are at fault\r\nwhen we initialise a structure containing a union with the zero\r\ninitializer. As such, this commit replaces these uses with an explicit\r\nmemset(0).\r\n\r\nSponsored-by: Klara, Inc.\r\nSponsored-by: Wasabi Technology, Inc.\r\nReviewed-by: Tino Reichardt \r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Rob Norris \r\nCloses #16135\r\nCloses #16206","shortMessageHtmlLink":"Use memset to zero stack allocations containing unions"}},{"before":"708be0f415c83c941d3ed5153fafc5d3766e4cdd","after":"34906f8bbee337ee5aa9b79c141517bff0a4e0ab","ref":"refs/heads/master","pushedAt":"2024-05-25T01:55:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"zap: reuse zap_leaf_t on dbuf reuse after shrink\n\nIf a shrink or truncate had recently freed a portion of the ZAP, the\r\ndbuf could still be sitting on the dbuf cache waiting for eviction. If\r\nit is then allocated for a new leaf before it can be evicted, the\r\nzap_leaf_t is still attached as userdata, tripping the VERIFY.\r\n\r\nInstead, just check for the userdata, and if we find it, reuse it.\r\n\r\nSponsored-by: Klara, Inc.\r\nSponsored-by: iXsystems, Inc.\r\nReviewed-by: Alexander Motin \r\nSigned-off-by: Rob Norris \r\nCloses #16157.\r\nCloses #16204","shortMessageHtmlLink":"zap: reuse zap_leaf_t on dbuf reuse after shrink"}},{"before":"7572e8ca04adda7af207dd27d643d241351680e7","after":"708be0f415c83c941d3ed5153fafc5d3766e4cdd","ref":"refs/heads/master","pushedAt":"2024-05-25T01:54:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Linux 6.7 compat: detect if kernel defines intptr_t\n\nSince Linux 6.7 the kernel has defined intptr_t. Clang has\r\n-Wtypedef-redefinition by default, which causes the build to fail\r\nbecause we also have a typedef for intptr_t.\r\n\r\nSince its better to use the kernel's if it exists, detect it and skip\r\nour own.\r\n\r\nSponsored-by: https://despairlabs.com/sponsor/\r\nReviewed-by: Tino Reichardt \r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Rob Norris \r\nCloses #16201","shortMessageHtmlLink":"Linux 6.7 compat: detect if kernel defines intptr_t"}},{"before":"08648cf0da381fb667fa413ba95407ae4c3f8a8f","after":"7572e8ca04adda7af207dd27d643d241351680e7","ref":"refs/heads/master","pushedAt":"2024-05-25T01:45:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Avoid a gcc -Wint-to-pointer-cast warning\n\nOn 32-bit platforms long long is generally 64-bits. Sufficiently modern\r\nversions of gcc (13 in my testing) complains when casting a pointer to\r\nan integer of a different width so cast to uintptr_t first to avoid the\r\nwarning.\r\n\r\nFixes: c183d164aa Parallel pool import\r\n\r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Don Brady \r\nSigned-off-by: Brooks Davis \r\nCloses #16203","shortMessageHtmlLink":"Avoid a gcc -Wint-to-pointer-cast warning"}},{"before":"efbef9e6cc1e14cc19a24b76175f7ec86610161a","after":"08648cf0da381fb667fa413ba95407ae4c3f8a8f","ref":"refs/heads/master","pushedAt":"2024-05-25T01:45:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Allow block cloning to be interrupted by a signal.\n\nEven though block cloning is much faster than regular copying,\r\nit is not instantaneous - the file might be large and the recordsize\r\nsmall. It would be nice to be able to interrupt it with a signal\r\n(e.g., SIGINFO on FreeBSD to see the progress).\r\n\r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Pawel Jakub Dawidek \r\nCloses #16208","shortMessageHtmlLink":"Allow block cloning to be interrupted by a signal."}},{"before":"fec16b93c46d80ae60a4f20632932601030b6fc0","after":"efbef9e6cc1e14cc19a24b76175f7ec86610161a","ref":"refs/heads/master","pushedAt":"2024-05-17T00:56:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"FreeBSD: Add zfs_link_create() error handling\n\nOriginally Solaris didn't expect errors there, but they may happen\r\nif we fail to add entry into ZAP. Linux fixed it in #7421, but it\r\nwas never fully ported to FreeBSD.\r\n\r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Alexander Motin \r\nSponsored-By: iXsystems, Inc.\r\nCloses #13215\r\nCloses #16138","shortMessageHtmlLink":"FreeBSD: Add zfs_link_create() error handling"}},{"before":"a043b60f1eabcdd72f30b692565a2c982b1a1e8a","after":"fec16b93c46d80ae60a4f20632932601030b6fc0","ref":"refs/heads/master","pushedAt":"2024-05-17T00:55:44.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"config/zfs-build.m4: add Alpine Linux bash-completion path\n\nReviewed-by: Brian Behlendorf \nSigned-off-by: omni \nCloses #16164","shortMessageHtmlLink":"config/zfs-build.m4: add Alpine Linux bash-completion path"}},{"before":"e675852bc1d50404fcbe4fa0e1f57b6c318e6349","after":"a043b60f1eabcdd72f30b692565a2c982b1a1e8a","ref":"refs/heads/master","pushedAt":"2024-05-16T22:37:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Correct level handling in zstream recompress.\n\nsscanf returns number of items parsed on success and EOF on failure.\r\n\r\nReviewed-by: Adam Moss \r\nReviewed-by: Paul Dagnelie \r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Rob Norris \r\nSigned-off-by: Rich Ercolani \r\nCloses #16198","shortMessageHtmlLink":"Correct level handling in zstream recompress."}},{"before":"3c941d18183455138f7c5dcc212177bd3cea8afc","after":"e675852bc1d50404fcbe4fa0e1f57b6c318e6349","ref":"refs/heads/master","pushedAt":"2024-05-15T20:03:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"dbuf: separate refcount calls for dbuf and dbuf_user\n\nIn 92dc4ad83 I updated the dbuf_cache accounting to track the size of\r\nuserdata associated with dbufs. This adds the size of the dbuf+userdata\r\ntogether in a single call to zfs_refcount_add_many(), but sometime\r\nremoves them in separate calls to zfs_refcount_remove_many(), if dbuf\r\nand userdata are evicted separately.\r\n\r\nWhat I didn't realise is that when refcount tracking is on,\r\nzfs_refcount_add_many() and zfs_refcount_remove_many() are expected to\r\nbe paired, with their second & third args (count & holder) the same on\r\nboth sides. Splitting the remove part into two calls means the counts\r\ndon't match up, tripping a panic.\r\n\r\nThis commit fixes that, by always adding and removing the dbuf and\r\nuserdata counts separately.\r\n\r\nSponsored-by: Klara, Inc.\r\nSponsored-by: Wasabi Technology, Inc.\r\nReported-by: Mark Johnston \r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Alexander Motin \r\nSigned-off-by: Rob Norris \r\nCloses #16191","shortMessageHtmlLink":"dbuf: separate refcount calls for dbuf and dbuf_user"}},{"before":"0a543db37111c28085043da89e452ea6b131c019","after":"3c941d18183455138f7c5dcc212177bd3cea8afc","ref":"refs/heads/master","pushedAt":"2024-05-14T18:58:19.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"zdb/ztest: send dbgmsg output to stderr\n\nAnd, make the output fd an arg to zfs_dbgmsg_print(). This is a change\nin behaviour, but keeps it consistent with where crash traces go, and\nit's easy to argue this is what we want anyway; this is information\nabout the task, not the actual output of the task.\n\nSponsored-by: Klara, Inc.\nSponsored-by: Wasabi Technology, Inc.\nReviewed-by: Brian Behlendorf \nSigned-off-by: Rob Norris \nCloses #16181","shortMessageHtmlLink":"zdb/ztest: send dbgmsg output to stderr"}},{"before":"b64afa41d56e98b5817aaf14c7deb0fa7e2142fb","after":"0a543db37111c28085043da89e452ea6b131c019","ref":"refs/heads/master","pushedAt":"2024-05-14T16:43:20.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"spa_taskq_dispatch_ent: simplify arguments\n\nThis renames it to spa_taskq_dispatch(), and reduces and simplifies its\narguments based on these observations from its two call sites:\n\n- arg is always the zio, so it can be typed that way, and we don't need\n to provide it twice;\n- ent is always &zio->io_tqent, and zio is always provided, so we can\n use it directly;\n- the only flag used is TQ_FRONT, which can just be a bool;\n- zio != NULL was part of the \"use allocator\" test, but it never would\n have got that far, because that arg was only set to NULL in the\n reexecute path, which is forced to type CLAIM, so the condition would\n fail at t == WRITE anyway.\n\nSponsored-by: Klara, Inc.\nSponsored-by: Wasabi Technology, Inc.\nReviewed-by: Brian Behlendorf \nReviewed-by: Alexander Motin \nSigned-off-by: Rob Norris \nCloses #16151","shortMessageHtmlLink":"spa_taskq_dispatch_ent: simplify arguments"}},{"before":"89acef992bf328e0ffba63950b176a0d9572b792","after":"b64afa41d56e98b5817aaf14c7deb0fa7e2142fb","ref":"refs/heads/master","pushedAt":"2024-05-14T16:37:55.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Better control the thread pool size when mounting datasets\n\nEver since a10d50f999, ZFS has mounted file systems in parallel when\nimporting a pool. It uses a fixed size of 512 for the thread pool. But\nsince c183d164aa1, it has also imported pools in parallel. So the total\nnumber of threads at one time is 513 * npools + 1. That can easily\nexceed the system's limit on the number of threads per process, which\nwill cause one or more pools to be unable to allocate any worker\nthreads, forcing them to fallback to slow serial mounting . To\nforestall that, manage the threadpool size in /sbin/zpool, not libzfs.\nUse the same size (512), but divided by the number of pools.\n\nThis is a backwards-incompatible change to the libzfs abi.\n\nSponsored by: Axcient\nReviewed-by: Brian Behlendorf \nReviewed-by: George Wilson \nSigned-off-by: Alan Somers \nCloses #16178","shortMessageHtmlLink":"Better control the thread pool size when mounting datasets"}},{"before":"abec7dcd30acfb195bca36334cec4fe82b082b1d","after":"89acef992bf328e0ffba63950b176a0d9572b792","ref":"refs/heads/master","pushedAt":"2024-05-14T16:06:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Simplified the scope of the namespace lock\n\nIf we wait until after we check for no spa references to drop the\nnamespace lock, then we know that spa consumers will need to call\nspa_lookup() and end up waiting on the spa_namespace_cv until we\nfinish. This narrows the external checks to spa_lookup and we no\nlonger need to worry about the spa_vdev_enter case.\n\nSponsored-By: Klara Inc.\nSponsored-by: Wasabi Technology, Inc.\nReviewed-by: Brian Behlendorf \nReviewed-by: George Wilson \nSigned-off-by: Don Brady \nCloses #16153","shortMessageHtmlLink":"Simplified the scope of the namespace lock"}},{"before":"136c05321140ecefa81a830754c64a7867d033e0","after":"abec7dcd30acfb195bca36334cec4fe82b082b1d","ref":"refs/heads/master","pushedAt":"2024-05-13T22:12:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Linux: disable lockdep for a couple of locks\n\nWhen running a debug kernel with lockdep enabled there\r\nare several locks which report false positives. Set\r\nMUTEX_NOLOCKDEP/RW_NOLOCKDEP to disable these warnings.\r\n\r\nReviewed-by: Brian Atkinson \r\nSigned-off-by: Brian Behlendorf \r\nCloses #16188","shortMessageHtmlLink":"Linux: disable lockdep for a couple of locks"}},{"before":"2566592045780e7be7afc899c2496b1ae3af4f4d","after":"9edf6af4aed14948925588eb4d2171d229c9713a","ref":"refs/heads/zfs-2.2.5-staging","pushedAt":"2024-05-13T15:27:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN.\n\nIn P2ALIGN, the result would be incorrect when align is unsigned\ninteger and x is larger than max value of the type of align.\nIn that case, -(align) would be a positive integer, which means\nhigh bits would be zero and finally stay zero after '&' when\nalign is converted to a larger integer type.\n\nReviewed-by: Brian Behlendorf \nReviewed-by: Youzhong Yang \nSigned-off-by: Qiuhao Chen \nCloses #15940","shortMessageHtmlLink":"Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN."}},{"before":"41ae864b69991f7e13d5171f54a42c721b297233","after":"136c05321140ecefa81a830754c64a7867d033e0","ref":"refs/heads/master","pushedAt":"2024-05-10T19:35:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"ZAP: Fix leaf references on zap_expand_leaf() errors\n\nDepending on kind of error zap_expand_leaf() may return with or\r\nwithout valid leaf reference held. Make sure it returns NULL if\r\ndue to error it has no leaf to return. Make its callers to check\r\nthe returned leaf pointer, and release the leaf if it is not NULL.\r\n\r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Alexander Motin \r\nSponsored by:\tiXsystems, Inc.\r\nCloses #12366 \r\nCloses #16159","shortMessageHtmlLink":"ZAP: Fix leaf references on zap_expand_leaf() errors"}},{"before":"1ede0c716beeee4a720ff5c361121021555d7e3c","after":"41ae864b69991f7e13d5171f54a42c721b297233","ref":"refs/heads/master","pushedAt":"2024-05-10T15:47:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN.\n\nIn P2ALIGN, the result would be incorrect when align is unsigned\r\ninteger and x is larger than max value of the type of align.\r\nIn that case, -(align) would be a positive integer, which means\r\nhigh bits would be zero and finally stay zero after '&' when\r\nalign is converted to a larger integer type.\r\n\r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Youzhong Yang \r\nSigned-off-by: Qiuhao Chen \r\nCloses #15940","shortMessageHtmlLink":"Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN."}},{"before":"414acbd37e0a1121e93310e88956e30554ad1dae","after":"1ede0c716beeee4a720ff5c361121021555d7e3c","ref":"refs/heads/master","pushedAt":"2024-05-09T14:43:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"libspl_assert: always link -lpthread on FreeBSD\n\nThe pthread_* functions are in -lpthread on FreeBSD. Some of them are\r\nimplicitly linked through libc, but on FreeBSD 13 at least\r\npthread_getname_np() is not. Just be explicit, since -lpthread is the\r\ndocumented interface anyway.\r\n\r\nSponsored-by: https://despairlabs.com/sponsor/\r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Rob Norris \r\nCloses #16168","shortMessageHtmlLink":"libspl_assert: always link -lpthread on FreeBSD"}},{"before":"3400127a75fda737bc59ae52f1f8ecedd6201117","after":"414acbd37e0a1121e93310e88956e30554ad1dae","ref":"refs/heads/master","pushedAt":"2024-05-09T14:42:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Unbreak FreeBSD cross-build on MacOS broken in 051460b8b\n\nMacOS used FreeBSD-compatible getprogname() and pthread_getname_np().\r\nBut pthread_getthreadid_np() does not exist on MacOS. This implements\r\nlibspl_gettid() using pthread_threadid_np() to get the thread id\r\nof the current thread.\r\n\r\nTested with FreeBSD GitHub actions\r\nfreebsd-src/.github/workflows/cross-bootstrap-tools.yml\r\n\r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Rob Norris \r\nSigned-off-by: Martin Matuska \r\nCloses #16167","shortMessageHtmlLink":"Unbreak FreeBSD cross-build on MacOS broken in 051460b"}},{"before":"af5dbed3193eb91e1302e1b976606b64fb9c557b","after":"3400127a75fda737bc59ae52f1f8ecedd6201117","ref":"refs/heads/master","pushedAt":"2024-05-09T14:39:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Fix ZIL clone records for legacy holes\n\nPrevious code overengineered cloned range calculation by using\r\nBP_GET_LSIZE(). The problem is that legacy holes don't have the\r\nlogical size, so result will be wrong. But we also don't need\r\nto look on every block size, since they all must be identical.\r\n\r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Brian Atkinson \r\nSigned-off-by: Alexander Motin \r\nSponsored by:\tiXsystems, Inc.\r\nCloses #16165","shortMessageHtmlLink":"Fix ZIL clone records for legacy holes"}},{"before":"a0f3c8aaf1e8c1196282e91cca603f877d7a618b","after":"af5dbed3193eb91e1302e1b976606b64fb9c557b","ref":"refs/heads/master","pushedAt":"2024-05-09T14:32:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Fix scn_queue races on very old pools\n\nCode for pools before version 11 uses dmu_objset_find_dp() to scan\r\nfor children datasets/clones. It calls enqueue_clones_cb() and\r\nenqueue_cb() callbacks in parallel from multiple taskq threads.\r\nIt ends up bad for scan_ds_queue_insert(), corrupting scn_queue\r\nAVL-tree. Fix it by introducing a mutex to protect those two\r\nscan_ds_queue_insert() calls. All other calls are done from the\r\nsync thread and so serialized.\r\n\r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Brian Atkinson \r\nSigned-off-by: Alexander Motin \r\nSponsored by:\tiXsystems, Inc.\r\nCloses #16162","shortMessageHtmlLink":"Fix scn_queue races on very old pools"}},{"before":"2dff7527d4a40310f589045f5ab3a07b02963516","after":"a0f3c8aaf1e8c1196282e91cca603f877d7a618b","ref":"refs/heads/master","pushedAt":"2024-05-09T14:31:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"zdb: add missing cleanup for early return\n\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Don Brady \r\nReviewed-by: Alexander Motin \r\nSigned-off-by: Ameer Hamza \r\nCloses #16152","shortMessageHtmlLink":"zdb: add missing cleanup for early return"}},{"before":"04bae5ec95f7273105237159a882d5b72ec2b998","after":"2dff7527d4a40310f589045f5ab3a07b02963516","ref":"refs/heads/master","pushedAt":"2024-05-09T14:30:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Replace usage of schedule_timeout with schedule_timeout_interruptible (#16150)\n\nThis commit replaces current usages of schedule_timeout() with\r\nschedule_timeout_interruptible() in code paths that expect the running\r\ntask to sleep for a short period of time. When schedule_timeout() is\r\ncalled without previously calling set_current_state(), the running\r\ntask never sleeps because the task state remains in TASK_RUNNING.\r\n\r\nBy calling schedule_timeout_interruptible() to set the task state to\r\nTASK_INTERRUPTIBLE before calling schedule_timeout() we achieve the\r\nintended/desired behavior of putting the task to sleep for the\r\nspecified timeout.\r\n\r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Daniel Perry \r\nCloses #16150","shortMessageHtmlLink":"Replace usage of schedule_timeout with schedule_timeout_interruptible ("}},{"before":"8f1b7a6fa6762ea4c89198ceb11c521f80b92ddc","after":"04bae5ec95f7273105237159a882d5b72ec2b998","ref":"refs/heads/master","pushedAt":"2024-05-03T16:53:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Disable high priority ZIO threads on FreeBSD and Linux\n\nHigh priority threads are handling ZIL writes. While there is no\r\nZIL compression, there is encryption, checksuming and RAIDZ math.\r\nWe've found that on large systems 1 taskq with 5 threads can be\r\na bottleneck for throughput, IOPS or both. Instead of just bumping\r\nnumber of threads with a risk of overloading CPUs and increasing\r\nlatency, switch to using TQ_FRONT mechanism to increase sync write\r\nrequests priority within standard write threads. Do not do it on\r\nIllumos, since its TQ_FRONT implementation is inherently unfair.\r\nFreeBSD and Linux don't have this problem, so we can do it there.\r\n\r\nReviewed-by: Brian Behlendorf \r\nReviewed-by: Rob Norris \r\nSigned-off-by: Alexander Motin \r\nSponsored-By: iXsystems, Inc.\r\nCloses #16146","shortMessageHtmlLink":"Disable high priority ZIO threads on FreeBSD and Linux"}},{"before":null,"after":"2566592045780e7be7afc899c2496b1ae3af4f4d","ref":"refs/heads/zfs-2.2.5-staging","pushedAt":"2024-05-02T22:56:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tonyhutter","name":"Tony Hutter","path":"/tonyhutter","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11469457?s=80&v=4"},"commit":{"message":"Tag zfs-2.2.4\n\nMETA file and changelog updated.\n\nSigned-off-by: Tony Hutter ","shortMessageHtmlLink":"Tag zfs-2.2.4"}},{"before":"645b83307918085ab2f0e12618809e348635b34f","after":"8f1b7a6fa6762ea4c89198ceb11c521f80b92ddc","ref":"refs/heads/master","pushedAt":"2024-05-02T22:18:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"vdev_disk: disable flushes if device does not support it\n\nIf the underlying device doesn't have a write-back cache, the kernel\r\nwill just return a successful response. This doesn't hurt anything, but\r\nit's extra work on the IO taskqs that are unnecessary. So, detect this\r\nwhen we open the device for the first time.\r\n\r\nSponsored-by: Klara, Inc.\r\nSponsored-by: Wasabi Technology, Inc.\r\nReviewed-by: Alexander Motin \r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by: Rob Norris \r\nCloses #16148","shortMessageHtmlLink":"vdev_disk: disable flushes if device does not support it"}},{"before":"c883088df83ced3a2b8b38e6d89a5e63fb153ee4","after":"2566592045780e7be7afc899c2496b1ae3af4f4d","ref":"refs/heads/zfs-2.2-release","pushedAt":"2024-05-02T20:57:00.000Z","pushType":"push","commitsCount":86,"pusher":{"login":"tonyhutter","name":"Tony Hutter","path":"/tonyhutter","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11469457?s=80&v=4"},"commit":{"message":"Tag zfs-2.2.4\n\nMETA file and changelog updated.\n\nSigned-off-by: Tony Hutter ","shortMessageHtmlLink":"Tag zfs-2.2.4"}},{"before":"8fd3a5d02f3f6bad9e8e65b6aded694eae222bf2","after":"645b83307918085ab2f0e12618809e348635b34f","ref":"refs/heads/master","pushedAt":"2024-05-01T18:07:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"behlendorf","name":"Brian Behlendorf","path":"/behlendorf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/148917?s=80&v=4"},"commit":{"message":"Improve write issue taskqs utilization\n\n- Reduce number of allocators on small system down to one per 4\r\nCPU cores, keeping maximum at 4 on 16+ core systems. Small systems\r\nshould not have the lock contention multiple allocators supposed\r\nto solve, while having several metaslabs open and modified each\r\nTXG is not free.\r\n - Reduce number of write issue taskqs down to one per 16 CPU\r\ncores and an integer fraction of number of allocators. On mid-\r\nsized systems, where multiple allocators already make sense, too\r\nmany write issue taskqs may reduce write speed on single-file\r\nworkloads, since single file is handled by only one taskq to\r\nreduce fragmentation. On large systems, that can actually benefit\r\nfrom many taskq's better IOPS, the bottleneck is less important,\r\nsince in worst case there will be at least 16 cores to handle it.\r\n - Distribute dnodes between allocators (and taskqs) in a round-\r\nrobin fashion instead of relying on sync taskqs to be balanced.\r\nThe last is not guarantied and may depend on scheduling.\r\n - Remove io_wr_iss_tq from struct zio. io_allocator is enough.\r\n\r\nReviewed-by: Brian Behlendorf \r\nSigned-off-by:\tAlexander Motin \r\nSponsored by:\tiXsystems, Inc.\r\nCloses #16130","shortMessageHtmlLink":"Improve write issue taskqs utilization"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEU4SBfgA","startCursor":null,"endCursor":null}},"title":"Activity · openzfs/zfs"}