All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] unlink: why does try_open_lock fail on directory but works for a file?
@ 2013-06-08 14:34 Goldwyn Rodrigues
  2013-06-10 10:09 ` shencanquan
  0 siblings, 1 reply; 4+ messages in thread
From: Goldwyn Rodrigues @ 2013-06-08 14:34 UTC (permalink / raw)
  To: ocfs2-devel

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.
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?


--
Goldwyn

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-06-13  2:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-08 14:34 [Ocfs2-devel] unlink: why does try_open_lock fail on directory but works for a file? Goldwyn Rodrigues
2013-06-10 10:09 ` shencanquan
2013-06-10 12:11   ` Goldwyn Rodrigues
2013-06-13  2:03     ` shencanquan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.