@@ -110,7 +110,7 @@ _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf, bool retain_pin)
110
110
* Write-lock the tail page. It is okay to hold two buffer locks here
111
111
* since there cannot be anyone else contending for access to ovflbuf.
112
112
*/
113
- _hash_chgbufaccess ( rel , buf , HASH_NOLOCK , HASH_WRITE );
113
+ LockBuffer ( buf , BUFFER_LOCK_EXCLUSIVE );
114
114
115
115
/* probably redundant... */
116
116
_hash_checkpage (rel , buf , LH_BUCKET_PAGE | LH_OVERFLOW_PAGE );
@@ -129,7 +129,7 @@ _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf, bool retain_pin)
129
129
130
130
/* we assume we do not need to write the unmodified page */
131
131
if ((pageopaque -> hasho_flag & LH_BUCKET_PAGE ) && retain_pin )
132
- _hash_chgbufaccess ( rel , buf , HASH_READ , HASH_NOLOCK );
132
+ LockBuffer ( buf , BUFFER_LOCK_UNLOCK );
133
133
else
134
134
_hash_relbuf (rel , buf );
135
135
@@ -151,7 +151,7 @@ _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf, bool retain_pin)
151
151
pageopaque -> hasho_nextblkno = BufferGetBlockNumber (ovflbuf );
152
152
MarkBufferDirty (buf );
153
153
if ((pageopaque -> hasho_flag & LH_BUCKET_PAGE ) && retain_pin )
154
- _hash_chgbufaccess ( rel , buf , HASH_READ , HASH_NOLOCK );
154
+ LockBuffer ( buf , BUFFER_LOCK_UNLOCK );
155
155
else
156
156
_hash_relbuf (rel , buf );
157
157
@@ -187,7 +187,7 @@ _hash_getovflpage(Relation rel, Buffer metabuf)
187
187
j ;
188
188
189
189
/* Get exclusive lock on the meta page */
190
- _hash_chgbufaccess ( rel , metabuf , HASH_NOLOCK , HASH_WRITE );
190
+ LockBuffer ( metabuf , BUFFER_LOCK_EXCLUSIVE );
191
191
192
192
_hash_checkpage (rel , metabuf , LH_META_PAGE );
193
193
metap = HashPageGetMeta (BufferGetPage (metabuf ));
@@ -225,7 +225,7 @@ _hash_getovflpage(Relation rel, Buffer metabuf)
225
225
last_inpage = BMPGSZ_BIT (metap ) - 1 ;
226
226
227
227
/* Release exclusive lock on metapage while reading bitmap page */
228
- _hash_chgbufaccess ( rel , metabuf , HASH_READ , HASH_NOLOCK );
228
+ LockBuffer ( metabuf , BUFFER_LOCK_UNLOCK );
229
229
230
230
mapbuf = _hash_getbuf (rel , mapblkno , HASH_WRITE , LH_BITMAP_PAGE );
231
231
mappage = BufferGetPage (mapbuf );
@@ -244,7 +244,7 @@ _hash_getovflpage(Relation rel, Buffer metabuf)
244
244
bit = 0 ;
245
245
246
246
/* Reacquire exclusive lock on the meta page */
247
- _hash_chgbufaccess ( rel , metabuf , HASH_NOLOCK , HASH_WRITE );
247
+ LockBuffer ( metabuf , BUFFER_LOCK_EXCLUSIVE );
248
248
}
249
249
250
250
/*
@@ -295,7 +295,8 @@ _hash_getovflpage(Relation rel, Buffer metabuf)
295
295
metap -> hashm_firstfree = bit + 1 ;
296
296
297
297
/* Write updated metapage and release lock, but not pin */
298
- _hash_chgbufaccess (rel , metabuf , HASH_WRITE , HASH_NOLOCK );
298
+ MarkBufferDirty (metabuf );
299
+ LockBuffer (metabuf , BUFFER_LOCK_UNLOCK );
299
300
300
301
return newbuf ;
301
302
@@ -309,7 +310,7 @@ _hash_getovflpage(Relation rel, Buffer metabuf)
309
310
_hash_relbuf (rel , mapbuf );
310
311
311
312
/* Reacquire exclusive lock on the meta page */
312
- _hash_chgbufaccess ( rel , metabuf , HASH_NOLOCK , HASH_WRITE );
313
+ LockBuffer ( metabuf , BUFFER_LOCK_EXCLUSIVE );
313
314
314
315
/* convert bit to absolute bit number */
315
316
bit += (i << BMPG_SHIFT (metap ));
@@ -326,12 +327,13 @@ _hash_getovflpage(Relation rel, Buffer metabuf)
326
327
metap -> hashm_firstfree = bit + 1 ;
327
328
328
329
/* Write updated metapage and release lock, but not pin */
329
- _hash_chgbufaccess (rel , metabuf , HASH_WRITE , HASH_NOLOCK );
330
+ MarkBufferDirty (metabuf );
331
+ LockBuffer (metabuf , BUFFER_LOCK_UNLOCK );
330
332
}
331
333
else
332
334
{
333
335
/* We didn't change the metapage, so no need to write */
334
- _hash_chgbufaccess ( rel , metabuf , HASH_READ , HASH_NOLOCK );
336
+ LockBuffer ( metabuf , BUFFER_LOCK_UNLOCK );
335
337
}
336
338
337
339
/* Fetch, init, and return the recycled page */
@@ -483,7 +485,7 @@ _hash_freeovflpage(Relation rel, Buffer ovflbuf, Buffer wbuf,
483
485
blkno = metap -> hashm_mapp [bitmappage ];
484
486
485
487
/* Release metapage lock while we access the bitmap page */
486
- _hash_chgbufaccess ( rel , metabuf , HASH_READ , HASH_NOLOCK );
488
+ LockBuffer ( metabuf , BUFFER_LOCK_UNLOCK );
487
489
488
490
/* Clear the bitmap bit to indicate that this overflow page is free */
489
491
mapbuf = _hash_getbuf (rel , blkno , HASH_WRITE , LH_BITMAP_PAGE );
@@ -495,7 +497,7 @@ _hash_freeovflpage(Relation rel, Buffer ovflbuf, Buffer wbuf,
495
497
_hash_relbuf (rel , mapbuf );
496
498
497
499
/* Get write-lock on metapage to update firstfree */
498
- _hash_chgbufaccess ( rel , metabuf , HASH_NOLOCK , HASH_WRITE );
500
+ LockBuffer ( metabuf , BUFFER_LOCK_EXCLUSIVE );
499
501
500
502
/* if this is now the first free page, update hashm_firstfree */
501
503
if (ovflbitno < metap -> hashm_firstfree )
@@ -633,7 +635,7 @@ _hash_squeezebucket(Relation rel,
633
635
*/
634
636
if (!BlockNumberIsValid (wopaque -> hasho_nextblkno ))
635
637
{
636
- _hash_chgbufaccess ( rel , wbuf , HASH_READ , HASH_NOLOCK );
638
+ LockBuffer ( wbuf , BUFFER_LOCK_UNLOCK );
637
639
return ;
638
640
}
639
641
@@ -721,7 +723,7 @@ _hash_squeezebucket(Relation rel,
721
723
if (wbuf_dirty )
722
724
MarkBufferDirty (wbuf );
723
725
if (retain_pin )
724
- _hash_chgbufaccess ( rel , wbuf , HASH_READ , HASH_NOLOCK );
726
+ LockBuffer ( wbuf , BUFFER_LOCK_UNLOCK );
725
727
else
726
728
_hash_relbuf (rel , wbuf );
727
729
@@ -784,7 +786,7 @@ _hash_squeezebucket(Relation rel,
784
786
{
785
787
/* retain the pin on primary bucket page till end of bucket scan */
786
788
if (wblkno == bucket_blkno )
787
- _hash_chgbufaccess ( rel , wbuf , HASH_READ , HASH_NOLOCK );
789
+ LockBuffer ( wbuf , BUFFER_LOCK_UNLOCK );
788
790
else
789
791
_hash_relbuf (rel , wbuf );
790
792
return ;
0 commit comments