From owner-freebsd-fs@freebsd.org Sun May 28 22:59:58 2017 Return-Path: Delivered-To: freebsd-fs@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 10A56D84868 for ; Sun, 28 May 2017 22:59:58 +0000 (UTC) (envelope-from lev@FreeBSD.org) Received: from onlyone.not-for.work (onlyone.not-for.work [148.251.9.81]) by mx1.freebsd.org (Postfix) with ESMTP id 9383C1D53; Sun, 28 May 2017 22:59:57 +0000 (UTC) (envelope-from lev@FreeBSD.org) Received: from lion.home.serebryakov.spb.ru (unknown [IPv6:2001:470:923f:1:e0f4:994:662:862]) (Authenticated sender: lev@serebryakov.spb.ru) by onlyone.not-for.work (Postfix) with ESMTPSA id B59102B9; Mon, 29 May 2017 01:59:48 +0300 (MSK) Date: Mon, 29 May 2017 01:59:48 +0300 From: Lev Serebryakov Reply-To: Lev Serebryakov Organization: FreeBSD X-Priority: 3 (Normal) Message-ID: <1601598008.20170529015948@serebryakov.spb.ru> To: Andriy Gapon , freebsd-fs@FreeBSD.org Subject: Re: Strange behavior of .zfs/snapshot/* directories in respect to ".." path. In-Reply-To: References: <1acc5917-f10f-b18a-50e0-84661173e85d@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 May 2017 22:59:58 -0000 Hello Andriy, Friday, May 26, 2017, 8:34:31 PM, you wrote: > could you please test the following patch? (1) When I've updated to latest stable/11 revision (r319076) it crashed in ZFS(!) WITH AND WITHOUT patch soon after boot, 100% repeatable (looks like r318716 has HUGE problems): panic: solaris assert: pp != NULL && !pp->valid, file: /usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c, line: 430 (kgdb) #0 doadump (textdump=1) at pcpu.h:222 #1 0xffffffff8056ce85 in kern_reboot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:366 #2 0xffffffff8056d460 in vpanic (fmt=, ap=) at /usr/src/sys/kern/kern_shutdown.c:759 #3 0xffffffff8056d4a3 in panic (fmt=) at /usr/src/sys/kern/kern_shutdown.c:690 #4 0xffffffff812df23a in assfail (a=, f=, l=) at /usr/src/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c:81 #5 0xffffffff810478fc in zfs_freebsd_write (ap=) at /usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:430 #6 0xffffffff80801518 in VOP_WRITE_APV (vop=, a=0xfffffe04760bd610) at vnode_if.c:1000 #7 0xffffffff80639eed in vn_write (fp=0xfffff80013cfb6e0, uio=0xfffffe04760bd8f0, active_cred=, flags=, td=) at vnode_if.h:413 #8 0xffffffff806379e0 in vn_io_fault1 () at /usr/src/sys/kern/vfs_vnops.c:1076 #9 0xffffffff80635fde in vn_io_fault (fp=, uio=, active_cred=, flags=1, td=) at /usr/src/sys/kern/vfs_vnops.c:1181 #10 0xffffffff805ca99a in dofilewrite (td=0xfffff8004d086000, fd=, fp=0xfffff80013cfb6e0, auio=0xfffffe04760bd8f0, offset=, flags=1) at file.h:307 #11 0xffffffff805ca7a0 in kern_pwritev (td=0xfffff8004d086000, fd=16, auio=0xfffffe04760bd8f0, offset=696) at /usr/src/sys/kern/sys_generic.c:556 #12 0xffffffff805ca67d in sys_pwrite (td=, uap=) at /usr/src/sys/kern/sys_generic.c:459 #13 0xffffffff8079f4c6 in amd64_syscall (td=0xfffff8004d086000, traced=0) at subr_syscall.c:135 #14 0xffffffff807827fb in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:396 #15 0x0000000804bb4bfa in ?? () (2) When I've reverted to r318576, this patch helps! > Thank you! > Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c > =================================================================== > --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c (revision 318865) > +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c (working copy) > @@ -1625,7 +1625,7 @@ zfs_lookup(vnode_t *dvp, char *nm, vnode_t **vpp, > cn.cn_nameptr = "snapshot"; > cn.cn_namelen = strlen(cn.cn_nameptr); > cn.cn_nameiop = cnp->cn_nameiop; > - cn.cn_flags = cnp->cn_flags; > + cn.cn_flags = cnp->cn_flags & ~ISDOTDOT; > cn.cn_lkflags = cnp->cn_lkflags; > error = VOP_LOOKUP(zfsctl_vp, vpp, &cn); > vput(zfsctl_vp); -- Best regards, Lev mailto:lev@FreeBSD.org