* acquire locks on parents in the filesystem tree before children.
* (TODO: What about rename when we acquire locks in unrelated parts of the
* filesystem?)
+ * - An inode should not be locked while the filesystem lock is already held,
+ * since some code may do an inode lookup (which acquires the filesystem
+ * lock) while a different inode is locked.
* */
typedef struct {
GMutex *lock;