/* * 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; } 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_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; }