commit f96d3c00f514c5901d7bd50a893f2ff3887623c7 Author: Ondrej Holy Date: 2013-05-24 Update NEWS for 1.17.1 release M NEWS commit eb62d94a9a3141fd016b0abad8dcf142c4c0d962 Author: Colin Walters Date: 2013-05-21 metadata: Downgrade journal short-read to debug Because multiple clients can be concurrently writing to the journal, it's possible to see partially written journal entries. Emitting g_warning() here breaks test cases. The real fix would be safe concurrent access to the journal, but that's harder. https://bugzilla.gnome.org/700785 M metadata/metatree.c commit 5ab3363029f94f30cf716aa55fe4f581ef67f14d Author: Colin Walters Date: 2013-05-21 sftp: Fix two compilation warnings M daemon/gvfsbackendsftp.c commit 1b5dbbe63f607cb9fadbc7109cc3124460a185d8 Author: Richard Stanislavský Date: 2013-05-21 Updated slovak translation M po/sk.po commit e793a0476feeaa0a3cc4f1fd043c15c297707455 Author: Tomas Bzatek Date: 2013-05-13 metadata: Flush all scheduled writeouts on daemon exit This patch ensures that we safely write all data from journals to metatrees on exit. E.g. if anything happens to session bus or we get replaced by some other instance. https://bugzilla.gnome.org/show_bug.cgi?id=637095 M metadata/meta-daemon.c commit c8e7d1375715545f28a0943ce7657330e3b70acd Author: Tomas Bzatek Date: 2013-05-13 metadata: Use shorter writeout timeout on NFS Since we've moved journal to a non-volatile storage, let's flush more often to minimize a chance of data loss. https://bugzilla.gnome.org/show_bug.cgi?id=637095 M metadata/meta-daemon.c M metadata/metatree.c M metadata/metatree.h commit 749c872b9192a84e65d83bc0f0eb697ab247fdd8 Author: Tomas Bzatek Date: 2013-05-13 metadata: Put journal in $XDG_RUNTIME_DIR for shared NFS homedir case This essentially moves is_on_nfs() from metatree.c in metabuilder.c as the more appropriate place for shared functions. It's used in meta_builder_get_journal_filename() to determine whether to use original metadata directory or temporary $XDG_RUNTIME_DIR location to work around certain NFS issues. The idea behind this change is to have separate journals for every client that is accessing shared homedir. Then the only possible point of conflict is on rotation which is backed up by atomic file rename. Without this, there were multiple metadata daemons writing to the same journal file, overwriting changes to each other and being racy in flush and rotation. There will always be a conflict between clients, overwriting tree file data by flushing their journals. https://bugzilla.gnome.org/show_bug.cgi?id=637095 M metadata/metabuilder.c M metadata/metabuilder.h M metadata/metatree.c commit 3381859ba7a92f4824ff09a7aa951407bf4e1c72 Author: Tomas Bzatek Date: 2013-05-13 metadata: Create new journal if it doesn't exist With concurrent access of multiple daemons there may be a moment when tree file exists but not the journal file. The daemon can't write anything without journal and is doomed until next rotation. Missing journal file can also happen on system crash etc. This patch tries to create new journal file only when it doesn't exist, other errors still lead to inability to store anything. This will also allow us to have journal file somewhere else, e.g. on a non-persistent storage. https://bugzilla.gnome.org/show_bug.cgi?id=637095 M metadata/metabuilder.c M metadata/metabuilder.h M metadata/metatree.c commit 21811b3ae17ec705327484c1ce0be75fec95bb0e Author: Tomas Bzatek Date: 2013-05-13 metadata: Be more resistive to broken journal files In shared NFS homedir case with multiple clients writing to the same mmaped journal file data can get easily corrupted. The daemon iterates over a journal file on flush taking in account variable entry size and advances according to the data read. However in certain case invalid data are read making us to jump out of bounds. In case of zero entry size we would stand at the same place leading to infinite loop. This patch checks if the indicated entry size is at least the size of the structure we're getting the size from (it's a first element) and breaks the iteration cycle if it's not. This may lead to partial data loss on flush as we don't process the rest of the journal file. Old data from existing tree file will be preserved of course, only few recent changes would get lost. https://bugzilla.gnome.org/show_bug.cgi?id=637095 M metadata/metatree.c commit 6b12c3d7b33c87a7fea228106f39ecf2a3e0f310 Author: Tomas Bzatek Date: 2013-05-13 metadata: Force tree re-read after successful flush Once we flush the journal and write new tree file we need to re-read it to refresh internal data structures (and mmap data from the right file). We originally left this work on meta_tree_refresh_locked() and meta_tree_needs_rereading() respectively where we checked the rotated bit. In detail, metabuilder wrote a new temp tree file, then explicitly opened the current (old) one, wrote the rotated bit and atomically replaced the temp file. Then the metadata daemon having mmapped the old file detected the rotated bit and scheduled journal and tree file reopen+reread. However in concurrent environment like NFS homedir where multiple metadata daemons are handling the same database we may run in a race and not getting the rotated bit detected properly. This led to an infinite loop between meta_journal_add_entry() - meta_tree_flush_locked() - meta_tree_refresh_locked() - meta_journal_add_entry() since we had full journal, didn't detect the rotation and since the files were already unlinked, there was no force to break that loop. This patch forces tree file re-read after successful flush to prevent this issue. https://bugzilla.gnome.org/show_bug.cgi?id=637095 M metadata/metatree.c commit 051556ee1dd6b8af290cc15875290b756600b71b Author: Timothy Arceri Date: 2013-05-07 Implement clean shutdown in sftp backend https://bugzilla.gnome.org/show_bug.cgi?id=511802 M daemon/gvfsbackendsftp.c commit 8c5d70c411d3b7f0c0622e0a73567e83b2745249 Author: Timothy Arceri Date: 2013-04-20 Adds remaining shutdown infrastructure and call from cdda backend. https://bugzilla.gnome.org/show_bug.cgi?id=511802 M daemon/daemon-main.c M daemon/gvfsbackend.c M daemon/gvfsbackend.h M daemon/gvfsbackendcdda.c commit 238a92496f5ab165b52f90d414379525cb262ee1 Author: Philip Langdale Date: 2013-05-01 MTP: Fix compilation warning. The add_cache_entry helper's signature said it returned the CacheEntry but it doesn't. https://bugzilla.gnome.org/show_bug.cgi?id=699424 M daemon/gvfsbackendmtp.c commit 341d17c7a78a7ce001d51f665763c33570ccec65 Author: Tomas Bzatek Date: 2013-04-30 Post release version bump M configure.ac