#include <linux/blkdev.h>
#include <linux/pr.h>
#include <asm/unaligned.h>
#include "nvme.h"
static enum nvme_pr_type nvme_pr_type_from_blk(enum pr_type type)
{ … }
static enum pr_type block_pr_type_from_nvme(enum nvme_pr_type type)
{ … }
static int nvme_send_ns_head_pr_command(struct block_device *bdev,
struct nvme_command *c, void *data, unsigned int data_len)
{ … }
static int nvme_send_ns_pr_command(struct nvme_ns *ns, struct nvme_command *c,
void *data, unsigned int data_len)
{ … }
static int nvme_status_to_pr_err(int status)
{ … }
static int nvme_send_pr_command(struct block_device *bdev,
struct nvme_command *c, void *data, unsigned int data_len)
{ … }
static int nvme_pr_command(struct block_device *bdev, u32 cdw10,
u64 key, u64 sa_key, u8 op)
{ … }
static int nvme_pr_register(struct block_device *bdev, u64 old,
u64 new, unsigned flags)
{ … }
static int nvme_pr_reserve(struct block_device *bdev, u64 key,
enum pr_type type, unsigned flags)
{ … }
static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new,
enum pr_type type, bool abort)
{ … }
static int nvme_pr_clear(struct block_device *bdev, u64 key)
{ … }
static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type)
{ … }
static int nvme_pr_resv_report(struct block_device *bdev, void *data,
u32 data_len, bool *eds)
{ … }
static int nvme_pr_read_keys(struct block_device *bdev,
struct pr_keys *keys_info)
{ … }
static int nvme_pr_read_reservation(struct block_device *bdev,
struct pr_held_reservation *resv)
{ … }
const struct pr_ops nvme_pr_ops = …;