[git commit master] libbb/copyfd.c: don't mmap a largish buffer if we only want to copy a few kb
Denys Vlasenko
vda.linux at googlemail.com
Fri Mar 19 13:34:30 UTC 2010
commit: http://git.busybox.net/busybox/commit/?id=bcda0042e2313d65a835b874c78bf215d743a844
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master
function old new delta
bb_full_fd_action 283 295 +12
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
libbb/copyfd.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/libbb/copyfd.c b/libbb/copyfd.c
index c5f8b5b..f42eb76 100644
--- a/libbb/copyfd.c
+++ b/libbb/copyfd.c
@@ -22,6 +22,8 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
char *buffer;
int buffer_size;
+ if (size > 0 && size <= 4 * 1024)
+ goto use_small_buf;
/* We want page-aligned buffer, just in case kernel is clever
* and can do page-aligned io more efficiently */
buffer = mmap(NULL, CONFIG_FEATURE_COPYBUF_KB * 1024,
@@ -30,6 +32,7 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
/* ignored: */ -1, 0);
buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024;
if (buffer == MAP_FAILED) {
+ use_small_buf:
buffer = alloca(4 * 1024);
buffer_size = 4 * 1024;
}
--
1.6.3.3
More information about the busybox-cvs
mailing list