2.0.6 patch for io-cache pattern-matched non-caching

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello all,

here is a small feature patch. Its intention is to give the user more control
over the files performance/io-cache really caches. If the user knows exactly
which files should be cached and which shouldn't there is currently no way to
tell glusterfs _not_ to cache certain pattern. This patch allows you to
disable caching by setting the priority of a pattern to "0". If you do not
give any priority option it works just like before and caches everything.
Honestly I am not totally sure that disabling caching works the way we did it,
please comment.

-- 
Regards,
Stephan

--- glusterfs-2.0.6/xlators/performance/io-cache/src/io-cache.c	2009-08-14 01:32:51.000000000 +0200
+++ glusterfs-2.0.6-skraw/xlators/performance/io-cache/src/io-cache.c	2009-09-12 15:00:52.000000000 +0200
@@ -553,9 +553,14 @@
 	uint32_t            priority = 0;
 	struct ioc_priority *curr = NULL;
   
-	list_for_each_entry (curr, &table->priority_list, list) {
-		if (is_match (path, curr->pattern)) 
-			priority = curr->priority;
+	if (list_empty(&table->priority_list)) {
+		priority = 1;
+	}
+	else {
+		list_for_each_entry (curr, &table->priority_list, list) {
+			if (is_match (path, curr->pattern)) 
+				priority = curr->priority;
+		}
 	}
 
 	return priority;
@@ -581,7 +586,7 @@
 	ioc_table_t *table = NULL;
 	ioc_inode_t *ioc_inode = NULL;
 	inode_t     *inode = NULL;
-	uint32_t    weight = 0;
+	uint32_t    weight = 0xffffffff;
 	const char  *path = NULL;
 
         local = frame->local;
@@ -633,6 +638,13 @@
 			 */
 			fd_ctx_set (fd, this, 1);
 		}
+
+		/* weight = 0, we disable caching on it */
+		if (weight == 0) {
+			/* we allow a pattern-matched cache disable this way 
+			 */
+			fd_ctx_set (fd, this, 1);
+		}
 	}
 
 	FREE (local);
@@ -664,7 +676,7 @@
 	ioc_local_t *local = NULL;
 	ioc_table_t *table = NULL;
 	ioc_inode_t *ioc_inode = NULL;
-	uint32_t    weight = 0;
+	uint32_t    weight = 0xffffffff;
 	const char  *path = NULL;
 
         local = frame->local;
@@ -699,6 +711,12 @@
 			fd_ctx_set (fd, this, 1);
 		}
     
+		/* weight = 0, we disable caching on it */
+		if (weight == 0) {
+			/* we allow a pattern-matched cache disable this way 
+			 */
+			fd_ctx_set (fd, this, 1);
+		}
 	}
   
 	frame->local = NULL;

[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux