brintos

brintos / linux-shallow public Read only

0
0
Text · 3.8 KiB · c893d6d Raw
120 lines · plain
1===============================================2Block layer support for Persistent Reservations3===============================================4 5The Linux kernel supports a user space interface for simplified6Persistent Reservations which map to block devices that support7these (like SCSI). Persistent Reservations allow restricting8access to block devices to specific initiators in a shared storage9setup.10 11This document gives a general overview of the support ioctl commands.12For a more detailed reference please refer to the SCSI Primary13Commands standard, specifically the section on Reservations and the14"PERSISTENT RESERVE IN" and "PERSISTENT RESERVE OUT" commands.15 16All implementations are expected to ensure the reservations survive17a power loss and cover all connections in a multi path environment.18These behaviors are optional in SPC but will be automatically applied19by Linux.20 21 22The following types of reservations are supported:23--------------------------------------------------24 25 - PR_WRITE_EXCLUSIVE26	Only the initiator that owns the reservation can write to the27	device.  Any initiator can read from the device.28 29 - PR_EXCLUSIVE_ACCESS30	Only the initiator that owns the reservation can access the31	device.32 33 - PR_WRITE_EXCLUSIVE_REG_ONLY34	Only initiators with a registered key can write to the device,35	Any initiator can read from the device.36 37 - PR_EXCLUSIVE_ACCESS_REG_ONLY38	Only initiators with a registered key can access the device.39 40 - PR_WRITE_EXCLUSIVE_ALL_REGS41 42	Only initiators with a registered key can write to the device,43	Any initiator can read from the device.44	All initiators with a registered key are considered reservation45	holders.46	Please reference the SPC spec on the meaning of a reservation47	holder if you want to use this type.48 49 - PR_EXCLUSIVE_ACCESS_ALL_REGS50	Only initiators with a registered key can access the device.51	All initiators with a registered key are considered reservation52	holders.53	Please reference the SPC spec on the meaning of a reservation54	holder if you want to use this type.55 56 57The following ioctl are supported:58----------------------------------59 601. IOC_PR_REGISTER61^^^^^^^^^^^^^^^^^^62 63This ioctl command registers a new reservation if the new_key argument64is non-null.  If no existing reservation exists old_key must be zero,65if an existing reservation should be replaced old_key must contain66the old reservation key.67 68If the new_key argument is 0 it unregisters the existing reservation passed69in old_key.70 71 722. IOC_PR_RESERVE73^^^^^^^^^^^^^^^^^74 75This ioctl command reserves the device and thus restricts access for other76devices based on the type argument.  The key argument must be the existing77reservation key for the device as acquired by the IOC_PR_REGISTER,78IOC_PR_REGISTER_IGNORE, IOC_PR_PREEMPT or IOC_PR_PREEMPT_ABORT commands.79 80 813. IOC_PR_RELEASE82^^^^^^^^^^^^^^^^^83 84This ioctl command releases the reservation specified by key and flags85and thus removes any access restriction implied by it.86 87 884. IOC_PR_PREEMPT89^^^^^^^^^^^^^^^^^90 91This ioctl command releases the existing reservation referred to by92old_key and replaces it with a new reservation of type for the93reservation key new_key.94 95 965. IOC_PR_PREEMPT_ABORT97^^^^^^^^^^^^^^^^^^^^^^^98 99This ioctl command works like IOC_PR_PREEMPT except that it also aborts100any outstanding command sent over a connection identified by old_key.101 1026. IOC_PR_CLEAR103^^^^^^^^^^^^^^^104 105This ioctl command unregisters both key and any other reservation key106registered with the device and drops any existing reservation.107 108 109Flags110-----111 112All the ioctls have a flag field.  Currently only one flag is supported:113 114 - PR_FL_IGNORE_KEY115	Ignore the existing reservation key.  This is commonly supported for116	IOC_PR_REGISTER, and some implementation may support the flag for117	IOC_PR_RESERVE.118 119For all unknown flags the kernel will return -EOPNOTSUPP.120