{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":103643202,"defaultBranch":"drbd-9.1","name":"drbd","ownerLogin":"LINBIT","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-09-15T10:04:35.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6121896?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714482027.0","currentOid":""},"activityList":{"items":[{"before":"e624a7fc7a48b1d1e26290fc6cf03ab5cf119570","after":"bed587425e83ac85ddb0df42495a000950616530","ref":"refs/heads/master","pushedAt":"2024-04-30T09:46:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: _al_get() is only used with DAX_PMEM\n\nMove _al_get() inside the same ifdef as its only user,\nto avoid \"defined but not used\".","shortMessageHtmlLink":"drbd: _al_get() is only used with DAX_PMEM"}},{"before":"d17298c051faabe4743534498523ee12b448362d","after":"e624a7fc7a48b1d1e26290fc6cf03ab5cf119570","ref":"refs/heads/master","pushedAt":"2024-04-30T09:19:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Prepare drbd-9.2.9","shortMessageHtmlLink":"Prepare drbd-9.2.9"}},{"before":"d3c41d8e6e7e44442d9b5a737d0ebb41d83fcea6","after":"6257e00a26965e6af129ed37ee2db623c1664801","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-30T09:18:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Prepare drbd-9.1.20","shortMessageHtmlLink":"Prepare drbd-9.1.20"}},{"before":"9ebfffff239bf1d9f33e52a5e215f1c5b6a19152","after":"d17298c051faabe4743534498523ee12b448362d","ref":"refs/heads/master","pushedAt":"2024-04-29T19:21:52.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Merge drbd-9.1/d3c41d8e6 'drbd: fix cleanup of remote state changes upon connection cleanup'","shortMessageHtmlLink":"Merge drbd-9.1/d3c41d8e6 'drbd: fix cleanup of remote state changes u…"}},{"before":"e11db3c07a5a3c0f272233e10c360eb185a9a924","after":"d3c41d8e6e7e44442d9b5a737d0ebb41d83fcea6","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-29T18:59:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: fix cleanup of remote state changes upon connection cleanup\n\nThe idea of considering whether this state change targets the local\nnode was wrong to begin with. The question is whether the two-phase\ncommit can continue. Consider:\n\n A---B\n \\ /\n C\n\nWhen a two-phase commit from A addresses all nodes (with that\nimplicitly also B), and B loses the connection to A, it does not need\nto abort it if it has C as a parent of the two-phase commit.\n\nRemove the special case for no single connection up. Instead, check if\na remote two-phase commit still has one parent and check if a commit\nis possible with all nested (or child) nodes.","shortMessageHtmlLink":"drbd: fix cleanup of remote state changes upon connection cleanup"}},{"before":"f2adb0c323a27f70d4d76769dbdfa8007567fffd","after":"e11db3c07a5a3c0f272233e10c360eb185a9a924","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-29T12:49:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: add build requirements for diff, patch, perl\n\nensure presence of necessary tools in build containers.\nAlso have make double check and fail early with a useful message.","shortMessageHtmlLink":"build: add build requirements for diff, patch, perl"}},{"before":"762f6d8a46e9b6dfd6cd6c6a851f675edc39acc7","after":"9ebfffff239bf1d9f33e52a5e215f1c5b6a19152","ref":"refs/heads/master","pushedAt":"2024-04-29T12:24:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: unused function drbd_al_begin_io_for_peer\n\ndrop drbd_al_begin_io_for_peer(), it was unused since\n(drbd: respect peer writes held due to conflicts when barrier received, 2022-06-22)","shortMessageHtmlLink":"drbd: unused function drbd_al_begin_io_for_peer"}},{"before":"04a3ef351f7fe34b03f264e9cbe3885c5bf3e2cc","after":"762f6d8a46e9b6dfd6cd6c6a851f675edc39acc7","ref":"refs/heads/master","pushedAt":"2024-04-29T07:30:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Merge drbd-9.1/f2adb0c32 'drbd: fix \"LOGIC BUG\" in drbd_al_begin_io_nonblock()'","shortMessageHtmlLink":"Merge drbd-9.1/f2adb0c32 'drbd: fix \"LOGIC BUG\" in drbd_al_begin_io_n…"}},{"before":"7ffca41aeea12857239f09eabd2caee6cd1ecb9b","after":"f2adb0c323a27f70d4d76769dbdfa8007567fffd","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-28T18:58:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: fix \"LOGIC BUG\" in drbd_al_begin_io_nonblock()\n\nEven though we check that we \"should\" be able to do lc_get_cumulative()\nwhile holding the device->al_lock spinlock, it may still fail,\nif some other code path decided to do lc_try_lock() with bad timing.\n\nIf that happened, we logged \"LOGIC BUG for enr=...\",\nbut still did not return an error.\n\nThe rest of the code now assumed that this request has references\nfor the relevant activity log extents.\n\nThe implcations are that during an active resync, mutual exclusivity of\nresync versus application IO is not guaranteed. And a potential crash\nat this point may not realizs that these extents could have been target\nof in-flight IO and would need to be resynced just in case.\n\nAlso, once the request completes, it will give up activity log references it\ndoes not even hold.\n\nFix:\n\nDo not try to be smart and \"guess\" whether something will work, then\nbe surprised when it does not.\n\nDeal with the fact that it may or may not work. If it does not, remember a\npossible \"partially in activity log\" state (only possible for requests that\ncross extent boundaries), and return an error code from\ndrbd_al_begin_io_nonblock().\n\nA latter call for the same request will then resume from where we left off.\n\nSigned-off-by: Lars Ellenberg ","shortMessageHtmlLink":"drbd: fix \"LOGIC BUG\" in drbd_al_begin_io_nonblock()"}},{"before":"c300e9c998d1b49475d0c797e8edab2f270448ab","after":"04a3ef351f7fe34b03f264e9cbe3885c5bf3e2cc","ref":"refs/heads/master","pushedAt":"2024-04-26T07:22:15.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Merge drbd-9.1/7ffca41ae 'build: fix .filelist make target'","shortMessageHtmlLink":"Merge drbd-9.1/7ffca41ae 'build: fix .filelist make target'"}},{"before":"87069b782e991c08e06fe01e775d48ec26bca076","after":"7ffca41aeea12857239f09eabd2caee6cd1ecb9b","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-25T08:44:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: fix .filelist make target\n\nFrom the man page:\n -x , --exclude=\n Skip untracked files matching pattern. Note that pattern is a\n shell wildcard pattern. See EXCLUDE PATTERNS below for more\n information.\n\nBut we want to exclude something from the tracked files.","shortMessageHtmlLink":"build: fix .filelist make target"}},{"before":"2e4412cfc458e2eec323fc57062708baab3a3055","after":"c300e9c998d1b49475d0c797e8edab2f270448ab","ref":"refs/heads/master","pushedAt":"2024-04-23T15:54:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Prepare drbd-9.2.9-rc.1","shortMessageHtmlLink":"Prepare drbd-9.2.9-rc.1"}},{"before":"2d021b224502d19ae8d43f726155607d17ce42a4","after":"87069b782e991c08e06fe01e775d48ec26bca076","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-23T15:53:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Prepare drbd-9.1.20-rc.1","shortMessageHtmlLink":"Prepare drbd-9.1.20-rc.1"}},{"before":"ad4e06413e82bf7a2ae0ff57f98b7ef533dbd641","after":"2e4412cfc458e2eec323fc57062708baab3a3055","ref":"refs/heads/master","pushedAt":"2024-04-23T14:25:57.000Z","pushType":"push","commitsCount":14,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Skip drbd-9.1/87069b782","shortMessageHtmlLink":"Skip drbd-9.1/87069b782"}},{"before":"16ee072ba391ab11e9a544e3d00f56bb41298118","after":"2d021b224502d19ae8d43f726155607d17ce42a4","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-23T13:46:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: declare four functions as static\n\nGcc 13 emits warnings if there is no function prototype, so declare\nthem as static functions instead.","shortMessageHtmlLink":"drbd: declare four functions as static"}},{"before":"a90b0a5b6748cc577ffe967de78a66871360bd74","after":"16ee072ba391ab11e9a544e3d00f56bb41298118","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-23T13:36:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: clean up work item before destroying a resource\n\nCancel possible scheduled work item before destroying a resource.\n\nCo-developed-by: Lars Ellenberg \nFixes: e0f412ccd (\"drbd: Do not clog the own worker thread for an empty 2PC\")","shortMessageHtmlLink":"drbd: clean up work item before destroying a resource"}},{"before":"59951b635829989540a31ffe4baf8f03b4abbc8d","after":"a90b0a5b6748cc577ffe967de78a66871360bd74","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-23T13:01:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: fix forced demote on suspended resources\n\nCommit 5e577f4f0d01 from October 2014 introduced the idea of waiting\nfor pending writes to complete while demoting.\nIn March 2022, commit e582323826 made that superficial, as it now\nwaits for pending writes when the last opener closes the DRBD device.\nWith that, we can remove the code from change_role() and unlock\n'drbdsetup secondary --force' on devices with pending writes.","shortMessageHtmlLink":"drbd: fix forced demote on suspended resources"}},{"before":"650aeefda3e5f08a3124b9a3a68c74709ccf7209","after":"59951b635829989540a31ffe4baf8f03b4abbc8d","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-23T09:16:30.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: consider nesting in cleanup_remote_state_change()\n\nSo far, the code did not consider that the two-phase transaction might\nhave child nodes. When aborting a remote transaction, send that abort\nalso to the child nodes.","shortMessageHtmlLink":"drbd: consider nesting in cleanup_remote_state_change()"}},{"before":"f1835bb1b12fd56a2ccfa8183171d49f2975422b","after":"650aeefda3e5f08a3124b9a3a68c74709ccf7209","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-22T13:07:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: Fix last commit\n\nDo not add a \"build-current\" into the directory structure in the\ninstallation destination directory.","shortMessageHtmlLink":"build: Fix last commit"}},{"before":"4198bf13550a6e6c5461d2a0d4f2d9fde1a39136","after":"ad4e06413e82bf7a2ae0ff57f98b7ef533dbd641","ref":"refs/heads/master","pushedAt":"2024-04-18T14:02:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Merge drbd-9.1/f1835bb1b 'build: Add a make install in case KDIR is not available'","shortMessageHtmlLink":"Merge drbd-9.1/f1835bb1b 'build: Add a make install in case KDIR is n…"}},{"before":"cdd3b8aa03f1a58d71398275bb0d4bc13ad1eedc","after":"f1835bb1b12fd56a2ccfa8183171d49f2975422b","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-18T12:34:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: Add a make install in case KDIR is not available\n\nUse KDIR module_install target, if available.\nOtherwise, just copy over the .ko files from\n\"build-current\" to $DESTDIR/lib/modules/$KERNELRELEASE/$INSTALL_MOD_DIR/\n\nFor convenience of existing workflows that build in containers,\nbut install elsewhere.","shortMessageHtmlLink":"build: Add a make install in case KDIR is not available"}},{"before":"343e077e9664b203e5ebf8146dacc5c869b80e30","after":"4198bf13550a6e6c5461d2a0d4f2d9fde1a39136","ref":"refs/heads/master","pushedAt":"2024-04-16T14:25:31.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Merge drbd-9.1/cdd3b8aa03f1 'drbd: fix double backing device linking'","shortMessageHtmlLink":"Merge drbd-9.1/cdd3b8aa03f1 'drbd: fix double backing device linking'"}},{"before":null,"after":"861b5f7b2f1292a027c1273c10d39257e5bfab05","ref":"refs/heads/jt/windrbd-1.1-drbd-9.0","pushedAt":"2024-04-16T13:50:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Philipp-Reisner","name":"Philipp Reisner","path":"/Philipp-Reisner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31985367?s=80&v=4"},"commit":{"message":"Only outdate on disconnect when there is currently a connection.\n\nWhen the connection fails and there is a long running fence-peer\nhandler and someone disconnects the resource on the Primary side\nfencing (no I/O) mode is exited. This may lead to split brain\nsituations.\n\nThis patch adds an additional check if there is a valid connection\nand outdates the peer disk only if we are currently connected to\nthe peer.","shortMessageHtmlLink":"Only outdate on disconnect when there is currently a connection."}},{"before":"4e87351a879fa1d532767d4781e64e7f1e0f0c5b","after":"cdd3b8aa03f1a58d71398275bb0d4bc13ad1eedc","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-16T12:56:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: fix double backing device linking\n\nWe don't want to compare the handles here, but the actual backing\ndevices.","shortMessageHtmlLink":"drbd: fix double backing device linking"}},{"before":"857db82c989b36993ff7a3df3944c9862db1408d","after":"4e87351a879fa1d532767d4781e64e7f1e0f0c5b","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-16T07:11:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: Only outdate on disconnect when there is currently a connection.\n\nWhen one runs disconnect on an unconnected connection, do not mark the\npeer-disk as D_OUTDATED.\n\nA wrongly outdated peer can cause unexpected split-brain situations\nlater on. That is true for setups with fencing and with quorum.\n\nFix this by checking for a healthy connection before outdating the\npeer with the two-phase-commit.","shortMessageHtmlLink":"drbd: Only outdate on disconnect when there is currently a connection."}},{"before":"9e97135483435d1a6786035ee6c340d08f5bdd40","after":"343e077e9664b203e5ebf8146dacc5c869b80e30","ref":"refs/heads/master","pushedAt":"2024-04-15T13:14:59.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Merge drbd-9.1/857db82c9 'drbd: hold peer_device alive as long as peer_requests exist'","shortMessageHtmlLink":"Merge drbd-9.1/857db82c9 'drbd: hold peer_device alive as long as pee…"}},{"before":"c2b3f003dab47552f935aea5f5c6392a31a29308","after":"857db82c989b36993ff7a3df3944c9862db1408d","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-15T12:59:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"drbd: hold peer_device alive as long as peer_requests exist\n\nOne could construct a crash by destroying drbd objects in an unusual\nsequence. Start with two nodes, one of which is diskless primary.\n\n1. The diskless sends a read request to the storage node.\n2. The storage nodes reads the data from the backing disk.\n3. DRBD moves that peer request onto the net_ee list after sending\n back the result using zero-copy. In other words, the network stack\n still needs the pages holding that data.\n4. Then, this is the unusual part: user-space initiates a detach and\n del-minor operation. That releases the DRBD device struct and the\n according peer_device struct.\n5. DRBD cleans up the peer_requests from the net_ee list at some later\n point. Each peer_req has a pointer to a struct peer_device. The\n problem is that peer_device was freed in step 4.\n\nFix this by holding a kref on the device. The peer_device objects will\nexist until all the peer_reqs are cleaned up.\n\nHere is one of the typical call traces caused by this bug:\n\n ? show_regs.cold.16+0x1a/0x1f\n ? __die_body+0x1f/0x70\n ? __die+0x2a/0x35\n ? page_fault_oops+0x136/0x2b0\n ? do_user_addr_fault+0x33e/0x660\n ? finish_task_switch+0x81/0x2a0\n ? exc_page_fault+0x7e/0x170\n ? asm_exc_page_fault+0x27/0x30\n ? _raw_spin_lock_irq+0x17/0x40\n drbd_free_peer_req+0xa9/0x240 [drbd]\n drbd_finish_peer_reqs+0xc2/0x180 [drbd]\n drain_resync_activity+0x579/0xdc0 [drbd]\n ? wake_up_q+0x4e/0x90\n ? __mutex_unlock_slowpath.isra.24+0x9c/0x110\n ? mutex_unlock+0x26/0x30\n conn_disconnect+0x1b3/0xa40 [drbd]\n drbd_receiver+0x5ef/0x990 [drbd]\n ? drbd_unplug_all_devices+0x50/0x50 [drbd]\n drbd_thread_setup+0x85/0x1e0 [drbd]\n ? inc_open_count+0xb0/0xb0 [drbd]\n kthread+0x12d/0x150\n ? set_kthread_struct+0x50/0x50\n ret_from_fork+0x1f/0x30\n\nCo-developed-by: Joel Colledge ","shortMessageHtmlLink":"drbd: hold peer_device alive as long as peer_requests exist"}},{"before":"1ecce166deb118860466182010960e95d41aae86","after":"9e97135483435d1a6786035ee6c340d08f5bdd40","ref":"refs/heads/master","pushedAt":"2024-04-11T14:09:09.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"Merge drbd-9.1/c2b3f003dab4 'build: fix builds when no compat patches are necessary'","shortMessageHtmlLink":"Merge drbd-9.1/c2b3f003dab4 'build: fix builds when no compat patches…"}},{"before":"fcd69c13a97ccce485f9a2172fa2d84026d5e407","after":"c2b3f003dab47552f935aea5f5c6392a31a29308","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-11T11:13:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"build: fix builds when no compat patches are necessary\n\nRecent changes to the build system meant that when the list of patches to\napply is empty, the build would fail because the rendered patch file did\nnot exist.\n\nSo we first check of the rendered patch file actually exists. If not, we\nsimply put an empty file in it place.\n\nAlso, use tabs for the gen_compat_patch.sh script consistently for the\nsanity of anyone touching it.","shortMessageHtmlLink":"build: fix builds when no compat patches are necessary"}},{"before":"e88fdafcc71d945ea893504ba7731522a854e359","after":"fcd69c13a97ccce485f9a2172fa2d84026d5e407","ref":"refs/heads/drbd-9.1","pushedAt":"2024-04-11T10:18:52.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"LinbitPRBot","name":null,"path":"/LinbitPRBot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34788315?s=80&v=4"},"commit":{"message":"compat: gate blkdev_* patches behind bdev_open_by_path\n\nIf we have bdev_open_by_path, there is no need to consider these patches\nsince they only apply to the (older) blkdev_{get_put}_* functions.","shortMessageHtmlLink":"compat: gate blkdev_* patches behind bdev_open_by_path"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEPdap0AA","startCursor":null,"endCursor":null}},"title":"Activity · LINBIT/drbd"}