[PATCH] implemented hardlink option in DAV module
Михаил Монашёв
postmaster at softsearch.ru
Tue Oct 16 17:31:13 UTC 2012
Здравствуйте, Maxim.
Вы писали 16 октября 2012 г., 21:10:52:
> Hello!
> On Tue, Oct 16, 2012 at 02:16:53PM +0400, Maxim Dounin wrote:
>> Hello!
>>
>> On Tue, Oct 16, 2012 at 12:14:38AM +0400, Михаил Монашёв wrote:
>>
>> > Здравствуйте, Gena.
>> >
>> > >> У меня, например, есть следующая задача: обновить mtime у файла по
>> > >> вебдаву. Т.е. сделать touch файлу. Сейчас я это делаю через Ж:
>> > >> копирую файл, а потом мувлю его в уже существующий. Копирование
>> > >> очень долго работает, а со ссылкой работало бы моментально.
>> >
>> > > моментально это работало бы, если добавить к реализации WebDAV
>> > > расширение, новый метод TOUCH который будет менять mtime файла
>> >
>> > Ну это совсем идеальный случай. Я о таком только мечтать могу. Если
>> > кто-то вдруг реализует, то я только за. А пока выкручиваюсь как
>> > получается.
>>
>> Если следовать идеалогии WebDAV'а, то твоя задача должна решаться
>> с помощью метода PROPPATCH[1]. Но он долбанутый на всю голову и
>> там требуется, чтобы сервер занимался парсингом набора инструкций
>> в XML'е.
>>
>> Если следовать здравому смыслу - то TOUCH, конечно, будет
>> существенно проще. Единственное что останавливает - его
>> отсутствие, т.е. полная и абсолютная неспецифицированность. С
>> идеалогической точки зрения - возможно тут подойдёт правильно
>> применённый метод PATCH[2].
>>
>> Использование COPY с hardlink'ами для решения подобной задачи -
>> это как-то слишком, IMHO, полностью согласен с Геной. (Я бы
>> наверное применил тут встроенный перл и не мучился особо.)
>>
>> [1] http://tools.ietf.org/html/rfc4918#section-9.2
>> [2] http://tools.ietf.org/html/rfc5789
> Патч с реализацией TOUCH прилагается, желающие поиграться - добро
> пожаловать. Правда, Игорь считает изобретение новых методов
> порочной практикой, так что в коробку этот патч попадёт врядли.
А если потребуется поменять atime, то:
- if (ngx_set_file_time(NULL, fd, ctx->mtime) != NGX_OK) {
+ if (ngx_set_file_time(NULL, fd, ctx->atime) != NGX_OK) {
?
А то я тут посмотрел код скриптов, работающих с вебдавом, чтоб туда
идейку про перл в комменты записать. А там мы оказывается atime
меняем, а не mtime.
И, кстати, Игорь прав. ;-) Глядя на твой патч возникает желание
плодить методы под каждый чих, что неправильно.
--
С уважением,
Михаил mailto:postmaster at softsearch.ru
Подробная информация о списке рассылки nginx-ru