mirror of
https://github.com/postgres/postgres.git
synced 2026-10-23 13:29:09 +03:00
Fix SystemTap dtrace warning about smgr probe argument types.
Commitsca326e903and1f8c504e3widened the byte-count arguments of smgr__md__read__done and smgr__md__write__done to "long long int". SystemTap's dtrace(1) fails on that specific spelling and falls back with a warning (misreported near the previous probe). Use ssize_t and size_t instead, matching the md.c call sites. Revise probes.d's note about which types are usable as probe arguments: recommend using system-supplied type names (macOS dtrace rejects names like PostgreSQL's uint64), and call out "long long int" as a known SystemTap failure case rather than a wider failure mode. Also, update the monitoring.sgml entries for these probes, which were missed by the prior commits. Reported-by: Laurenz Albe <laurenz.albe@cybertec.at> Author: Andrey Rachitskiy <pl0h0yp1@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/697d3c88568442cd637d8453d129f1bb14bbd2a8.camel@cybertec.at
This commit is contained in:
@@ -8745,7 +8745,7 @@ FROM pg_stat_get_backend_idset() AS backendid;
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>smgr-md-read-done</literal></entry>
|
||||
<entry><literal>(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int, int)</literal></entry>
|
||||
<entry><literal>(ForkNumber, BlockNumber, Oid, Oid, Oid, int, ssize_t, size_t)</literal></entry>
|
||||
<entry>Probe that fires when a block read is complete.
|
||||
arg0 and arg1 contain the fork and block numbers of the page.
|
||||
arg2, arg3, and arg4 contain the tablespace, database, and relation OIDs
|
||||
@@ -8767,7 +8767,7 @@ FROM pg_stat_get_backend_idset() AS backendid;
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>smgr-md-write-done</literal></entry>
|
||||
<entry><literal>(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int, int)</literal></entry>
|
||||
<entry><literal>(ForkNumber, BlockNumber, Oid, Oid, Oid, int, ssize_t, size_t)</literal></entry>
|
||||
<entry>Probe that fires when a block write is complete.
|
||||
arg0 and arg1 contain the fork and block numbers of the page.
|
||||
arg2, arg3, and arg4 contain the tablespace, database, and relation OIDs
|
||||
|
||||
@@ -11,8 +11,14 @@
|
||||
/*
|
||||
* Typedefs used in PostgreSQL probes.
|
||||
*
|
||||
* NOTE: Do not use system-provided typedefs (e.g. uintptr_t, uint32_t, etc)
|
||||
* in probe definitions, as they cause compilation errors on macOS.
|
||||
* NOTE: Prefer system-supplied type names in probe definitions (e.g.
|
||||
* uint64_t, not PostgreSQL's uint64); macOS' dtrace rejects the latter.
|
||||
* Also avoid "long long int", as SystemTap's dtrace(1) fails on that
|
||||
* specific spelling.
|
||||
*
|
||||
* But we can use some PG type aliases by #define'ing them here so that
|
||||
* cpp expands them before dtrace sees the file. Curiously, macOS' dtrace
|
||||
* rejects "bool", so we handle that with a #define too.
|
||||
*/
|
||||
#define LocalTransactionId unsigned int
|
||||
#define LWLockMode int
|
||||
@@ -83,9 +89,9 @@ provider postgresql {
|
||||
probe twophase__checkpoint__done();
|
||||
|
||||
probe smgr__md__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid, int);
|
||||
probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, long long int, long long int);
|
||||
probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, ssize_t, size_t);
|
||||
probe smgr__md__write__start(ForkNumber, BlockNumber, Oid, Oid, Oid, int);
|
||||
probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, long long int, long long int);
|
||||
probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, ssize_t, size_t);
|
||||
|
||||
probe wal__insert(unsigned char, unsigned char);
|
||||
probe wal__switch();
|
||||
|
||||
Reference in New Issue
Block a user