]> granicus.if.org Git - zfs/commit
Fix empty xattr dir causing lockup
authorChunwei Chen <david.chen@osnexus.com>
Fri, 18 Dec 2015 19:39:41 +0000 (11:39 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 28 Dec 2015 17:41:30 +0000 (09:41 -0800)
commit29572ccdeff7ddb1211b0f26dea69e0a2f262faf
tree42c5bf7b849d47a8029e94ed49484eecd73af003
parent2ebc7b72b3989ac53c1753f79eaf71d95419c103
Fix empty xattr dir causing lockup

During zfs_rmnode on a xattr dir, if the system crash just after
dmu_free_long_range, we would get empty xattr dir in delete queue. This would
cause blkid=0 be passed into zap_get_leaf_byblk when doing zfs_purgedir during
mount, and would try to do rw_enter on a wrong structure and cause system
lockup.

We fix this by returning ENOENT when blkid is zero in zap_get_leaf_byblk.

Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #4114
Closes #4052
Closes #4006
Closes #3018
Closes #2861
module/zfs/zap.c