diff options
author | Christoph Hellwig <hch@lst.de> | 2015-10-15 15:10:48 +0300 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-10-21 23:46:56 +0300 |
commit | bbd3e064362e5057cc4799ba2e4d68c7593e490b (patch) | |
tree | 94c1efd47cf05eaf940e3381bb4eb9df421ae001 /include/linux/pr.h | |
parent | d8e4bb8103df02a2c509868732dc93fb66110a12 (diff) | |
download | linux-bbd3e064362e5057cc4799ba2e4d68c7593e490b.tar.xz |
block: add an API for Persistent Reservations
This commits adds a driver API and ioctls for controlling Persistent
Reservations s/genericly/generically/ at the block layer. Persistent
Reservations are supported by SCSI and NVMe and allow controlling who gets
access to a device in a shared storage setup.
Note that we add a pr_ops structure to struct block_device_operations
instead of adding the members directly to avoid bloating all instances
of devices that will never support Persistent Reservations.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'include/linux/pr.h')
-rw-r--r-- | include/linux/pr.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/pr.h b/include/linux/pr.h new file mode 100644 index 000000000000..65c01c10b335 --- /dev/null +++ b/include/linux/pr.h @@ -0,0 +1,18 @@ +#ifndef LINUX_PR_H +#define LINUX_PR_H + +#include <uapi/linux/pr.h> + +struct pr_ops { + int (*pr_register)(struct block_device *bdev, u64 old_key, u64 new_key, + u32 flags); + int (*pr_reserve)(struct block_device *bdev, u64 key, + enum pr_type type, u32 flags); + int (*pr_release)(struct block_device *bdev, u64 key, + enum pr_type type); + int (*pr_preempt)(struct block_device *bdev, u64 old_key, u64 new_key, + enum pr_type type, bool abort); + int (*pr_clear)(struct block_device *bdev, u64 key); +}; + +#endif /* LINUX_PR_H */ |