Skip to content
Snippets Groups Projects
Commit 951cca45 authored by Pekka Enberg's avatar Pekka Enberg
Browse files

Revert "vfs/zfs: Sync vnode and znode refcounts"


This reverts commit ca805bdb.

The commit breaks Cassandra startup as follows:

   INFO 09:18:00,244 Opening /var/lib/cassandra/data/system/local/system-local-jb-5 (5677 bytes)
  page fault outside application, addr 0
  [backtrace]
  0x31899b <mmu::vm_fault(unsigned long, exception_frame*)+219>
  0x34c105 <page_fault+101>
  0x34acc7 <ex_pf+35>
  0x391e94 <vn_stat+132>
  0x3935c9 <sys_stat+41>
  0x38a4ee <__xstat+78>

Raphael explains:

  I found that the following commit
  ca805bdb is the guilty one. It correctly
  fixes some mismatches between znode and vnode refcnts, then moves
  VOP_INACTIVE from vrele to keep them synchronized. This change assumes
  that there is no mismatch anymore.

  However, there is apparently a corner-case that the patch doesn't
  address. Example: If the vnode is one refcnt ahead of the respective
  znode, on an eventual vrele, the znode would be destroyed while the
  vnode is still alive. zfs_getattr attempts to dereference the field of
  the znode which doesn't exist anymore, thus the page fault.

As it's a regression, revert the commit for now.

Signed-off-by: default avatarPekka Enberg <penberg@cloudius-systems.com>
parent 65d7e881
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment