summaryrefslogtreecommitdiffstats
path: root/doc/features
diff options
context:
space:
mode:
authorSoumya Koduri <skoduri@redhat.com>2015-05-04 17:01:18 +0530
committerKaleb KEITHLEY <kkeithle@redhat.com>2015-05-04 05:08:30 -0700
commit6a898e9e294bc4c254bb2c29e0514dbe5a81226c (patch)
tree5633314c384ff97434456211b321443b849d5d44 /doc/features
parentdc0020c72d5c2d20328b89224b149ebb87002277 (diff)
Upcall: Feature doc for Upcall infrastrucutre
Change-Id: I802ba2f13fde6c05da1ed355e340f071e9d20d30 BUG: 1200262 Signed-off-by: Soumya Koduri <skoduri@redhat.com> Reviewed-on: http://review.gluster.org/10525 Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'doc/features')
-rw-r--r--doc/features/upcall.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/doc/features/upcall.md b/doc/features/upcall.md
new file mode 100644
index 00000000000..894bd54264d
--- /dev/null
+++ b/doc/features/upcall.md
@@ -0,0 +1,33 @@
+## Upcall ##
+
+### Summary ###
+A generic and extensible framework, used to maintain states in the glusterfsd process for each of the files accessed (including the clients info doing the fops) and send notifications to the respective glusterfs clients incase of any change in that state.
+
+Few of the use-cases (currently using) this infrastructure are:
+
+ Inode Update/Invalidation
+
+### Detailed Description ###
+GlusterFS, a scale-out storage platform, comprises of distributed file system which follows client-server architectural model.
+
+Its the client(glusterfs) which usually initiates an rpc request to the server(glusterfsd). After processing the request, reply is sent to the client as response to the same request. So till now, there was no interface and use-case present for the server to intimate or make a request to the client.
+
+This support is now being added using “Upcall Infrastructure”.
+
+A new xlator(Upcall) has been defined to maintain and process state of the events which require server to send upcall notifications. For each I/O on a inode, we create/update a ‘upcall_inode_ctx’ and store/update the list of clients’ info ‘upcall_client_t’ in the context.
+
+#### Cache Invalidation ####
+Each of the GlusterFS clients/applications cache certain state of the files (for eg, inode or attributes). In a muti-node environment these caches could lead to data-integrity issues, for certain time, if there are multiple clients accessing the same file simulataneously.
+To avoid such scenarios, we need server to notify clients incase of any change in the file state/attributes.
+
+More details can be found in the below links -
+ http://www.gluster.org/community/documentation/index.php/Features/Upcall-infrastructure
+ https://soumyakoduri.wordpress.com/2015/02/25/glusterfs-understanding-upcall-infrastructure-and-cache-invalidation-support/
+
+cache-invalidation is currently disabled by default. It can be enabled with the following command:
+
+ gluster volume set <volname> features.cache-invalidation on
+
+Note: This upcall notification is sent to only those clients which have accessed the file recently (i.e, with in CACHE_INVALIDATE_PERIOD – default 60sec). This options can be tuned using the following command:
+
+ gluster volume set <volname> features.cache-invalidation-timeout <value>