[Ocfs2-devel] unlink: why does try_open_lock fail on directory but works for a file?

shencanquan shencanquan at huawei.com
Mon Jun 10 03:09:38 PDT 2013


On 2013/6/8 22:34, Goldwyn Rodrigues wrote:
> Hi,
>
> I am trying to understand why the unlinks (distributed) are slow with
> ocfs2. My investigation so far has revealed that ocfs2_try_open_lock
> fails on the directory unlinked but works for a file unlinked. This
> creates a checkpoint everytime a directory is deleted.. slowing
> transactions following it.
>
> To explain the problem, consider the following scenario:
>
> On node A, I create multiple directories say d1-d8, and each have 3
> files under it f1, f2 and f3.
> On node B, I delete all directories using rm -Rf d*
>
> The FS first unlinks f1, f2 and f3. However, when it performs
> ocfs2_evict_inode() ->  ocfs2_delete_inode() ->
> ocfs2_query_inode_wipe() ->  ocfs2_try_open_lock() on d1, it fails.
  on directory d1 it fail to call ocfs2_try_open_lock, it mean other 
node has lock the open lock. it maybe node A has open the directory d1?
> This starts a checkpoint because OCFS2_INODE_DELETED flag is not set
> on the directory inode.
>
> Now, a checkpoint interferes with the journaling of the inodes deleted
> in the following unlinks, in our case, directories d2-d8 and the files
> contained in it.
>
> So why do the files get the open_lock but the directories don't?
   I don't think that the directory don't use the open_lock, otherwise 
it will be success to call the ocfs2_try_open_lock.
>
>
> --
> Goldwyn
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
>





More information about the Ocfs2-devel mailing list