From owner-freebsd-fs@freebsd.org Mon May 29 06:11:24 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 BEDE7D86C21 for ; Mon, 29 May 2017 06:11:24 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citapm.icyb.net.ua (citapm.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id B369C18C5; Mon, 29 May 2017 06:11:23 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citapm.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id JAA14082; Mon, 29 May 2017 09:11:19 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1dFDtf-000MAB-Fy; Mon, 29 May 2017 09:11:19 +0300 Subject: Re: Strange behavior of .zfs/snapshot/* directories in respect to ".." path. To: Lev Serebryakov , freebsd-fs@FreeBSD.org References: <1acc5917-f10f-b18a-50e0-84661173e85d@FreeBSD.org> <1601598008.20170529015948@serebryakov.spb.ru> From: Andriy Gapon Message-ID: <8138588b-4b03-16d9-77b6-2a3e3444997d@FreeBSD.org> Date: Mon, 29 May 2017 09:09:58 +0300 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <1601598008.20170529015948@serebryakov.spb.ru> Content-Type: text/plain; charset=utf-8 Content-Language: en-US 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: Mon, 29 May 2017 06:11:24 -0000 On 29/05/2017 01:59, Lev Serebryakov wrote: > 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! You probably meant r318716 again here? If yes, then it's probably exactly the same issue as we had in head: r308826. Could you please test if that change helps? I'll take care of this. >> 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); > > > > -- Andriy Gapon