Ejemplo n.º 1
0
Archivo: blk.c Proyecto: 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;
}
Ejemplo n.º 2
0
Archivo: blk.c Proyecto: 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;
}