- Notifications
You must be signed in to change notification settings - Fork4.9k
Commit44cac93
committed
Avoid using potentially-under-aligned page buffers.
There's a project policy against using plain "char buf[BLCKSZ]" localor static variables as page buffers; preferred style is to palloc ormalloc each buffer to ensure it is MAXALIGN'd. However, that policy'sbeen ignored in an increasing number of places. We've apparently gotaway with it so far, probably because (a) relatively few people useplatforms on which misalignment causes core dumps and/or (b) thevariables chance to be sufficiently aligned anyway. But this is notsomething to rely on. Moreover, even if we don't get a core dump,we might be paying a lot of cycles for misaligned accesses.To fix, invent new union types PGAlignedBlock and PGAlignedXLogBlockthat the compiler must allocate with sufficient alignment, and usethose in place of plain char arrays.I used these types even for variables where there's no risk of amisaligned access, since ensuring proper alignment should makekernel data transfers faster. I also changed some places wherewe had been palloc'ing short-lived buffers, for coding styleuniformity and to save palloc/pfree overhead.Since this seems to be a live portability hazard (despite the lackof field reports), back-patch to all supported versions.Patch by me; thanks to Michael Paquier for review.Discussion:https://postgr.es/m/1535618100.1286.3.camel@credativ.de1 parent5e8d670 commit44cac93
File tree
24 files changed
+141
-168
lines changed- contrib
- bloom
- pg_prewarm
- pg_standby
- src
- backend
- access
- gin
- hash
- heap
- transam
- commands
- replication
- storage
- file
- freespace
- utils/sort
- bin
- pg_basebackup
- pg_resetwal
- pg_rewind
- pg_upgrade
- pg_verify_checksums
- pg_waldump
- include
24 files changed
+141
-168
lines changedLines changed: 6 additions & 6 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
36 | 36 |
| |
37 | 37 |
| |
38 | 38 |
| |
39 |
| - | |
| 39 | + | |
40 | 40 |
| |
41 | 41 |
| |
42 | 42 |
| |
| |||
52 | 52 |
| |
53 | 53 |
| |
54 | 54 |
| |
55 |
| - | |
| 55 | + | |
56 | 56 |
| |
57 | 57 |
| |
58 | 58 |
| |
| |||
63 | 63 |
| |
64 | 64 |
| |
65 | 65 |
| |
66 |
| - | |
67 |
| - | |
| 66 | + | |
| 67 | + | |
68 | 68 |
| |
69 | 69 |
| |
70 | 70 |
| |
| |||
84 | 84 |
| |
85 | 85 |
| |
86 | 86 |
| |
87 |
| - | |
| 87 | + | |
88 | 88 |
| |
89 | 89 |
| |
90 | 90 |
| |
| |||
98 | 98 |
| |
99 | 99 |
| |
100 | 100 |
| |
101 |
| - | |
| 101 | + | |
102 | 102 |
| |
103 | 103 |
| |
104 | 104 |
| |
|
Lines changed: 2 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
36 | 36 |
| |
37 | 37 |
| |
38 | 38 |
| |
39 |
| - | |
| 39 | + | |
40 | 40 |
| |
41 | 41 |
| |
42 | 42 |
| |
| |||
178 | 178 |
| |
179 | 179 |
| |
180 | 180 |
| |
181 |
| - | |
| 181 | + | |
182 | 182 |
| |
183 | 183 |
| |
184 | 184 |
| |
|
Lines changed: 3 additions & 7 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
401 | 401 |
| |
402 | 402 |
| |
403 | 403 |
| |
404 |
| - | |
405 |
| - | |
406 |
| - | |
| 404 | + | |
407 | 405 |
| |
408 | 406 |
| |
409 | 407 |
| |
410 | 408 |
| |
411 | 409 |
| |
412 | 410 |
| |
413 | 411 |
| |
414 |
| - | |
415 | 412 |
| |
416 | 413 |
| |
417 | 414 |
| |
418 | 415 |
| |
419 |
| - | |
| 416 | + | |
420 | 417 |
| |
421 |
| - | |
| 418 | + | |
422 | 419 |
| |
423 | 420 |
| |
424 | 421 |
| |
| |||
455 | 452 |
| |
456 | 453 |
| |
457 | 454 |
| |
458 |
| - | |
459 | 455 |
| |
460 | 456 |
| |
461 | 457 |
| |
|
Lines changed: 3 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
616 | 616 |
| |
617 | 617 |
| |
618 | 618 |
| |
619 |
| - | |
| 619 | + | |
620 | 620 |
| |
621 | 621 |
| |
622 | 622 |
| |
| |||
625 | 625 |
| |
626 | 626 |
| |
627 | 627 |
| |
628 |
| - | |
| 628 | + | |
629 | 629 |
| |
630 | 630 |
| |
631 | 631 |
| |
| |||
658 | 658 |
| |
659 | 659 |
| |
660 | 660 |
| |
661 |
| - | |
| 661 | + | |
662 | 662 |
| |
663 | 663 |
| |
664 | 664 |
| |
|
Lines changed: 3 additions & 8 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
64 | 64 |
| |
65 | 65 |
| |
66 | 66 |
| |
67 |
| - | |
| 67 | + | |
68 | 68 |
| |
69 | 69 |
| |
70 |
| - | |
71 |
| - | |
72 |
| - | |
73 | 70 |
| |
74 | 71 |
| |
75 | 72 |
| |
76 | 73 |
| |
77 | 74 |
| |
78 |
| - | |
| 75 | + | |
79 | 76 |
| |
80 | 77 |
| |
81 | 78 |
| |
| |||
127 | 124 |
| |
128 | 125 |
| |
129 | 126 |
| |
130 |
| - | |
| 127 | + | |
131 | 128 |
| |
132 | 129 |
| |
133 | 130 |
| |
| |||
140 | 137 |
| |
141 | 138 |
| |
142 | 139 |
| |
143 |
| - | |
144 |
| - | |
145 | 140 |
| |
146 | 141 |
| |
147 | 142 |
| |
|
Lines changed: 4 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1000 | 1000 |
| |
1001 | 1001 |
| |
1002 | 1002 |
| |
1003 |
| - | |
| 1003 | + | |
1004 | 1004 |
| |
1005 | 1005 |
| |
1006 | 1006 |
| |
| |||
1013 | 1013 |
| |
1014 | 1014 |
| |
1015 | 1015 |
| |
1016 |
| - | |
| 1016 | + | |
1017 | 1017 |
| |
1018 | 1018 |
| |
1019 | 1019 |
| |
| |||
1034 | 1034 |
| |
1035 | 1035 |
| |
1036 | 1036 |
| |
1037 |
| - | |
| 1037 | + | |
1038 | 1038 |
| |
1039 | 1039 |
| |
1040 | 1040 |
| |
1041 |
| - | |
| 1041 | + | |
1042 | 1042 |
| |
1043 | 1043 |
| |
1044 | 1044 |
| |
|
Lines changed: 4 additions & 12 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2709 | 2709 |
| |
2710 | 2710 |
| |
2711 | 2711 |
| |
2712 |
| - | |
| 2712 | + | |
2713 | 2713 |
| |
2714 | 2714 |
| |
2715 | 2715 |
| |
| |||
2726 | 2726 |
| |
2727 | 2727 |
| |
2728 | 2728 |
| |
2729 |
| - | |
2730 |
| - | |
2731 |
| - | |
2732 |
| - | |
2733 |
| - | |
2734 |
| - | |
2735 |
| - | |
2736 |
| - | |
2737 | 2729 |
| |
2738 | 2730 |
| |
2739 | 2731 |
| |
| |||
2826 | 2818 |
| |
2827 | 2819 |
| |
2828 | 2820 |
| |
2829 |
| - | |
| 2821 | + | |
2830 | 2822 |
| |
2831 | 2823 |
| |
2832 | 2824 |
| |
| |||
2885 | 2877 |
| |
2886 | 2878 |
| |
2887 | 2879 |
| |
2888 |
| - | |
| 2880 | + | |
2889 | 2881 |
| |
2890 | 2882 |
| |
2891 | 2883 |
| |
| |||
2912 | 2904 |
| |
2913 | 2905 |
| |
2914 | 2906 |
| |
2915 |
| - | |
| 2907 | + | |
2916 | 2908 |
| |
2917 | 2909 |
| |
2918 | 2910 |
| |
|
Lines changed: 4 additions & 7 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
645 | 645 |
| |
646 | 646 |
| |
647 | 647 |
| |
648 |
| - | |
| 648 | + | |
649 | 649 |
| |
650 |
| - | |
651 |
| - | |
| 650 | + | |
652 | 651 |
| |
653 | 652 |
| |
654 | 653 |
| |
| |||
679 | 678 |
| |
680 | 679 |
| |
681 | 680 |
| |
682 |
| - | |
| 681 | + | |
683 | 682 |
| |
684 | 683 |
| |
685 |
| - | |
| 684 | + | |
686 | 685 |
| |
687 | 686 |
| |
688 | 687 |
| |
| |||
699 | 698 |
| |
700 | 699 |
| |
701 | 700 |
| |
702 |
| - | |
703 |
| - | |
704 | 701 |
|
Lines changed: 9 additions & 12 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
61 | 61 |
| |
62 | 62 |
| |
63 | 63 |
| |
64 |
| - | |
65 |
| - | |
66 |
| - | |
67 |
| - | |
68 |
| - | |
69 |
| - | |
| 64 | + | |
70 | 65 |
| |
71 | 66 |
| |
| 67 | + | |
| 68 | + | |
72 | 69 |
| |
73 | 70 |
| |
74 | 71 |
| |
| |||
251 | 248 |
| |
252 | 249 |
| |
253 | 250 |
| |
254 |
| - | |
| 251 | + | |
255 | 252 |
| |
256 |
| - | |
257 |
| - | |
258 |
| - | |
259 |
| - | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
260 | 257 |
| |
261 | 258 |
| |
262 | 259 |
| |
| |||
277 | 274 |
| |
278 | 275 |
| |
279 | 276 |
| |
280 |
| - | |
| 277 | + | |
281 | 278 |
| |
282 | 279 |
| |
283 | 280 |
| |
|
0 commit comments
Comments
(0)