---
name: "pmemblk_read"
section: "3"
platform: "linux"
package: "libpmemblk-dev"
version: "1.13.1-1.1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pmemblk_read"
---

# pmemblk\_read(3)

read or write a block from a block memory pool

## NAME

**pmemblk\_read**()(DEPRECATED), **pmemblk\_write**()(DEPRECATED) - read or write a block from a block memory pool

## SYNOPSIS

-

  ```
  #include <libpmemblk.h>
  int pmemblk_read(PMEMblkpool *pbp, void *buf, long long blockno);
  int pmemblk_write(PMEMblkpool *pbp, const void *buf, long long blockno);
  ```

## DESCRIPTION

The **pmemblk\_read**() function reads the block with block number *blockno* from memory pool *pbp* into the buffer *buf*. Reading a block that has never been written by **pmemblk\_write**() will return a block of zeroes.

The **pmemblk\_write**() function writes a block from *buf* to block number *blockno* in the memory pool *pbp*. The write is atomic with respect to other reads and writes. In addition, the write cannot be torn by program failure or system crash; on recovery the block is guaranteed to contain either the old data or the new data, never a mixture of both.

## RETURN VALUE

On success, the **pmemblk\_read**() and **pmemblk\_write**() functions return 0. On error, they return -1 and set *errno* appropriately.

## SEE ALSO

[**libpmemblk**(7)](/libpmemblk/7.md) and **\<https://pmem.io\>**
