Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tOlge-008cKM-M0 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Dec 2024 22:41:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tOlgd-000SIi-GR for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Dec 2024 22:41:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tOlgd-000SIa-5E for pgsql-hackers@lists.postgresql.org; Fri, 20 Dec 2024 22:41:34 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tOlgZ-000pAK-8Y for pgsql-hackers@lists.postgresql.org; Fri, 20 Dec 2024 22:41:34 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-30036310158so21540331fa.0 for ; Fri, 20 Dec 2024 14:41:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734734490; x=1735339290; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=F/7ooYxGRCON4vbB8LZHK5iMlnapECabalSBPId8T78=; b=e8zt/IkeMamN3s3bfA1YUh/d+TKDbDH8e6B/wPkeoNZEulX20KK3xAByyurA5PF6ks YbJi3mMIiHkQg2lonIBvJRK/5PEmBX9CbAlhzz5BxbQMI6Q4VEONjzjmi72VotX5kDH+ UetJJZhKuTvaohDwo0gCX9e9O1lF+QvuzgB4ubZa7bHgKQEKgmq2OLaQ8treQ+VFbkDx K8DQwsUDtzfKrh8KUEuVCwNuSJI9W+imXMH85cBnyo1DGE5kMxTDy2nU7epK9jrjGuwc NYj/sG/Sp5rHphEeKVzgBPTsNV0sMjoa6tzzlNJGMOca7UWUxrkH0UbbvNgk7uM9+bCb vkeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734734490; x=1735339290; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=F/7ooYxGRCON4vbB8LZHK5iMlnapECabalSBPId8T78=; b=khOMsyBkBDdvBoxAS+rO/IiuG3Dhors4qdbqV9jL4yMa1No8Z0AyLKvAws6U+OFZ6N oqtJNTrd2ruMLPYLXXcBvzHboOZu1q0312+SK9AN93Gvt6npT2U0XF2HV0sqk+BvFHmP QPSaeyu398pc+G5TyLtwoZDq9uA/Q7KO3BTpSKZO6h3vCOKyIjTlvSNJXELLUvOefktY qqNdPoI2SX75KOn7WY+GUE1/ZXsuKH6WepJws2A6pcrM/W6pYq+/QqoWMS6Wz3+Rj5DQ fqpNoynUgY2wAbpCG4YyOcFzlyiBYccu1qDtdgGwmboZ6RqVEx4rNRdCeDqiR4r7Gjsg w22A== X-Gm-Message-State: AOJu0Yw2tjXGmjagXxNl+fzatSwrreIavl2j7qLBphrhs03fl6/QepEq zrNRK9rqXndybIMRQKAZCYYncq9n3JojBw/nvb+W2D78RfQJTYKVeEqZ5BZsC9JMxeILa6/YIff fta5wpZcFCJkgZXwkxMOnFOwXu2zMRuE3 X-Gm-Gg: ASbGnct2TWNcu1hs8yc+PM0gr6z814TyfxOVYBfmV9J5/jOZ/dGq/3gJs7RWMzPUQ2r KWykw72uqNgXGo0nC3DQ6hx+Q7jflRAiS8LhIQg== X-Google-Smtp-Source: AGHT+IHBbqrxzh61cndlyroqQc0Wh6+qNFF7ceXP/yPtnqx0dEJdYFo0oDZtgLgE5nKoEOU4bysoG668PqWiTK7AkHc= X-Received: by 2002:a2e:a595:0:b0:2ff:cc65:68aa with SMTP id 38308e7fff4ca-30468608c3emr16900841fa.31.1734734490063; Fri, 20 Dec 2024 14:41:30 -0800 (PST) MIME-Version: 1.0 From: Matthias van de Meent Date: Fri, 20 Dec 2024 23:41:16 +0100 Message-ID: Subject: Bug: mdunlinkfiletag unlinks mainfork seg.0 instead of indicated fork+segment To: PostgreSQL Hackers , Robert Haas , Dilip Kumar Content-Type: multipart/mixed; boundary="0000000000000f7dd50629bb5934" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000f7dd50629bb5934 Content-Type: text/plain; charset="UTF-8" Hi, I noticed that the MD smgr internals misbehave when unlink requests for specific forks or specific segments are sent through SyncOps, as it currently always unlinks segment 0 of the main fork, even if only a different fork and/or segment was requested. While probably not extremely critical, it seems bad to not unlink the right segment while in recovery, so here's a patch that unlinks the exact requested files. The unlinking of forks in the FileTag infrastructure has been broken since b0a55e43 in PG16, while a segment number other than 0 has never been unlinked (at least not since the introduction of the system with 3eb77eba in PG12). However, extensions may still make use of this and incorrectly assume that only the requested file of the requested fork 's segment will be unlinked, when it actually unlinks data from the main fork. The attached fixes that for PG16+. PG13-15 will take a little bit more effort due to code changes in PG16; though it'd probably still require a relatively minor change. Kind regards, Matthias van de Meent. Neon (https://neon.tech) --0000000000000f7dd50629bb5934 Content-Type: application/octet-stream; name="v1-0001-MD-smgr-Unlink-the-requested-file-segment-not-mai.patch" Content-Disposition: attachment; filename="v1-0001-MD-smgr-Unlink-the-requested-file-segment-not-mai.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4x67i3j0 RnJvbSBlNzgxOGE2NTc5ZDY0NGViMWNhZWVkZDZlZGIzNzQwYWU3OTZmNzE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjAgRGVjIDIwMjQgMTk6MjU6MTYgKzAxMDAKU3Vi amVjdDogW1BBVENIIHYxXSBNRCBzbWdyOiBVbmxpbmsgdGhlIHJlcXVlc3RlZCBmaWxlIHNlZ21l bnQsIG5vdCBtYWluIGZvcmsKIHNlZ21lbnQgMAoKV2hpbGUgaXQgc2VlbXMgbGlrZSB3ZSBvbmx5 IHVubGluayBzZWdtZW50IDAgb2YgYW55IGZvcmssIGl0J3MKYmV0dGVyIHRvIGp1c3QgY29tcGx5 IHdpdGggdGhlIHJlcXVlc3QsIGluc3RlYWQgb2YgaWdub3JpbmcgdGhlCnByb3ZpZGVkIGluZm9y bWF0aW9uLgoKQmFja3BhdGNoOiAxMywgdGhlIG9sZGVzdCBzdXBwb3J0ZWQgcmVsZWFzZS4KLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3IvbWQuYyB8IDE4ICsrKysrKysrKysrKysrKystLQog MSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L3NtZ3IvbWQuYwppbmRleCBjYzhhODBlZTk2Li4zMTc1ZWMyNTJhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL3NtZ3IvbWQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Iv bWQuYwpAQCAtMTMzLDYgKzEzMyw4IEBAIHN0YXRpYyB2b2lkIF9mZHZlY19yZXNpemUoU01nclJl bGF0aW9uIHJlbG4sCiAJCQkJCQkgIGludCBuc2VnKTsKIHN0YXRpYyBjaGFyICpfbWRmZF9zZWdw YXRoKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtudW0sCiAJCQkJCQkgICBCbG9j a051bWJlciBzZWdubyk7CitzdGF0aWMgY2hhciAqX21kZmRfc2VncGF0aF9yZmxiKFJlbEZpbGVM b2NhdG9yQmFja2VuZCByZWxuLCBGb3JrTnVtYmVyIGZvcmtudW0sCisJCQkJCQkJCUJsb2NrTnVt YmVyIHNlZ25vKTsKIHN0YXRpYyBNZGZkVmVjICpfbWRmZF9vcGVuc2VnKFNNZ3JSZWxhdGlvbiBy ZWxuLCBGb3JrTnVtYmVyIGZvcmtudW0sCiAJCQkJCQkJICBCbG9ja051bWJlciBzZWdubywgaW50 IG9mbGFncyk7CiBzdGF0aWMgTWRmZFZlYyAqX21kZmRfZ2V0c2VnKFNNZ3JSZWxhdGlvbiByZWxu LCBGb3JrTnVtYmVyIGZvcmtudW0sCkBAIC0xNTM1LDExICsxNTM3LDE4IEBAIF9mZHZlY19yZXNp emUoU01nclJlbGF0aW9uIHJlbG4sCiAgKi8KIHN0YXRpYyBjaGFyICoKIF9tZGZkX3NlZ3BhdGgo U01nclJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIgc2Vnbm8p Cit7CisJcmV0dXJuIF9tZGZkX3NlZ3BhdGhfcmZsYihyZWxuLT5zbWdyX3Jsb2NhdG9yLCBmb3Jr bnVtLCBzZWdubyk7Cit9CisKK3N0YXRpYyBjaGFyICoKK19tZGZkX3NlZ3BhdGhfcmZsYihSZWxG aWxlTG9jYXRvckJhY2tlbmQgcmVsbiwgRm9ya051bWJlciBmb3JrbnVtLAorCQkJCSAgIEJsb2Nr TnVtYmVyIHNlZ25vKQogewogCWNoYXIJICAgKnBhdGgsCiAJCQkgICAqZnVsbHBhdGg7CiAKLQlw YXRoID0gcmVscGF0aChyZWxuLT5zbWdyX3Jsb2NhdG9yLCBmb3JrbnVtKTsKKwlwYXRoID0gcmVs cGF0aChyZWxuLCBmb3JrbnVtKTsKIAogCWlmIChzZWdubyA+IDApCiAJewpAQCAtMTgxMCw5ICsx ODE5LDE0IEBAIGludAogbWR1bmxpbmtmaWxldGFnKGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIg KnBhdGgpCiB7CiAJY2hhcgkgICAqcDsKKwlSZWxGaWxlTG9jYXRvckJhY2tlbmQgcmxmYiA9IHsK KwkJLmxvY2F0b3IgPSBmdGFnLT5ybG9jYXRvciwKKwkJLmJhY2tlbmQgPSBJTlZBTElEX1BST0Nf TlVNQkVSLAorCX07CiAKKwlBc3NlcnQoZnRhZy0+c2Vnbm8gPT0gMCk7CiAJLyogQ29tcHV0ZSB0 aGUgcGF0aC4gKi8KLQlwID0gcmVscGF0aHBlcm0oZnRhZy0+cmxvY2F0b3IsIE1BSU5fRk9SS05V TSk7CisJcCA9IF9tZGZkX3NlZ3BhdGhfcmZsYihybGZiLCBmdGFnLT5mb3JrbnVtLCBmdGFnLT5z ZWdubyk7CiAJc3RybGNweShwYXRoLCBwLCBNQVhQR1BBVEgpOwogCXBmcmVlKHApOwogCi0tIAoy LjQ1LjIKCg== --0000000000000f7dd50629bb5934--