示例#1
0
文件: blk.c 项目: tomaszkapela/nvml
/*
 * 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;
}
示例#2
0
文件: blk.c 项目: xguo/nvml
/*
 * 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;
}
示例#3
0
文件: blk.c 项目: jebtang/nvml
/*
 * 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;
}
示例#4
0
文件: blk.c 项目: xguo/nvml
/*
 * 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;
}
示例#5
0
文件: blk.c 项目: jebtang/nvml
/*
 * 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;
}
示例#6
0
文件: blk.c 项目: jebtang/nvml
/*
 * 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;
}
示例#7
0
文件: blk.c 项目: mdalecki/nvml
/*
 * 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;
}