Size: a a a

2021 April 13

NG

Nicholas Guriev in pro.vim
и как же нормальный @emmanuelGoldstein копирует файлы?
источник

EG

Emmanuel Goldstein in pro.vim
Ну разве что
Хотя проще было бы договориться про эти флаги с мейнтейнерами rlo
источник

EG

Emmanuel Goldstein in pro.vim
man 2 copy_file_range
man 2 sendfile
источник

EG

Emmanuel Goldstein in pro.vim
Подходящими под задачу сисколлами.
источник

NG

Nicholas Guriev in pro.vim
хм... получается cp(1) никак не задействует эти вызовы??
источник

EG

Emmanuel Goldstein in pro.vim
man 2 splice также
источник

EG

Emmanuel Goldstein in pro.vim
Да. cp(1) делает пачку read/write, что можно легко увидеть на strace.
источник

EG

Emmanuel Goldstein in pro.vim
https://gist.github.com/GoldsteinE/e50288ce71fadf48c58adaea55eacbd0
Вот strace копирования 2 мегабайт рандомных данных
источник

NG

Nicholas Guriev in pro.vim
Может быть от параметров запуска что-нибудь зависит. Например, на btrfs при условии --reflink используется ioctl CLONE_FILE.
источник

VG

Vadim Goncharov in pro.vim
лул, sendfile же всегда был сетевой
источник

VG

Vadim Goncharov in pro.vim
а вообще в линуксе опять наплодили сисколлов, смешно
источник

EG

Emmanuel Goldstein in pro.vim
> sendfile copies data between one file descriptor and another
источник

VG

Vadim Goncharov in pro.vim
в начальных реализациях это работало только между диском и сокетом
источник

EG

Emmanuel Goldstein in pro.vim
Есть ещё splice. Стандартная библиотека Rust использует, в порядке предпочтения:
1. copy_file_range
2. splice
3. sendfile
4. read/write
источник

VG

Vadim Goncharov in pro.vim
и не уверен, что не поменялось, кстати
источник

EG

Emmanuel Goldstein in pro.vim
У меня стандартный ext4 и cp без опций.
источник

EG

Emmanuel Goldstein in pro.vim
В tmpfs тоже пачка read/write
источник

EG

Emmanuel Goldstein in pro.vim
https://github.com/coreutils/coreutils/blob/master/src/cp.c
И по исходникам я никакой умной логики беглым взглядом не вижу
источник

NG

Nicholas Guriev in pro.vim
там только какой-то copy() вызывается
источник

NG

Nicholas Guriev in pro.vim
хз что это такое
источник