]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mds: projected_parent on inode to allow concurrent rename and inode updates (due...
authorSage Weil <sage@newdream.net>
Thu, 28 Feb 2008 17:50:13 +0000 (09:50 -0800)
committerSage Weil <sage@newdream.net>
Thu, 28 Feb 2008 17:50:13 +0000 (09:50 -0800)
commit5dd9f1a17cc187bb0697ea47493998a7c43aed01
treeae137628d60e4e612ed30ced9fccdca1b4047e1e
parent63187b6192810e2bf41c91815ac15b692b59a961
mds: projected_parent on inode to allow concurrent rename and inode updates (due to cap changes)

The problem is that a cap update would give a new mtime mid-rename.  Locker would pre-dirty the inode and _old_ parent dentry, and when it went to apply the projected update, it would have a pv from the old dentry and use it to dirty the new parent dentry.  Now, rename sets projected_parent in _rename_prepare and clears it via CDir::link_inode, and pre_dirty follows that pointer when present.
src/mds/CInode.cc
src/mds/CInode.h
src/mds/Server.cc