This resulted in ENOENT being returned for unlinked but still open files if the
kernel sent a FORGET request for the parent directory.
Discovered with fs_racer in LTP.
* Fix hang in wait_on_path(). Reported by Ville Silventoinen
+ * Don't unhash name in FORGET. This resulted in ENOENT being
+ returned for unlinked but still open files if the kernel sent a
+ FORGET request for the parent directory.
+
2011-12-08 Miklos Szeredi <miklos@szeredi.hu>
* Fix build if FUSE_NODE_SLAB is not defined. Patch by Emmanuel
(unsigned long long) node->nodeid);
assert(node->treelock == 0);
- assert(!node->name);
+ unhash_name(f, node);
if (lru_enabled(f))
remove_node_lru(node);
unhash_id(f, node);
assert(node->nlookup >= nlookup);
node->nlookup -= nlookup;
if (!node->nlookup) {
- unhash_name(f, node);
unref_node(f, node);
} else if (lru_enabled(f) && node->nlookup == 1) {
set_forget_time(f, node);