Shichangkuo
2016-Apr-20 07:53 UTC
[Ocfs2-devel] [PATCH] Mounting failed will not clean up dlm and o2hb
Hi all When mounting an ocfs2 device, the dlm will join the domian firstly, in ocfs2_dlm_init function. Then the storage link changes to inactive, then ocfs2_super_lock retutn -EIO. ocfs2_dismount_volume will be called to clean up osb, but it just return when lock failed. This will cause dlm and o2hb thread still exits. ------------------------- Signed-off-by: shichangkuo <shi.changkuo at h3c.com> Reviewed-by: zhangguanghui <zhang.guanghui at h3c.com> diff -pu linux-4.6-rc4/fs/ocfs2/super.c super.c --- linux-4.6-rc4/fs/ocfs2/super.c 2016-04-18 10:13:32.000000000 +0800 +++ super.c 2016-04-20 15:45:31.306475078 +0800 @@ -1922,21 +1922,20 @@ static void ocfs2_dismount_volume(struct ocfs2_purge_refcount_trees(osb); /* No cluster connection means we've failed during mount, so skip - * all the steps which depended on that to complete. */ - if (osb->cconn) { + * all the steps which depended on that to complete. + * to fix resource leaks and avoid call sb_getblk again, mount can't return*/ + if (!mnt_err && osb->cconn) { tmp = ocfs2_super_lock(osb, 1); if (tmp < 0) { mlog_errno(tmp); - return; + } else { + if (osb->slot_num != OCFS2_INVALID_SLOT) + ocfs2_put_slot(osb); + + ocfs2_super_unlock(osb, 1); } } - if (osb->slot_num != OCFS2_INVALID_SLOT) - ocfs2_put_slot(osb); - - if (osb->cconn) - ocfs2_super_unlock(osb, 1); - ocfs2_release_system_inodes(osb); /* Best regards. Changkuo ------------------------------------------------------------------------------------------------------------------------------------- ???????????????????????????????????????? ???????????????????????????????????????? ???????????????????????????????????????? ??? This e-mail and its attachments contain confidential information from H3C, which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction, or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete it!