/* * pmemblk_write -- write a block (atomically) in a block memory pool */ int pmemblk_write(PMEMblkpool *pbp, const void *buf, long long blockno) { LOG(3, "pbp %p buf %p blockno %lld", pbp, buf, blockno); if (pbp->rdonly) { ERR("EROFS (pool is read-only)"); errno = EROFS; return -1; } if (blockno < 0) { ERR("negative block number"); errno = EINVAL; return -1; } unsigned lane; lane_enter(pbp, &lane); int err = btt_write(pbp->bttp, lane, (uint64_t)blockno, buf); lane_exit(pbp, lane); return err; }
/* * pmemblk_set_error -- set the error state on a block in a block memory pool */ int pmemblk_set_error(PMEMblkpool *pbp, off_t blockno) { LOG(3, "pbp %p blockno %lld", pbp, (long long)blockno); if (pbp->rdonly) { ERR("EROFS (pool is read-only)"); errno = EROFS; return -1; } if (blockno < 0) { ERR("negative block number"); errno = EINVAL; return -1; } unsigned lane; lane_enter(pbp, &lane); int err = btt_set_error(pbp->bttp, lane, (uint64_t)blockno); lane_exit(pbp, lane); return err; }
/* * pmemblk_read -- read a block in a block memory pool */ int pmemblk_read(PMEMblkpool *pbp, void *buf, off_t blockno) { LOG(3, "pbp %p buf %p blockno %lld", pbp, buf, (long long)blockno); int lane = lane_enter(pbp); if (lane < 0) return -1; int err = btt_read(pbp->bttp, lane, blockno, buf); lane_exit(pbp, lane); return err; }
/* * pmemblk_read -- read a block in a block memory pool */ int pmemblk_read(PMEMblkpool *pbp, void *buf, off_t blockno) { LOG(3, "pbp %p buf %p blockno %lld", pbp, buf, (long long)blockno); if (blockno < 0) { ERR("negative block number"); errno = EINVAL; return -1; } unsigned lane; lane_enter(pbp, &lane); int err = btt_read(pbp->bttp, lane, (uint64_t)blockno, buf); lane_exit(pbp, lane); return err; }
/* * pmemblk_set_error -- set the error state on a block in a block memory pool */ int pmemblk_set_error(PMEMblkpool *pbp, off_t blockno) { LOG(3, "pbp %p blockno %lld", pbp, (long long)blockno); if (pbp->rdonly) { ERR("EROFS (pool is read-only)"); errno = EROFS; return -1; } int lane = lane_enter(pbp); if (lane < 0) return -1; int err = btt_set_error(pbp->bttp, lane, blockno); lane_exit(pbp, lane); return err; }
/* * pmemblk_write -- write a block (atomically) in a block memory pool */ int pmemblk_write(PMEMblkpool *pbp, const void *buf, off_t blockno) { LOG(3, "pbp %p buf %p blockno %lld", pbp, buf, (long long)blockno); if (pbp->rdonly) { ERR("EROFS (pool is read-only)"); errno = EROFS; return -1; } int lane = lane_enter(pbp); if (lane < 0) return -1; int err = btt_write(pbp->bttp, lane, blockno, buf); lane_exit(pbp, lane); return err; }
/* * pmemblk_set_zero -- zero a block in a block memory pool */ int pmemblk_set_zero(PMEMblk *pbp, off_t blockno) { LOG(3, "pbp %p blockno %zu", pbp, blockno); if (pbp->rdonly) { LOG(1, "EROFS (pool is read-only)"); errno = EROFS; return -1; } int lane = lane_enter(pbp); if (lane < 0) return -1; int err = btt_set_zero(pbp->bttp, lane, blockno); lane_exit(pbp, lane); return err; }