All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suresh Jayaraman <sjayaraman-l3A5Bk7waGM@public.gmane.org>
To: Steve French <smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-cachefs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH 04/09] cifs: define superblock-level cache index objects and register them
Date: Mon,  5 Jul 2010 18:12:27 +0530	[thread overview]
Message-ID: <1278333747-30651-1-git-send-email-sjayaraman@suse.de> (raw)
In-Reply-To: <Yes>

Define superblock-level cache index objects (managed by cifsTconInfo structs).
Each superblock object is created in a server-level index object and in itself
an index into which inode-level objects are inserted.

The superblock object is keyed by sharename. The UniqueId/IndexNumber is used to
validate that the exported share is the same since we accessed it last time.

Signed-off-by: Suresh Jayaraman <sjayaraman-l3A5Bk7waGM@public.gmane.org>
---
 fs/cifs/cache.c    |  109 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 fs/cifs/cifsglob.h |    4 +
 fs/cifs/connect.c  |    3 +
 fs/cifs/fscache.c  |   17 ++++++++
 fs/cifs/fscache.h  |    6 ++
 fs/cifs/inode.c    |    3 +
 6 files changed, 142 insertions(+)

Index: cifs-2.6/fs/cifs/cache.c
===================================================================
--- cifs-2.6.orig/fs/cifs/cache.c
+++ cifs-2.6/fs/cifs/cache.c
@@ -106,3 +106,112 @@ const struct fscache_cookie_def cifs_fsc
 	.type = FSCACHE_COOKIE_TYPE_INDEX,
 	.get_key = cifs_server_get_key,
 };
+
+/*
+ * Auxiliary data attached to CIFS superblock within the cache
+ */
+struct cifs_fscache_super_auxdata {
+	u64	resource_id;		/* unique server resource id */
+};
+
+static char *extract_sharename(const char *treename)
+{
+	const char *src;
+	char *delim, *dst;
+	int len;
+
+	/* skip double chars at the beginning */
+	src = treename + 2;
+
+	/* share name is always preceded by '\\' now */
+	delim = strchr(src, '\\');
+	if (!delim)
+		return ERR_PTR(-EINVAL);
+	delim++;
+	len = strlen(delim);
+
+	/* caller has to free the memory */
+	dst = kstrndup(delim, len, GFP_KERNEL);
+	if (!dst)
+		return ERR_PTR(-ENOMEM);
+
+	return dst;
+}
+
+/*
+ * Superblock object currently keyed by share name
+ */
+static uint16_t cifs_super_get_key(const void *cookie_netfs_data, void *buffer,
+				   uint16_t maxbuf)
+{
+	const struct cifsTconInfo *tcon = cookie_netfs_data;
+	char *sharename;
+	uint16_t len;
+
+	sharename = extract_sharename(tcon->treeName);
+	if (IS_ERR(sharename)) {
+		cFYI(1, "CIFS: couldn't extract sharename\n");
+		sharename = NULL;
+		return 0;
+	}
+
+	len = strlen(sharename);
+	if (len > maxbuf)
+		return 0;
+
+	memcpy(buffer, sharename, len);
+
+	kfree(sharename);
+
+	return len;
+}
+
+static uint16_t
+cifs_fscache_super_get_aux(const void *cookie_netfs_data, void *buffer,
+			   uint16_t maxbuf)
+{
+	struct cifs_fscache_super_auxdata auxdata;
+	const struct cifsTconInfo *tcon = cookie_netfs_data;
+
+	memset(&auxdata, 0, sizeof(auxdata));
+	auxdata.resource_id = tcon->resource_id;
+
+	if (maxbuf > sizeof(auxdata))
+		maxbuf = sizeof(auxdata);
+
+	memcpy(buffer, &auxdata, maxbuf);
+
+	return maxbuf;
+}
+
+static enum
+fscache_checkaux cifs_fscache_super_check_aux(void *cookie_netfs_data,
+					      const void *data,
+					      uint16_t datalen)
+{
+	struct cifs_fscache_super_auxdata auxdata;
+	const struct cifsTconInfo *tcon = cookie_netfs_data;
+
+	if (datalen != sizeof(auxdata))
+		return FSCACHE_CHECKAUX_OBSOLETE;
+
+	memset(&auxdata, 0, sizeof(auxdata));
+	auxdata.resource_id = tcon->resource_id;
+
+	if (memcmp(data, &auxdata, datalen) != 0)
+		return FSCACHE_CHECKAUX_OBSOLETE;
+
+	return FSCACHE_CHECKAUX_OKAY;
+}
+
+/*
+ * Superblock object for FS-Cache
+ */
+const struct fscache_cookie_def cifs_fscache_super_index_def = {
+	.name = "CIFS.super",
+	.type = FSCACHE_COOKIE_TYPE_INDEX,
+	.get_key = cifs_super_get_key,
+	.get_aux = cifs_fscache_super_get_aux,
+	.check_aux = cifs_fscache_super_check_aux,
+};
+
Index: cifs-2.6/fs/cifs/fscache.c
===================================================================
--- cifs-2.6.orig/fs/cifs/fscache.c
+++ cifs-2.6/fs/cifs/fscache.c
@@ -39,3 +39,20 @@ void cifs_fscache_release_client_cookie(
 	server->fscache = NULL;
 }
 
