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>
This commit is contained in:
parent
892d4b6b3d
commit
bcda0042e2
@ -22,6 +22,8 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
|
|||||||
char *buffer;
|
char *buffer;
|
||||||
int buffer_size;
|
int buffer_size;
|
||||||
|
|
||||||
|
if (size > 0 && size <= 4 * 1024)
|
||||||
|
goto use_small_buf;
|
||||||
/* We want page-aligned buffer, just in case kernel is clever
|
/* We want page-aligned buffer, just in case kernel is clever
|
||||||
* and can do page-aligned io more efficiently */
|
* and can do page-aligned io more efficiently */
|
||||||
buffer = mmap(NULL, CONFIG_FEATURE_COPYBUF_KB * 1024,
|
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);
|
/* ignored: */ -1, 0);
|
||||||
buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024;
|
buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024;
|
||||||
if (buffer == MAP_FAILED) {
|
if (buffer == MAP_FAILED) {
|
||||||
|
use_small_buf:
|
||||||
buffer = alloca(4 * 1024);
|
buffer = alloca(4 * 1024);
|
||||||
buffer_size = 4 * 1024;
|
buffer_size = 4 * 1024;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user