f2fs: enhance alloc_nid and build_free_nids flows
authorJaegeuk Kim <jaegeuk.kim@samsung.com>
Thu, 25 Apr 2013 07:05:51 +0000 (16:05 +0900)
committerJaegeuk Kim <jaegeuk.kim@samsung.com>
Mon, 29 Apr 2013 02:19:21 +0000 (11:19 +0900)
commit55008d845d233396ed374473da4613cee691aa03
treef869d0a791bee739b31714a49b8d8e092de44bf6
parentd70b4f53b950676228297f0b204f2e1512c1ff6c
f2fs: enhance alloc_nid and build_free_nids flows

In order to avoid build_free_nid lock contention, let's change the order of
function calls as follows.

At first, check whether there is enough free nids.
 - If available, just get a free nid with spin_lock without any overhead.
 - Otherwise, conduct build_free_nids.
  : scan nat pages, journal nat entries, and nat cache entries.

We should consider carefullly not to serve free nids intermediately made by
build_free_nids.
We can get stable free nids only after build_free_nids is done.

Reviewed-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
fs/f2fs/f2fs.h
fs/f2fs/node.c