mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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>
This commit is contained in:
parent
d8e4bb8103
commit
bbd3e06436
5 changed files with 290 additions and 0 deletions
18
include/linux/pr.h
Normal file
18
include/linux/pr.h
Normal file
|
@ -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 */
|
Loading…
Add table
Add a link
Reference in a new issue