This is an automated email from the ASF dual-hosted git repository. reshke pushed a commit to branch fix_smgr_main in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit c9ce967f936f2fe0ab52914e7463c781544d45f9 Author: reshke <[email protected]> AuthorDate: Sat Aug 22 04:44:08 2026 +0000 Fix extnesible SMGR API violation in register_dirty_segment_ao $subj, in CBDB we allow extension to hijack all SMGR calls via interface, but register_dirty_segment_ao didn't follow the memo. Exntension that need this is Yezzey --- src/backend/cdb/cdbappendonlyxlog.c | 2 +- src/backend/storage/smgr/md.c | 4 ++-- src/include/access/aomd.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/cdb/cdbappendonlyxlog.c b/src/backend/cdb/cdbappendonlyxlog.c index 6f13de288f9..bb19dcb436f 100644 --- a/src/backend/cdb/cdbappendonlyxlog.c +++ b/src/backend/cdb/cdbappendonlyxlog.c @@ -109,7 +109,7 @@ ao_insert_replay(XLogReaderState *record) register_dirty_segment_ao(xlrec->target.node, xlrec->target.segment_filenum, - file); + file, smgr->smgr_ao); smgr->smgr_ao->smgr_FileClose(file); } diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index e00e3c5172d..9b133d91372 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -1256,7 +1256,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) * for AO segment files. */ void -register_dirty_segment_ao(RelFileLocator rnode, int segno, File vfd) +register_dirty_segment_ao(RelFileLocator rnode, int segno, File vfd, const struct f_smgr_ao *smgrao) { FileTag tag; @@ -1267,7 +1267,7 @@ register_dirty_segment_ao(RelFileLocator rnode, int segno, File vfd) ereport(DEBUG1, (errmsg("could not forward AO fsync request because request queue is full"))); - if (FileSync(vfd, WAIT_EVENT_DATA_FILE_SYNC) < 0) + if (smgrao->smgr_FileSync(vfd, WAIT_EVENT_DATA_FILE_SYNC) < 0) ereport(data_sync_elevel(ERROR), (errcode_for_file_access(), errmsg("could not fsync AO file \"%s\": %m", diff --git a/src/include/access/aomd.h b/src/include/access/aomd.h index 7fa83fe8a51..14a11b10c36 100644 --- a/src/include/access/aomd.h +++ b/src/include/access/aomd.h @@ -69,7 +69,7 @@ typedef bool (*ao_extent_callback)(int segno, void *ctx); extern void ao_foreach_extent_file(ao_extent_callback callback, void *ctx); -extern void register_dirty_segment_ao(RelFileLocator rnode, int segno, File vfd); +extern void register_dirty_segment_ao(RelFileLocator rnode, int segno, File vfd, const struct f_smgr_ao *smgrao); extern void register_forget_request_ao(RelFileLocator rnode, int segno); extern uint64 ao_rel_get_physical_size(Relation aorel); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
