diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-19 14:34:30 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-19 14:34:30 +0100 |
| commit | bcda0042e2313d65a835b874c78bf215d743a844 (patch) | |
| tree | 774e7772ac513cd18ba8d394db44839ea9bfe2d9 /libbb | |
| parent | 892d4b6b3d7e9950ff3708ca957e1e0590dd5a2d (diff) | |
| download | busybox-w32-bcda0042e2313d65a835b874c78bf215d743a844.tar.gz busybox-w32-bcda0042e2313d65a835b874c78bf215d743a844.tar.bz2 busybox-w32-bcda0042e2313d65a835b874c78bf215d743a844.zip | |
libbb/copyfd.c: don't mmap a largish buffer if we only want to copy a few kb
function old new delta
bb_full_fd_action 283 295 +12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
| -rw-r--r-- | libbb/copyfd.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libbb/copyfd.c b/libbb/copyfd.c index c5f8b5b87..f42eb7623 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) | |||
| 22 | char *buffer; | 22 | char *buffer; |
| 23 | int buffer_size; | 23 | int buffer_size; |
| 24 | 24 | ||
| 25 | if (size > 0 && size <= 4 * 1024) | ||
| 26 | goto use_small_buf; | ||
| 25 | /* We want page-aligned buffer, just in case kernel is clever | 27 | /* We want page-aligned buffer, just in case kernel is clever |
| 26 | * and can do page-aligned io more efficiently */ | 28 | * and can do page-aligned io more efficiently */ |
| 27 | buffer = mmap(NULL, CONFIG_FEATURE_COPYBUF_KB * 1024, | 29 | 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) | |||
| 30 | /* ignored: */ -1, 0); | 32 | /* ignored: */ -1, 0); |
| 31 | buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024; | 33 | buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024; |
| 32 | if (buffer == MAP_FAILED) { | 34 | if (buffer == MAP_FAILED) { |
| 35 | use_small_buf: | ||
| 33 | buffer = alloca(4 * 1024); | 36 | buffer = alloca(4 * 1024); |
| 34 | buffer_size = 4 * 1024; | 37 | buffer_size = 4 * 1024; |
| 35 | } | 38 | } |
