[SCM] Samba Shared Repository - branch master updated
Volker Lendecke
vlendec at samba.org
Fri Jul 9 00:51:14 MDT 2010
The branch, master has been updated
via 1c0cb36... s3: Optimize the write cache for sequential writes
from 6a0d366... s4: fix warning: unused variable âiâ
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 1c0cb365a895ce670fc32db3380cee7f129ce95b
Author: Volker Lendecke <vl at samba.org>
Date: Wed Jul 7 21:50:23 2010 +0200
s3: Optimize the write cache for sequential writes
In case of the one-byte allocating writes we don't work work optimally because
we start the write cache at the current offset. This patch tries to avoid this
case.
-----------------------------------------------------------------------
Summary of changes:
source3/smbd/fileio.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c
index 92b7d3e..92757f7 100644
--- a/source3/smbd/fileio.c
+++ b/source3/smbd/fileio.c
@@ -796,6 +796,26 @@ n = %u, wcp->offset=%.0f, wcp->data_size=%u\n",
DO_PROFILE_INC(writecache_init_writes);
}
#endif
+
+ if ((wcp->data_size == 0)
+ && (pos > wcp->file_size)
+ && (pos + n <= wcp->file_size + wcp->alloc_size)) {
+ /*
+ * This is a write completely beyond the
+ * current EOF, but within reach of the write
+ * cache. We expect fill-up writes pretty
+ * soon, so it does not make sense to start
+ * the write cache at the current
+ * offset. These fill-up writes would trigger
+ * separate pwrites or even unnecessary cache
+ * flushes because they overlap if this is a
+ * one-byte allocating write.
+ */
+ wcp->offset = wcp->file_size;
+ wcp->data_size = pos - wcp->file_size;
+ memset(wcp->data, 0, wcp->data_size);
+ }
+
memcpy(wcp->data+wcp->data_size, data, n);
if (wcp->data_size == 0) {
wcp->offset = pos;
--
Samba Shared Repository
More information about the samba-cvs
mailing list