mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 03:48:10 +01:00
104 lines
4.4 KiB
Text
104 lines
4.4 KiB
Text
|
From: Suresh Jayaraman <sjayaraman-l3A5Bk7waGM@public.gmane.org>
|
||
|
Subject: [RFC][PATCH 00/10] cifs: local caching support using FS-Cache
|
||
|
Date: Tue, 22 Jun 2010 20:50:05 +0530
|
||
|
Lines: 66
|
||
|
Message-ID: <1277220005-3322-1-git-send-email-sjayaraman@suse.de>
|
||
|
References: <yes>
|
||
|
Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
|
||
|
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
|
||
|
To: Steve French <smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
|
||
|
X-From: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Tue Jun 22 17:40:38 2010
|
||
|
Return-path: <linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
|
||
|
Envelope-to: glkc-linux-cifs-1dZseelyfdZg9hUCZPvPmw@public.gmane.org
|
||
|
Received: from vger.kernel.org ([209.132.180.67])
|
||
|
by lo.gmane.org with esmtp (Exim 4.69)
|
||
|
(envelope-from <linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>)
|
||
|
id 1OR5aY-00055O-BD
|
||
|
for glkc-linux-cifs-1dZseelyfdZg9hUCZPvPmw@public.gmane.org; Tue, 22 Jun 2010 17:40:38 +0200
|
||
|
Received: (majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org) by vger.kernel.org via listexpand
|
||
|
id S1751889Ab0FVPkf (ORCPT <rfc822;glkc-linux-cifs@m.gmane.org>);
|
||
|
Tue, 22 Jun 2010 11:40:35 -0400
|
||
|
Received: from victor.provo.novell.com ([137.65.250.26]:50040 "EHLO
|
||
|
victor.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||
|
with ESMTP id S1751554Ab0FVPkf (ORCPT
|
||
|
<rfc822;groupwise-SJayaraman-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org:0:0>);
|
||
|
Tue, 22 Jun 2010 11:40:35 -0400
|
||
|
Received: from localhost (prv-ext-foundry1int.gns.novell.com [137.65.251.240])
|
||
|
by victor.provo.novell.com with ESMTP; Tue, 22 Jun 2010 09:20:07 -0600
|
||
|
X-Mailer: git-send-email 1.6.4.2
|
||
|
In-Reply-To: <yes>
|
||
|
Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
|
||
|
Precedence: bulk
|
||
|
List-ID: <linux-cifs.vger.kernel.org>
|
||
|
X-Mailing-List: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
|
||
|
Archived-At: <http://permalink.gmane.org/gmane.linux.kernel/1001756>
|
||
|
|
||
|
This patchset is a first stab at adding persistent, local caching facility for
|
||
|
CIFS using the FS-Cache interface.
|
||
|
|
||
|
The index hierarchy which is mainly used to locate a file object or discard
|
||
|
a certain subset of the files cached, currently has three levels:
|
||
|
- Server
|
||
|
- Share
|
||
|
- File
|
||
|
|
||
|
The server index object is keyed by hostname of the server. The superblock
|
||
|
index object is keyed by the sharename and the inode object is keyed by the
|
||
|
UniqueId. The cache coherency is ensured by checking the 'LastWriteTime' and
|
||
|
size of file.
|
||
|
|
||
|
To use this, apply this patchset in order, mount the share with rsize=4096 and
|
||
|
try copying a huge file (say few hundred MBs) from mount point to local
|
||
|
filesystem. During the first time, the cache will be initialized. When you copy
|
||
|
the second time, it should read from the local cache.
|
||
|
|
||
|
To reduce the impact of page cache and see the local caching in action
|
||
|
readily, try doing a sync and drop the caches by doing:
|
||
|
sync; echo 3 > /proc/sys/vm/drop_caches
|
||
|
|
||
|
Known issues
|
||
|
-------------
|
||
|
- the cache coherency check may not be reliable always as some
|
||
|
CIFS servers are known not to update mtime until the filehandle is
|
||
|
closed.
|
||
|
- not all the Servers under all circumstances provide a unique
|
||
|
'UniqueId'.
|
||
|
|
||
|
Todo's
|
||
|
-------
|
||
|
- improvements to avoid potential key collisions
|
||
|
- address the above known issues
|
||
|
|
||
|
This set is lightly tested and all the bugs seen during my testing have been
|
||
|
fixed. However, this can be considered as an RFC for now.
|
||
|
|
||
|
Any Comments or Suggestions are welcome.
|
||
|
|
||
|
Suresh Jayaraman (10)
|
||
|
cifs: add kernel config option for CIFS Client caching support
|
||
|
cifs: guard cifsglob.h against multiple inclusion
|
||
|
cifs: register CIFS for caching
|
||
|
cifs: define server-level cache index objects and register them with FS-Cache
|
||
|
cifs: define superblock-level cache index objects and register them
|
||
|
cifs: define inode-level cache object and register them
|
||
|
cifs: FS-Cache page management
|
||
|
cifs: store pages into local cache
|
||
|
cifs: read pages from FS-Cache
|
||
|
cifs: add mount option to enable local caching
|
||
|
|
||
|
Kconfig | 9 ++
|
||
|
Makefile | 2
|
||
|
cache.c | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
cifs_fs_sb.h | 1
|
||
|
cifsfs.c | 15 +++
|
||
|
cifsglob.h | 14 +++
|
||
|
connect.c | 16 +++
|
||
|
file.c | 51 +++++++++++
|
||
|
fscache.c | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
fscache.h | 135 +++++++++++++++++++++++++++++++
|
||
|
inode.c | 4
|
||
|
11 files changed, 742 insertions(+)
|
||
|
|
||
|
|
||
|
|