From owner-svn-src-all@FreeBSD.ORG Sat Apr 3 15:29:55 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6FE67106566B; Sat, 3 Apr 2010 15:29:55 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 6D0A78FC0A; Sat, 3 Apr 2010 15:29:53 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id SAA14783; Sat, 03 Apr 2010 18:29:52 +0300 (EEST) (envelope-from avg@freebsd.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1Ny5IF-0008yc-Jz; Sat, 03 Apr 2010 18:29:51 +0300 Message-ID: <4BB75EEF.8060201@freebsd.org> Date: Sat, 03 Apr 2010 18:29:51 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.24 (X11/20100321) MIME-Version: 1.0 To: Xin LI References: <201003160048.o2G0mReg025652@svn.freebsd.org> <4BB75C8D.8070607@freebsd.org> In-Reply-To: <4BB75C8D.8070607@freebsd.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Pawel Jakub Dawidek , =?UTF-8?B?TWFydGluIE1hdHXFoWth?= Subject: Re: svn commit: r205198 - in head/cddl/contrib/opensolaris: cmd/zfs lib/libzfs/common X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Apr 2010 15:29:55 -0000 on 03/04/2010 18:19 Andriy Gapon said the following: > It seems that this commit causes a crash in zfs(1) when e.g. 'zfs list' is > executed and one of the filesystems has a user property set on it. > > The crash is in zfs_prune_proplist function at > cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c:4291. > > Relevant code snippet: > 4286 > 4287 while (curr) { > 4288 zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr)); > 4289 nvpair_t *next = nvlist_next_nvpair(zhp->zfs_props, curr); > 4290 > 4291 if (props[zfs_prop] == B_FALSE) > 4292 (void) nvlist_remove(zhp->zfs_props, > 4293 nvpair_name(curr), nvpair_type(curr)); > 4294 curr = next; > 4295 } > > zfs_prop is (-1) and nvpair_name(curr) is my custom property "avg:nobackup". > Not sure if this was fixed in OpenSolaris or what. BTW, I use this simplistic change for time being, not sure if this is a correct fix. --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c @@ -4288,7 +4288,7 @@ zfs_prune_proplist(zfs_handle_t *zhp, uint8_t *props) zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr)); nvpair_t *next = nvlist_next_nvpair(zhp->zfs_props, curr); - if (props[zfs_prop] == B_FALSE) + if (zfs_prop != ZPROP_INVAL && props[zfs_prop] == B_FALSE) (void) nvlist_remove(zhp->zfs_props, nvpair_name(curr), nvpair_type(curr)); curr = next; -- Andriy Gapon