Я пытаюсь написать файловую систему FUSE, которая представляет потоковую музыку в виде mp3-файлов.Я не хочу начинать потоковую передачу аудио, когда читается только тег ID3v1.1, поэтому я монтирую файловую систему с direct_io и max_readahead = 0.
Но когда я делаю это (что также делает libid3tag), я получаю чтение 2752 байта со смещением -2880 байтов с конца:
char tmp[255];
FILE* f = fopen("foo.mp3", "r");
fseek(f, -128, SEEK_END);
fread(tmp, 1, 10, f);
Почему это?Я ожидаю получить вызов для чтения со смещением ровно 128 байтов от конца с размером 10 ..
Количество прочитанных байтов, похоже, несколько варьируется.