|
| 1 | +Share reservation |
| 2 | +----------------- |
| 3 | + |
| 4 | +Summary |
| 5 | +------- |
| 6 | + |
| 7 | +Share reservation allows `open` and `create` calls to place restrictions on |
| 8 | +modes that subsequent `open` or `create` operations on the same file can succeed |
| 9 | +with. This allows applications to place greater restriction on full files and |
| 10 | +reduces the byte range lock requests. Native support for share reservation in |
| 11 | +Gluster would allow us to provide better integration for share modes in SMB and |
| 12 | +share reservations in NFSv4. |
| 13 | + |
| 14 | +This is a pre-requisite for Multiprotocol support in Gluster. |
| 15 | + |
| 16 | +Owners |
| 17 | +------ |
| 18 | +|Name|Email| |
| 19 | +|----|-----| |
| 20 | +|Raghavendra Talur |<[email protected]>| |
| 21 | + |
| 22 | +|Rajesh Joseph |<[email protected]>| |
| 23 | +|Soumya Koduri |<[email protected]>| |
| 24 | + |
| 25 | + |
| 26 | +Current status |
| 27 | +-------------- |
| 28 | +Gluster currently does not provide this feature. |
| 29 | + |
| 30 | +Related Feature Requests and Bugs |
| 31 | +--------------------------------- |
| 32 | +Share reservation feature has been proposed and mentioned on the roadmap for |
| 33 | +[Gluster 3.8 release](https://www.gluster.org/community/roadmap/3.8/). A |
| 34 | +[Tracker bug](https://bugzilla.redhat.com/show_bug.cgi?id=1263231) has been |
| 35 | +filed for the feature and it has been added as a blocker to [3.8 release |
| 36 | +tracker](https://bugzilla.redhat.com/show_bug.cgi?id=1317278). |
| 37 | + |
| 38 | +Share reservation does not depend on any other feature requests. |
| 39 | + |
| 40 | +Detailed Description |
| 41 | +-------------------- |
| 42 | +Share reservation allows an application to open or create a file and gain rights |
| 43 | +that are equivalent to full file mandatory locks in an atomic way. Files can be |
| 44 | +reserved for exclusive write and exclusive read modes. Note the availability of |
| 45 | +exclusive read mode which is not possible using file locking semantics. |
| 46 | +Share modes will lead to two sets of operations to fail; one being subsequent |
| 47 | +operations which request for a mode which is not shared and other being the |
| 48 | +current operation which does not share a mode as part of create/open when some |
| 49 | +other operation is already using file in that mode. |
| 50 | + |
| 51 | +Benefit to GlusterFS |
| 52 | +-------------------- |
| 53 | + * Better integration with NFSv4 and SMB servers. |
| 54 | + * Applications written specifically for Gluster using libgfapi can use share |
| 55 | + reservations and reduce a lot of overhead with locking byte ranges. |
| 56 | + |
| 57 | +Scope |
| 58 | +----- |
| 59 | + |
| 60 | +#### Nature of proposed change |
| 61 | + |
| 62 | + * Addition of new xlator |
| 63 | + * Changes in volgen code |
| 64 | + |
| 65 | + |
| 66 | +#### Implications on manageability |
| 67 | + |
| 68 | + * Provide cli option enable/disable the xlator. |
| 69 | + * Provide cli interface to get list of files with share reservation flags. |
| 70 | + |
| 71 | +#### Implications on presentation layer |
| 72 | + |
| 73 | + * libgfapi will introduce a new glfs\_open\_extended to set share flags along |
| 74 | + with open. The same holds true for glfs\_create. |
| 75 | + * Samba and NFS-Ganesha would have to use the new API to use the feature. |
| 76 | + * FUSE will not expose this as the same is not available in VFS layer. |
| 77 | + |
| 78 | +#### Implications on persistence layer |
| 79 | + |
| 80 | + * None. |
| 81 | + |
| 82 | +#### Implications on 'GlusterFS' backend |
| 83 | + |
| 84 | + * None. |
| 85 | + |
| 86 | +#### Modification to GlusterFS metadata |
| 87 | + |
| 88 | + * None. |
| 89 | + |
| 90 | +#### Implications on 'glusterd' |
| 91 | + |
| 92 | + * New brick-op to be introduced to gather current share reservation flags from |
| 93 | + all bricks on all files to be presented through cli. |
| 94 | + |
| 95 | +How To Test |
| 96 | +----------- |
| 97 | + * Custom libgfapi programs written to execute all combinations of file opens |
| 98 | + and accesses with various share reservation flags. |
| 99 | + |
| 100 | +User Experience |
| 101 | +--------------- |
| 102 | + |
| 103 | + * Same as described in manageability section. |
| 104 | + |
| 105 | +Dependencies |
| 106 | +------------ |
| 107 | + |
| 108 | + * None. |
| 109 | + |
| 110 | +Documentation |
| 111 | +------------- |
| 112 | + |
| 113 | + * In works. |
| 114 | + |
| 115 | +Status |
| 116 | +------ |
| 117 | + |
| 118 | + * In design, is up for [review](http://review.gluster.org/#/c/13779) |
| 119 | + |
| 120 | +Comments and Discussion |
| 121 | +----------------------- |
| 122 | + |
| 123 | +*Follow here* |
| 124 | + |
| 125 | + |
0 commit comments