On Wed, Jan 25, 2012 at 05:01:07AM +0400, Dmitry V. Levin wrote: > On Tue, Jan 24, 2012 at 07:47:28PM -0500, Dubrovskiy Viacheslav wrote: > > 24.01.2012 19:39, Dmitry V. Levin пишет: > > > > > >> Ох уж эти ядра, вечно в них что-нибудь меняется не в ту сторону, после > > >> чего все ломается. > > >> > > >> Должно было быть либо [(deleted) /usr/sbin/smartd], либо > > >> [/usr/sbin/smartd (deleted)]. > > >> > > >> Попробуйте обновить ядро до актуального, 2.6.32-ovz-el-alt35 это уже > > >> старовато. > > На 2.6.32-ovz-el-alt49 аналогично > > Интересно, когда и зачем это поведение в ядре изменилось? Это специфический разлом в ядрах ovz-2.6.32, возникший, похоже, при переносе старых изменений на новые версии кода fs/dcache.c:__d_path(). Вообще в оригинальном ядре сначала в конец добавляется " (deleted)", потом собирается путь к файлу, начиная с конца. В ovz-2.6.18 вместо этого решили добавлять "(deleted) " в начало строки: http://git.openvz.org/?p=linux-2.6.18-openvz;a=commitdiff;h=297ec8662f6fe138b0d491473865fb6698b000ca (что, возможно, и правильнее - отсутствие '/' в начале позволяет надёжно отличить удалённый файл от существующего файла, имя которого содержит в конце подстроку " (deleted)"). А вот в патче для 2.6.32, похоже, изменённый апстримом кусок кода просто перетащили из того места, где добавлялся вариант с пробелом в начале, не заметив, что пробел надо ставить в другое место: http://git.openvz.org/?p=linux-2.6.32-openvz;a=commitdiff;h=26974fa580312d462effa9e4c6d1db29348c177c#patch32 Точнее, это началось даже не с 2.6.32, а с 2.6.26, когда апстрим принёс в этот код свою функцию prepend(): http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=6092d048183b76bfa3f84b32f8158dd8d10bd811 (а в ovz как перенесли свой патч с ошибкой, так с тех пор и не исправили).