+void cifs_fscache_get_super_cookie(struct cifsTconInfo *tcon)
+{
+	struct TCP_Server_Info *server = tcon->ses->server;
+
+	tcon->fscache =
+		fscache_acquire_cookie(server->fscache,
+				&cifs_fscache_super_index_def, tcon);
+	cFYI(1, "CIFS: get superblock cookie (0x%p/0x%p)",
+				server->fscache, tcon->fscache);
+}
+
+void cifs_fscache_release_super_cookie(struct cifsTconInfo *tcon)
+{
+	cFYI(1, "CIFS: releasing superblock cookie (0x%p)", tcon->fscache);
+	fscache_relinquish_cookie(tcon->fscache, 0);
+	tcon->fscache = NULL;
+}
Index: cifs-2.6/fs/cifs/fscache.h
===================================================================
--- cifs-2.6.orig/fs/cifs/fscache.h
+++ cifs-2.6/fs/cifs/fscache.h
@@ -29,6 +29,7 @@
 
 extern struct fscache_netfs cifs_fscache_netfs;
 extern const struct fscache_cookie_def cifs_fscache_server_index_def;
+extern const struct fscache_cookie_def cifs_fscache_super_index_def;
 
 extern int cifs_fscache_register(void);
 extern void cifs_fscache_unregister(void);
@@ -38,6 +39,8 @@ extern void cifs_fscache_unregister(void
  */
 extern void cifs_fscache_get_client_cookie(struct TCP_Server_Info *);
 extern void cifs_fscache_release_client_cookie(struct TCP_Server_Info *);
+extern void cifs_fscache_get_super_cookie(struct cifsTconInfo *);
+extern void cifs_fscache_release_super_cookie(struct cifsTconInfo *);
 
 #else /* CONFIG_CIFS_FSCACHE */
 static inline int cifs_fscache_register(void) { return 0; }
@@ -47,6 +50,9 @@ static inline void
 cifs_fscache_get_client_cookie(struct TCP_Server_Info *server) {}
 static inline void
 cifs_fscache_get_client_cookie(struct TCP_Server_Info *server); {}
+static inline void cifs_fscache_get_super_cookie(struct cifsTconInfo *tcon) {}
+static inline void
+cifs_fscache_release_super_cookie(struct cifsTconInfo *tcon) {}
 
 #endif /* CONFIG_CIFS_FSCACHE */
 
Index: cifs-2.6/fs/cifs/cifsglob.h
===================================================================
--- cifs-2.6.orig/fs/cifs/cifsglob.h
+++ cifs-2.6/fs/cifs/cifsglob.h
@@ -314,6 +314,10 @@ struct cifsTconInfo {
 	bool local_lease:1; /* check leases (only) on local system not remote */
 	bool broken_posix_open; /* e.g. Samba server versions < 3.3.2, 3.2.9 */
 	bool need_reconnect:1; /* connection reset, tid now invalid */
+#ifdef CONFIG_CIFS_FSCACHE
+	u64 resource_id;		/* server resource id */
+	struct fscache_cookie *fscache;	/* cookie for share */
+#endif
 	/* BB add field for back pointer to sb struct(s)? */
 };
 
Index: cifs-2.6/fs/cifs/connect.c
===================================================================
--- cifs-2.6.orig/fs/cifs/connect.c
+++ cifs-2.6/fs/cifs/connect.c
@@ -1779,6 +1779,7 @@ cifs_put_tcon(struct cifsTconInfo *tcon)
 	_FreeXid(xid);
 
 	tconInfoFree(tcon);
+	cifs_fscache_release_super_cookie(tcon);
 	cifs_put_smb_ses(ses);
 }
 
