haiwen / seafile

High performance file syncing and sharing, with also Markdown WYSIWYG editing, Wiki, file label and other knowledge management features.
http://seafile.com/
Other
12.31k stars 1.55k forks source link

Seafile skips hardlinks #2315

Open vitlav opened 4 years ago

vitlav commented 4 years ago

Seafile does not upload created hardlinks.

Reproduce: $ touch 12345 $ link 12345 1234-5

Check inotify events: $ inotifywait -m /home/lav/Documents /home/lav/Documents/ CREATE 1234 /home/lav/Documents/ CREATE 12345 /home/lav/Documents/ OPEN 12345 /home/lav/Documents/ ATTRIB 12345 /home/lav/Documents/ CLOSE_WRITE,CLOSE 12345 /home/lav/Documents/ CREATE 1234-5

Result: 12345 file is uploaded, 1234-5 is missed on the server side

Qt::rename() from Qt5 uses link instead of rename, so when I rename file with Qt::rename, Seafile doesn't react on it.

vitlav commented 4 years ago

Run with SEAFILE_DEBUG="Watch" puts in log file [03/05/20 18:16:26] wt-monitor(350): Created 1234-5.

This event specially ignored in the code:

wt-monitor-linux.c process_one_event (int in_fd, ... } else if (event->mask & IN_CREATE) { seaf_debug ("Created %s.\n", filename); ... /* So we'll ignore create event for files. https://github.com/haiwen/seafile/blob/24630d46181fa255e82943bdc57737c4e1568ed2/daemon/wt-monitor-linux.c#L349

vitlav commented 4 years ago

A simular problem was in MiniIDNA: https://sourceforge.net/p/minidlna/bugs/227/