[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