mirror of
https://github.com/postgres/postgres.git
synced 2025-10-19 15:49:24 +03:00
Use consistent type for pgaio_io_get_id() result
The result of pgaio_io_get_id() was being assigned to a mix of int and uint32 variables. This fixes it to use int consistently, which seems the most correct. Also change the queue empty special value in method_worker.c to -1 from UINT32_MAX. Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://www.postgresql.org/message-id/70c784b3-f60b-4652-b8a6-75e5f051243e%40eisentraut.org
This commit is contained in:
@@ -56,7 +56,7 @@ pg_get_aios(PG_FUNCTION_ARGS)
|
||||
for (uint64 i = 0; i < pgaio_ctl->io_handle_count; i++)
|
||||
{
|
||||
PgAioHandle *live_ioh = &pgaio_ctl->io_handles[i];
|
||||
uint32 ioh_id = pgaio_io_get_id(live_ioh);
|
||||
int ioh_id = pgaio_io_get_id(live_ioh);
|
||||
Datum values[PG_GET_AIOS_COLS] = {0};
|
||||
bool nulls[PG_GET_AIOS_COLS] = {0};
|
||||
ProcNumber owner;
|
||||
@@ -152,7 +152,7 @@ retry:
|
||||
nulls[0] = false;
|
||||
|
||||
/* column: IO's id */
|
||||
values[1] = UInt32GetDatum(ioh_id);
|
||||
values[1] = Int32GetDatum(ioh_id);
|
||||
|
||||
/* column: IO's generation */
|
||||
values[2] = Int64GetDatum(start_generation);
|
||||
|
@@ -58,7 +58,7 @@ typedef struct PgAioWorkerSubmissionQueue
|
||||
uint32 mask;
|
||||
uint32 head;
|
||||
uint32 tail;
|
||||
uint32 sqes[FLEXIBLE_ARRAY_MEMBER];
|
||||
int sqes[FLEXIBLE_ARRAY_MEMBER];
|
||||
} PgAioWorkerSubmissionQueue;
|
||||
|
||||
typedef struct PgAioWorkerSlot
|
||||
@@ -107,7 +107,7 @@ pgaio_worker_queue_shmem_size(int *queue_size)
|
||||
*queue_size = pg_nextpower2_32(io_worker_queue_size);
|
||||
|
||||
return offsetof(PgAioWorkerSubmissionQueue, sqes) +
|
||||
sizeof(uint32) * *queue_size;
|
||||
sizeof(int) * *queue_size;
|
||||
}
|
||||
|
||||
static size_t
|
||||
@@ -198,15 +198,15 @@ pgaio_worker_submission_queue_insert(PgAioHandle *ioh)
|
||||
return true;
|
||||
}
|
||||
|
||||
static uint32
|
||||
static int
|
||||
pgaio_worker_submission_queue_consume(void)
|
||||
{
|
||||
PgAioWorkerSubmissionQueue *queue;
|
||||
uint32 result;
|
||||
int result;
|
||||
|
||||
queue = io_worker_submission_queue;
|
||||
if (queue->tail == queue->head)
|
||||
return UINT32_MAX; /* empty */
|
||||
return -1; /* empty */
|
||||
|
||||
result = queue->sqes[queue->tail];
|
||||
queue->tail = (queue->tail + 1) & (queue->size - 1);
|
||||
@@ -470,7 +470,7 @@ IoWorkerMain(const void *startup_data, size_t startup_data_len)
|
||||
* to ensure that we don't see an outdated data in the handle.
|
||||
*/
|
||||
LWLockAcquire(AioWorkerSubmissionQueueLock, LW_EXCLUSIVE);
|
||||
if ((io_index = pgaio_worker_submission_queue_consume()) == UINT32_MAX)
|
||||
if ((io_index = pgaio_worker_submission_queue_consume()) == -1)
|
||||
{
|
||||
/*
|
||||
* Nothing to do. Mark self idle.
|
||||
@@ -500,7 +500,7 @@ IoWorkerMain(const void *startup_data, size_t startup_data_len)
|
||||
for (int i = 0; i < nlatches; ++i)
|
||||
SetLatch(latches[i]);
|
||||
|
||||
if (io_index != UINT32_MAX)
|
||||
if (io_index != -1)
|
||||
{
|
||||
PgAioHandle *ioh = NULL;
|
||||
|
||||
|
Reference in New Issue
Block a user