This is an automated email from the ASF dual-hosted git repository. reshke pushed a commit to branch fix_smgr in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 90e6d78047f5d2cf9aa0e09a11e5436a14a1f6fe 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 0e9e96d7913..6b717978b31 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 c3553adc065..92b8f98544e 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -1052,7 +1052,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) * for AO segment files. */ void -register_dirty_segment_ao(RelFileNode rnode, int segno, File vfd) +register_dirty_segment_ao(RelFileNode rnode, int segno, File vfd, const struct f_smgr_ao *smgrao) { FileTag tag; @@ -1063,7 +1063,7 @@ register_dirty_segment_ao(RelFileNode 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 0283df12d35..10e77735900 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(RelFileNode rnode, int segno, File vfd); +extern void register_dirty_segment_ao(RelFileNode rnode, int segno, File vfd, const struct f_smgr_ao *smgrao); extern uint64 ao_rel_get_physical_size(Relation aorel); #endif /* AOMD_H */ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