@@ -1848,6 +1849,8 @@ cifs_get_tcon(struct cifsSesInfo *ses, s
 	list_add(&tcon->tcon_list, &ses->tcon_list);
 	write_unlock(&cifs_tcp_ses_lock);
 
+	cifs_fscache_get_super_cookie(tcon);
+
 	return tcon;
 
 out_fail:
Index: cifs-2.6/fs/cifs/inode.c
===================================================================
--- cifs-2.6.orig/fs/cifs/inode.c
+++ cifs-2.6/fs/cifs/inode.c
@@ -807,6 +807,9 @@ struct inode *cifs_root_iget(struct supe
 	if (!inode)
 		return ERR_PTR(-ENOMEM);
 
+	/* populate tcon->resource_id */
+	cifs_sb->tcon->resource_id = CIFS_I(inode)->uniqueid;
+
 	if (rc && cifs_sb->tcon->ipc) {
 		cFYI(1, "ipc connection - fake read inode");
 		inode->i_mode |= S_IFDIR;

  parent reply	other threads:[~2010-07-05 12:42 UTC|newest]

Thread overview: 265+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Yes>
2010-07-05 12:41 ` [PATCH 00/09] cifs: local caching support using FS-Cache Suresh Jayaraman
     [not found]   ` <1278333663-30464-1-git-send-email-sjayaraman-l3A5Bk7waGM@public.gmane.org>
2010-07-14 17:41     ` Scott Lovenberg
     [not found]       ` <4C3DF6BF.3070001-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2010-07-14 18:09         ` Steve French
     [not found]           ` <AANLkTin2tKtkWTflrrzBMYBEd6SFr35uYUl1SmfYlj9W-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-15 16:23             ` Suresh Jayaraman
     [not found]               ` <4C3F35F7.8060408-l3A5Bk7waGM@public.gmane.org>
2010-07-22  9:28                 ` Suresh Jayaraman
     [not found]               ` <4C480F51.8070204-l3A5Bk7waGM@public.gmane.org>
2010-07-22 17:40                 ` David Howells
     [not found]                   ` <1892.1279820400-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-07-22 19:12                     ` Jeff Layton
2010-07-22 22:49                     ` Andreas Dilger
2010-07-23  8:35                       ` Stef Bon
     [not found]                         ` <AANLkTikF5Oz5pobaPUJebUg+yPuoVy_B5PBz+nuUTSii-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-23 16:16                           ` Suresh Jayaraman
2010-07-24  5:40                             ` Stef Bon
2010-07-23 11:57                     ` Suresh Jayaraman
     [not found]                       ` <4C4983B0.5080804-l3A5Bk7waGM@public.gmane.org>
2010-07-23 15:03                         ` Steve French
2010-07-30 23:08                 ` Scott Lovenberg
2010-07-05 12:41 ` [PATCH 01/09] cifs: add kernel config option for CIFS Client caching support Suresh Jayaraman
2010-07-05 12:41 ` [PATCH 02/09] cifs: register CIFS for caching Suresh Jayaraman
2010-07-05 12:42 ` [PATCH 03/09] cifs: define server-level cache index objects and register them Suresh Jayaraman
2010-07-05 12:42 ` Suresh Jayaraman [this message]
2010-07-20 12:53   ` [PATCH 04/09] cifs: define superblock-level " Jeff Layton
     [not found]     ` <20100720085327.4d1bf9d7-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2010-07-20 13:37       ` Jeff Layton
     [not found]         ` <20100720093722.4f734f03-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2010-07-21 14:06           ` Suresh Jayaraman
2010-07-05 12:42 ` [PATCH 05/09] cifs: define inode-level cache object " Suresh Jayaraman
2010-07-05 12:43 ` [PATCH 06/09] cifs: FS-Cache page management Suresh Jayaraman
2010-07-05 12:43 ` [PATCH 07/09] cifs: store pages into local cache Suresh Jayaraman
2010-07-05 12:43 ` [PATCH 08/09] cifs: read pages from FS-Cache Suresh Jayaraman
2010-07-05 12:43 ` [PATCH 09/09] cifs: add mount option to enable local caching Suresh Jayaraman
2010-12-20 22:18 ` [PATCH v2] TODO: CDMA SMS and CDMA CMAS Lei Yu
2010-12-20 22:34   ` Denis Kenzior
2012-07-16 16:14 ` [PATCH 1/3] mm: correct return value of migrate_pages() Joonsoo Kim
2012-07-16 16:14   ` Joonsoo Kim
2012-07-16 16:14   ` [PATCH 2/3] mm: fix possible incorrect return value of migrate_pages() syscall Joonsoo Kim
2012-07-16 16:14     ` Joonsoo Kim
2012-07-16 17:26     ` Christoph Lameter
2012-07-16 17:26       ` Christoph Lameter
2012-07-16 17:40     ` Michal Nazarewicz
2012-07-16 17:59       ` JoonSoo Kim
2012-07-16 17:59         ` JoonSoo Kim
2012-07-17 13:02         ` Michal Nazarewicz
2012-07-17 13:02           ` Michal Nazarewicz
2012-07-16 16:14   ` [PATCH 3/3] mm: fix return value in __alloc_contig_migrate_range() Joonsoo Kim
2012-07-16 16:14     ` Joonsoo Kim
2012-07-16 17:29     ` Christoph Lameter
2012-07-16 17:29       ` Christoph Lameter
2012-07-16 17:40     ` Michal Nazarewicz
2012-07-16 18:40       ` JoonSoo Kim
2012-07-16 18:40         ` JoonSoo Kim
2012-07-17 13:16         ` Michal Nazarewicz
2012-07-17 13:16           ` Michal Nazarewicz
2012-07-16 17:14   ` [PATCH 4] mm: fix possible incorrect return value of move_pages() syscall Joonsoo Kim
2012-07-16 17:14     ` Joonsoo Kim
2012-07-16 17:30     ` Christoph Lameter
2012-07-16 17:30       ` Christoph Lameter
2012-07-16 17:23   ` [PATCH 1/3] mm: correct return value of migrate_pages() Christoph Lameter
2012-07-16 17:23     ` Christoph Lameter
2012-07-16 17:32     ` JoonSoo Kim
2012-07-16 17:32       ` JoonSoo Kim
2012-07-16 17:37       ` Christoph Lameter
2012-07-16 17:37         ` Christoph Lameter
2012-07-16 17:40   ` Michal Nazarewicz
2012-07-16 17:57     ` JoonSoo Kim
2012-07-16 17:57       ` JoonSoo Kim
2012-07-16 18:05       ` Christoph Lameter
2012-07-16 18:05         ` Christoph Lameter
2012-07-17 12:33 ` [PATCH 1/4 v2] mm: correct return value of migrate_pages() and migrate_huge_pages() Joonsoo Kim
2012-07-17 12:33   ` Joonsoo Kim
2012-07-17 12:33   ` [PATCH 2/4 v2] mm: fix possible incorrect return value of migrate_pages() syscall Joonsoo Kim
2012-07-17 12:33     ` Joonsoo Kim
2012-07-17 14:28     ` Christoph Lameter
2012-07-17 14:28       ` Christoph Lameter
2012-07-17 15:41       ` JoonSoo Kim
2012-07-17 15:41         ` JoonSoo Kim
2012-07-17 12:33   ` [PATCH 3/4 v2] mm: fix return value in __alloc_contig_migrate_range() Joonsoo Kim
2012-07-17 12:33     ` Joonsoo Kim
2012-07-17 13:25     ` Michal Nazarewicz
2012-07-17 13:25       ` Michal Nazarewicz
2012-07-17 15:45       ` JoonSoo Kim
2012-07-17 15:45         ` JoonSoo Kim
2012-07-17 15:49         ` [PATCH 3/4 v3] " Joonsoo Kim
2012-07-17 15:49           ` Joonsoo Kim
2012-07-17 12:33   ` [PATCH 4/4 v2] mm: fix possible incorrect return value of move_pages() syscall Joonsoo Kim
2012-07-17 12:33     ` Joonsoo Kim
2012-07-27 17:55 ` [RESEND PATCH 1/4 v3] mm: correct return value of migrate_pages() and migrate_huge_pages() Joonsoo Kim
2012-07-27 17:55   ` Joonsoo Kim
2012-07-27 17:55   ` [RESEND PATCH 2/4 v3] mm: fix possible incorrect return value of migrate_pages() syscall Joonsoo Kim
2012-07-27 17:55     ` Joonsoo Kim
2012-07-27 20:57     ` Christoph Lameter
2012-07-27 20:57       ` Christoph Lameter
2012-07-28  6:16       ` JoonSoo Kim
2012-07-28  6:16         ` JoonSoo Kim
2012-07-30 19:30         ` Christoph Lameter
2012-07-30 19:30           ` Christoph Lameter
2012-07-27 17:55   ` [RESEND PATCH 3/4 v3] mm: fix return value in __alloc_contig_migrate_range() Joonsoo Kim
2012-07-27 17:55     ` Joonsoo Kim
2012-07-27 17:55   ` [RESEND PATCH 4/4 v3] mm: fix possible incorrect return value of move_pages() syscall Joonsoo Kim
2012-07-27 17:55     ` Joonsoo Kim
2012-07-27 20:54     ` Christoph Lameter
2012-07-27 20:54       ` Christoph Lameter
2012-07-28  6:09       ` JoonSoo Kim
2012-07-28  6:09         ` JoonSoo Kim
2012-07-30 19:29         ` Christoph Lameter
2012-07-30 19:29           ` Christoph Lameter
2012-07-31  3:34           ` JoonSoo Kim
2012-07-31  3:34             ` JoonSoo Kim
2012-07-31 14:04             ` Christoph Lameter
2012-07-31 14:04               ` Christoph Lameter
2012-08-01  5:15           ` Michael Kerrisk
2012-08-01 18:00             ` Christoph Lameter
2012-08-01 18:00               ` Christoph Lameter
2012-08-02  5:52               ` Michael Kerrisk
2012-08-02  5:52                 ` Michael Kerrisk
2012-08-13 16:17 ` [PATCH 1/5] workqueue: use enum value to set array size of pools in gcwq Joonsoo Kim
2012-08-13 16:17   ` [PATCH 2/5] workqueue: change value of lcpu in queue_delayed_work_on() Joonsoo Kim
2012-08-13 16:32     ` Tejun Heo
2012-08-13 16:54       ` JoonSoo Kim
2012-08-13 17:03         ` Tejun Heo
2012-08-13 17:43           ` JoonSoo Kim
2012-08-13 18:00             ` Tejun Heo
2012-08-14 18:04               ` JoonSoo Kim
2012-08-13 16:17   ` [PATCH 3/5] workqueue: introduce system_highpri_wq Joonsoo Kim
2012-08-13 16:17   ` [PATCH 4/5] workqueue: use system_highpri_wq for highpri workers in rebind_workers() Joonsoo Kim
2012-08-13 16:34     ` Tejun Heo
2012-08-13 16:57       ` JoonSoo Kim
2012-08-13 17:05         ` Tejun Heo
2012-08-13 17:45           ` JoonSoo Kim
2012-08-13 16:17   ` [PATCH 5/5] workqueue: use system_highpri_wq for unbind_work Joonsoo Kim
2012-08-13 16:36     ` Tejun Heo
2012-08-13 17:02       ` JoonSoo Kim
2012-08-13 17:07         ` Tejun Heo
2012-08-13 17:52           ` JoonSoo Kim
2012-08-14 18:10 ` [PATCH v2 0/6] system_highpri_wq Joonsoo Kim
2012-08-14 18:10   ` [PATCH v2 1/6] workqueue: use enum value to set array size of pools in gcwq Joonsoo Kim
2012-08-14 18:10   ` [PATCH v2 2/6] workqueue: correct req_cpu in trace_workqueue_queue_work() Joonsoo Kim
2012-08-14 18:34     ` Tejun Heo
2012-08-14 18:56       ` JoonSoo Kim
2012-08-14 18:10   ` [PATCH v2 3/6] workqueue: change value of lcpu in __queue_delayed_work_on() Joonsoo Kim
2012-08-14 19:00     ` Tejun Heo
2012-08-14 18:10   ` [PATCH v2 4/6] workqueue: introduce system_highpri_wq Joonsoo Kim
2012-08-14 18:10   ` [PATCH v2 5/6] workqueue: use system_highpri_wq for highpri workers in rebind_workers() Joonsoo Kim
2012-08-14 18:29     ` Tejun Heo
2012-08-14 18:10   ` [PATCH v2 6/6] workqueue: use system_highpri_wq for unbind_work Joonsoo Kim
2012-08-15 14:25 ` [PATCH v3 0/6] system_highpri_wq Joonsoo Kim
2012-08-15 14:25   ` [PATCH v3 1/6] workqueue: use enum value to set array size of pools in gcwq Joonsoo Kim
2012-08-15 14:25   ` [PATCH v3 2/6] workqueue: correct req_cpu in trace_workqueue_queue_work() Joonsoo Kim
2012-08-15 14:25   ` [PATCH v3 3/6] workqueue: change value of lcpu in __queue_delayed_work_on() Joonsoo Kim
2012-08-15 14:25   ` [PATCH v3 4/6] workqueue: introduce system_highpri_wq Joonsoo Kim
2012-08-15 14:25   ` [PATCH v3 5/6] workqueue: use system_highpri_wq for highpri workers in rebind_workers() Joonsoo Kim
2012-08-15 14:25   ` [PATCH v3 6/6] workqueue: use system_highpri_wq for unbind_work Joonsoo Kim
2012-08-16 21:22   ` [PATCH v3 0/6] system_highpri_wq Tejun Heo
2012-08-17 13:38     ` JoonSoo Kim
2012-08-24 16:05 ` [PATCH 1/2] slub: rename cpu_partial to max_cpu_object Joonsoo Kim
2012-08-24 16:05   ` Joonsoo Kim
2012-08-24 16:05   ` [PATCH 2/2] slub: correct the calculation of the number of cpu objects in get_partial_node Joonsoo Kim
2012-08-24 16:05     ` Joonsoo Kim
2012-08-24 16:15     ` Christoph Lameter
2012-08-24 16:15       ` Christoph Lameter
2012-08-24 16:28       ` JoonSoo Kim
2012-08-24 16:28         ` JoonSoo Kim
2012-08-24 16:31         ` Christoph Lameter
2012-08-24 16:31           ` Christoph Lameter
2012-08-24 16:40           ` JoonSoo Kim
2012-08-24 16:40             ` JoonSoo Kim
2012-08-24 16:12   ` [PATCH 1/2] slub: rename cpu_partial to max_cpu_object Christoph Lameter
2012-08-24 16:12     ` Christoph Lameter
2012-08-25 14:11 ` [PATCH 1/2] slab: do ClearSlabPfmemalloc() for all pages of slab Joonsoo Kim
2012-08-25 14:11   ` Joonsoo Kim
2012-08-25 14:11   ` [PATCH 2/2] slab: fix starting index for finding another object Joonsoo Kim
2012-08-25 14:11     ` Joonsoo Kim
2012-09-03 10:08   ` [PATCH 1/2] slab: do ClearSlabPfmemalloc() for all pages of slab Mel Gorman
2012-09-03 10:08     ` Mel Gorman
2012-10-18 23:18 ` [PATCH 0/2] clean-up initialization of deferrable timer Joonsoo Kim
2012-10-18 23:18   ` [PATCH 1/2] timer: add setup_timer_deferrable() macro Joonsoo Kim
2012-10-18 23:18   ` [PATCH 2/2] timer: use new " Joonsoo Kim
2012-10-26 14:08   ` [PATCH 0/2] clean-up initialization of deferrable timer JoonSoo Kim
2012-10-20 15:48 ` [PATCH for-v3.7 1/2] slub: optimize poorly inlined kmalloc* functions Joonsoo Kim
2012-10-20 15:48   ` Joonsoo Kim
2012-10-20 15:48   ` [PATCH for-v3.7 2/2] slub: optimize kmalloc* inlining for GFP_DMA Joonsoo Kim
2012-10-20 15:48     ` Joonsoo Kim
2012-10-22 14:31     ` Christoph Lameter
2012-10-22 14:31       ` Christoph Lameter
2012-10-23  2:29       ` JoonSoo Kim
2012-10-23  2:29         ` JoonSoo Kim
2012-10-23  6:16         ` Eric Dumazet
2012-10-23  6:16           ` Eric Dumazet
2012-10-23 16:12           ` JoonSoo Kim
2012-10-23 16:12             ` JoonSoo Kim
2012-10-24  8:05   ` [PATCH for-v3.7 1/2] slub: optimize poorly inlined kmalloc* functions Pekka Enberg
2012-10-24  8:05     ` Pekka Enberg
2012-10-24 13:36     ` Christoph Lameter
2012-10-24 13:36       ` Christoph Lameter
2012-10-20 16:30 ` [PATCH 0/3] workqueue: minor cleanup Joonsoo Kim
2012-10-20 16:30   ` [PATCH 1/3] workqueue: optimize mod_delayed_work_on() when @delay == 0 Joonsoo Kim
2012-10-20 16:30   ` [PATCH 2/3] workqueue: trivial fix for return statement in work_busy() Joonsoo Kim
2012-10-20 22:53     ` Tejun Heo
2012-10-20 16:30   ` [PATCH 3/3] workqueue: remove unused argument of wq_worker_waking_up() Joonsoo Kim
2012-10-20 22:57     ` Tejun Heo
2012-10-23  1:44       ` JoonSoo Kim
2012-10-24 19:14         ` Tejun Heo
2012-10-28 19:12 ` [PATCH 0/5] minor clean-up and optimize highmem related code Joonsoo Kim
2012-10-28 19:12   ` Joonsoo Kim
2012-10-28 19:12   ` [PATCH 1/5] mm, highmem: use PKMAP_NR() to calculate an index of pkmap Joonsoo Kim
2012-10-28 19:12     ` Joonsoo Kim
2012-10-29  1:48     ` Minchan Kim
2012-10-29  1:48       ` Minchan Kim
2012-10-28 19:12   ` [PATCH 2/5] mm, highmem: remove useless pool_lock Joonsoo Kim
2012-10-28 19:12     ` Joonsoo Kim
2012-10-29  1:52     ` Minchan Kim
2012-10-29  1:52       ` Minchan Kim
2012-10-30 21:31     ` Andrew Morton
2012-10-30 21:31       ` Andrew Morton
2012-10-31  5:14       ` Minchan Kim
2012-10-31  5:14         ` Minchan Kim
2012-10-31 15:01       ` JoonSoo Kim
2012-10-31 15:01         ` JoonSoo Kim
2012-10-28 19:12   ` [PATCH 3/5] mm, highmem: remove page_address_pool list Joonsoo Kim
2012-10-28 19:12     ` Joonsoo Kim
2012-10-29  1:57     ` Minchan Kim
2012-10-29  1:57       ` Minchan Kim
2012-10-28 19:12   ` [PATCH 4/5] mm, highmem: makes flush_all_zero_pkmaps() return index of last flushed entry Joonsoo Kim
2012-10-28 19:12     ` Joonsoo Kim
2012-10-29  2:06     ` Minchan Kim
2012-10-29  2:06       ` Minchan Kim
2012-10-29 13:12       ` JoonSoo Kim
2012-10-29 13:12         ` JoonSoo Kim
2012-10-28 19:12   ` [PATCH 5/5] mm, highmem: get virtual address of the page using PKMAP_ADDR() Joonsoo Kim
2012-10-28 19:12     ` Joonsoo Kim
2012-10-29  2:09     ` Minchan Kim
2012-10-29  2:09       ` Minchan Kim
2012-10-29  2:12   ` [PATCH 0/5] minor clean-up and optimize highmem related code Minchan Kim
2012-10-29  2:12     ` Minchan Kim
2012-10-29 13:15     ` JoonSoo Kim
2012-10-29 13:15       ` JoonSoo Kim
2012-10-31 17:11       ` JoonSoo Kim
2012-10-31 17:11         ` JoonSoo Kim
2012-10-31 16:56 ` [PATCH v2 " Joonsoo Kim
2012-10-31 16:56   ` Joonsoo Kim
2012-10-31 16:56   ` [PATCH v2 1/5] mm, highmem: use PKMAP_NR() to calculate an index of pkmap Joonsoo Kim
2012-10-31 16:56     ` Joonsoo Kim
2012-10-31 16:56   ` [PATCH v2 2/5] mm, highmem: remove useless pool_lock Joonsoo Kim
2012-10-31 16:56     ` Joonsoo Kim
2012-10-31 16:56   ` [PATCH v2 3/5] mm, highmem: remove page_address_pool list Joonsoo Kim
2012-10-31 16:56     ` Joonsoo Kim
2012-10-31 16:56   ` [PATCH v2 4/5] mm, highmem: makes flush_all_zero_pkmaps() return index of first flushed entry Joonsoo Kim
2012-10-31 16:56     ` Joonsoo Kim
2012-11-01  5:03     ` Minchan Kim
2012-11-01  5:03       ` Minchan Kim
2012-11-02 19:07       ` JoonSoo Kim
2012-11-02 19:07         ` JoonSoo Kim
2012-11-02 22:42         ` Minchan Kim
2012-11-02 22:42           ` Minchan Kim
2012-11-13  0:30           ` JoonSoo Kim
2012-11-13  0:30             ` JoonSoo Kim
2012-11-13 12:49             ` Minchan Kim
2012-11-13 12:49               ` Minchan Kim
2012-11-13 14:12               ` JoonSoo Kim
2012-11-13 14:12                 ` JoonSoo Kim
2012-11-13 15:01                 ` Minchan Kim
2012-11-13 15:01                   ` Minchan Kim
2012-11-14 17:09                   ` JoonSoo Kim
2012-11-14 17:09                     ` JoonSoo Kim
2012-11-19 23:46                     ` Minchan Kim
2012-11-19 23:46                       ` Minchan Kim
2012-11-27 15:01                       ` JoonSoo Kim
2012-11-27 15:01                         ` JoonSoo Kim
2012-10-31 16:56   ` [PATCH v2 5/5] mm, highmem: get virtual address of the page using PKMAP_ADDR() Joonsoo Kim
2012-10-31 16:56     ` Joonsoo Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1278333747-30651-1-git-send-email-sjayaraman@suse.de \
    --to=sjayaraman-l3a5bk7wagm@public.gmane.org \
    --cc=dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=linux-cachefs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.