From owner-svn-src-user@FreeBSD.ORG Thu Aug 8 23:24:42 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 39A2DE20; Thu, 8 Aug 2013 23:24:42 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 247222AB7; Thu, 8 Aug 2013 23:24:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r78NOg6j007818; Thu, 8 Aug 2013 23:24:42 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r78NObgA007698; Thu, 8 Aug 2013 23:24:37 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201308082324.r78NObgA007698@svn.freebsd.org> From: Attilio Rao Date: Thu, 8 Aug 2013 23:24:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r254111 - in user/attilio/vmobj-readlock: cddl/contrib/opensolaris/cmd/ztest crypto/openssl/ssl gnu/usr.bin/grep lib/libc/gen lib/libc/iconv sys/amd64/amd64 sys/boot/common sys/boot/for... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2013 23:24:42 -0000 Author: attilio Date: Thu Aug 8 23:24:36 2013 New Revision: 254111 URL: http://svnweb.freebsd.org/changeset/base/254111 Log: MFC Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c user/attilio/vmobj-readlock/crypto/openssl/ssl/s3_cbc.c user/attilio/vmobj-readlock/gnu/usr.bin/grep/grep.c user/attilio/vmobj-readlock/lib/libc/gen/fnmatch.c user/attilio/vmobj-readlock/lib/libc/iconv/citrus_iconv.c user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c user/attilio/vmobj-readlock/sys/boot/common/part.c user/attilio/vmobj-readlock/sys/boot/forth/beastie.4th user/attilio/vmobj-readlock/sys/boot/forth/color.4th user/attilio/vmobj-readlock/sys/boot/forth/color.4th.8 user/attilio/vmobj-readlock/sys/boot/forth/loader.conf.5 user/attilio/vmobj-readlock/sys/boot/forth/menu.4th user/attilio/vmobj-readlock/sys/boot/forth/menu.4th.8 user/attilio/vmobj-readlock/sys/boot/forth/menu.rc user/attilio/vmobj-readlock/sys/boot/forth/version.4th.8 user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/vmobj-readlock/sys/conf/newvers.sh user/attilio/vmobj-readlock/sys/dev/iwn/if_iwn.c user/attilio/vmobj-readlock/sys/fs/ext2fs/ext2_hash.c user/attilio/vmobj-readlock/sys/geom/part/g_part_gpt.c user/attilio/vmobj-readlock/sys/kern/kern_event.c user/attilio/vmobj-readlock/sys/kern/subr_bus.c user/attilio/vmobj-readlock/sys/net80211/ieee80211.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_freebsd.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_freebsd.h user/attilio/vmobj-readlock/sys/net80211/ieee80211_hostap.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_hwmp.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_mesh.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_output.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_power.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_proto.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_proto.h user/attilio/vmobj-readlock/sys/net80211/ieee80211_superg.c user/attilio/vmobj-readlock/sys/net80211/ieee80211_var.h user/attilio/vmobj-readlock/sys/net80211/ieee80211_wds.c user/attilio/vmobj-readlock/sys/sys/event.h user/attilio/vmobj-readlock/tools/tools/sysdoc/sysdoc.sh Directory Properties: user/attilio/vmobj-readlock/ (props changed) user/attilio/vmobj-readlock/cddl/ (props changed) user/attilio/vmobj-readlock/cddl/contrib/opensolaris/ (props changed) user/attilio/vmobj-readlock/crypto/openssl/ (props changed) user/attilio/vmobj-readlock/lib/libc/ (props changed) user/attilio/vmobj-readlock/sys/ (props changed) user/attilio/vmobj-readlock/sys/boot/ (props changed) user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmobj-readlock/sys/conf/ (props changed) Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Aug 8 23:24:36 2013 (r254111) @@ -186,6 +186,7 @@ static const ztest_shared_opts_t ztest_o extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; +extern uint64_t zfs_deadman_synctime; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -365,7 +366,7 @@ ztest_info_t ztest_info[] = { { ztest_fault_inject, 1, &zopt_sometimes }, { ztest_ddt_repair, 1, &zopt_sometimes }, { ztest_dmu_snapshot_hold, 1, &zopt_sometimes }, - { ztest_reguid, 1, &zopt_sometimes }, + { ztest_reguid, 1, &zopt_rarely }, { ztest_spa_rename, 1, &zopt_rarely }, { ztest_scrub, 1, &zopt_rarely }, { ztest_spa_upgrade, 1, &zopt_rarely }, @@ -3606,6 +3607,9 @@ ztest_dmu_read_write(ztest_ds_t *zd, uin else dmu_tx_hold_write(tx, bigobj, bigoff, bigsize); + /* This accounts for setting the checksum/compression. */ + dmu_tx_hold_bonus(tx, bigobj); + txg = ztest_tx_assign(tx, TXG_MIGHTWAIT, FTAG); if (txg == 0) { umem_free(packbuf, packsize); @@ -4756,6 +4760,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 ASSERT(leaves >= 1); /* + * Grab the name lock as reader. There are some operations + * which don't like to have their vdevs changed while + * they are in progress (i.e. spa_change_guid). Those + * operations will have grabbed the name lock as writer. + */ + (void) rw_rdlock(&ztest_name_lock); + + /* * We need SCL_STATE here because we're going to look at vd0->vdev_tsd. */ spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); @@ -4784,7 +4796,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (vd0 != NULL && vd0->vdev_top->vdev_islog) islog = B_TRUE; - if (vd0 != NULL && maxfaults != 1) { + /* + * If the top-level vdev needs to be resilvered + * then we only allow faults on the device that is + * resilvering. + */ + if (vd0 != NULL && maxfaults != 1 && + (!vdev_resilver_needed(vd0->vdev_top, NULL, NULL) || + vd0->vdev_resilvering)) { /* * Make vd0 explicitly claim to be unreadable, * or unwriteable, or reach behind its back @@ -4815,6 +4834,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (sav->sav_count == 0) { spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); return; } vd0 = sav->sav_vdevs[ztest_random(sav->sav_count)]; @@ -4828,6 +4848,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 } spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); /* * If we can tolerate two or more faults, or we're dealing @@ -5293,16 +5314,33 @@ static void * ztest_deadman_thread(void *arg) { ztest_shared_t *zs = arg; - int grace = 300; - hrtime_t delta; - - delta = (zs->zs_thread_stop - zs->zs_thread_start) / NANOSEC + grace; + spa_t *spa = ztest_spa; + hrtime_t delta, total = 0; - (void) poll(NULL, 0, (int)(1000 * delta)); + for (;;) { + delta = (zs->zs_thread_stop - zs->zs_thread_start) / + NANOSEC + zfs_deadman_synctime; - fatal(0, "failed to complete within %d seconds of deadline", grace); + (void) poll(NULL, 0, (int)(1000 * delta)); - return (NULL); + /* + * If the pool is suspended then fail immediately. Otherwise, + * check to see if the pool is making any progress. If + * vdev_deadman() discovers that there hasn't been any recent + * I/Os then it will end up aborting the tests. + */ + if (spa_suspended(spa)) { + fatal(0, "aborting test after %llu seconds because " + "pool has transitioned to a suspended state.", + zfs_deadman_synctime); + return (NULL); + } + vdev_deadman(spa->spa_root_vdev); + + total += zfs_deadman_synctime; + (void) printf("ztest has been running for %lld seconds\n", + total); + } } static void @@ -6031,6 +6069,7 @@ main(int argc, char **argv) (void) setvbuf(stdout, NULL, _IOLBF, 0); dprintf_setup(&argc, argv); + zfs_deadman_synctime = 300; ztest_fd_rand = open("/dev/urandom", O_RDONLY); ASSERT3S(ztest_fd_rand, >=, 0); Modified: user/attilio/vmobj-readlock/crypto/openssl/ssl/s3_cbc.c ============================================================================== --- user/attilio/vmobj-readlock/crypto/openssl/ssl/s3_cbc.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/crypto/openssl/ssl/s3_cbc.c Thu Aug 8 23:24:36 2013 (r254111) @@ -148,7 +148,7 @@ int tls1_cbc_remove_padding(const SSL* s unsigned padding_length, good, to_check, i; const unsigned overhead = 1 /* padding length byte */ + mac_size; /* Check if version requires explicit IV */ - if (s->version >= TLS1_1_VERSION || s->version == DTLS1_VERSION) + if (s->version >= TLS1_1_VERSION || s->version == DTLS1_BAD_VER) { /* These lengths are all public so we can test them in * non-constant time. Modified: user/attilio/vmobj-readlock/gnu/usr.bin/grep/grep.c ============================================================================== --- user/attilio/vmobj-readlock/gnu/usr.bin/grep/grep.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/gnu/usr.bin/grep/grep.c Thu Aug 8 23:24:36 2013 (r254111) @@ -301,14 +301,16 @@ reset (int fd, char const *file, struct error (0, errno, "fstat"); return 0; } - if (directories == SKIP_DIRECTORIES && S_ISDIR (stats->stat.st_mode)) - return 0; + if (fd != STDIN_FILENO) { + if (directories == SKIP_DIRECTORIES && S_ISDIR (stats->stat.st_mode)) + return 0; #ifndef DJGPP - if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode) || S_ISSOCK(stats->stat.st_mode) || S_ISFIFO(stats->stat.st_mode))) + if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode) || S_ISSOCK(stats->stat.st_mode) || S_ISFIFO(stats->stat.st_mode))) #else - if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode))) + if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode))) #endif - return 0; + return 0; + } if ( BZflag || #if HAVE_LIBZ > 0 Modified: user/attilio/vmobj-readlock/lib/libc/gen/fnmatch.c ============================================================================== --- user/attilio/vmobj-readlock/lib/libc/gen/fnmatch.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/lib/libc/gen/fnmatch.c Thu Aug 8 23:24:36 2013 (r254111) @@ -194,8 +194,6 @@ fnmatch1(pattern, string, stringstart, f &patmbs); if (pclen == (size_t)-1 || pclen == (size_t)-2) return (FNM_NOMATCH); - if (pclen == 0) - pc = '\\'; pattern += pclen; } /* FALLTHROUGH */ Modified: user/attilio/vmobj-readlock/lib/libc/iconv/citrus_iconv.c ============================================================================== --- user/attilio/vmobj-readlock/lib/libc/iconv/citrus_iconv.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/lib/libc/iconv/citrus_iconv.c Thu Aug 8 23:24:36 2013 (r254111) @@ -116,7 +116,20 @@ open_shared(struct _citrus_iconv_shared size_t len_convname; int ret; +#ifdef INCOMPATIBLE_WITH_GNU_ICONV + /* + * Sadly, the gnu tools expect iconv to actually parse the + * byte stream and don't allow for a pass-through when + * the (src,dest) encodings are the same. + * See gettext-0.18.3+ NEWS: + * msgfmt now checks PO file headers more strictly with less + * false-positives. + * NetBSD don't do this either. + */ module = (strcmp(src, dst) != 0) ? "iconv_std" : "iconv_none"; +#else + module = "iconv_std"; +#endif /* initialize iconv handle */ len_convname = strlen(convname); Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Thu Aug 8 23:24:36 2013 (r254111) @@ -531,6 +531,10 @@ static void create_pagetables(vm_paddr_t *firstaddr) { int i, j, ndm1g, nkpdpe; + pt_entry_t *pt_p; + pd_entry_t *pd_p; + pdp_entry_t *pdp_p; + pml4_entry_t *p4_p; /* Allocate page table pages for the direct map */ ndmpdp = (ptoa(Maxmem) + NBPDP - 1) >> PDPSHIFT; @@ -561,32 +565,26 @@ create_pagetables(vm_paddr_t *firstaddr) KPDphys = allocpages(firstaddr, nkpdpe); /* Fill in the underlying page table pages */ - /* Read-only from zero to physfree */ + /* Nominally read-only (but really R/W) from zero to physfree */ /* XXX not fully used, underneath 2M pages */ - for (i = 0; (i << PAGE_SHIFT) < *firstaddr; i++) { - ((pt_entry_t *)KPTphys)[i] = i << PAGE_SHIFT; - ((pt_entry_t *)KPTphys)[i] |= PG_RW | PG_V | PG_G; - } + pt_p = (pt_entry_t *)KPTphys; + for (i = 0; ptoa(i) < *firstaddr; i++) + pt_p[i] = ptoa(i) | PG_RW | PG_V | PG_G; /* Now map the page tables at their location within PTmap */ - for (i = 0; i < nkpt; i++) { - ((pd_entry_t *)KPDphys)[i] = KPTphys + (i << PAGE_SHIFT); - ((pd_entry_t *)KPDphys)[i] |= PG_RW | PG_V; - } + pd_p = (pd_entry_t *)KPDphys; + for (i = 0; i < nkpt; i++) + pd_p[i] = (KPTphys + ptoa(i)) | PG_RW | PG_V; /* Map from zero to end of allocations under 2M pages */ /* This replaces some of the KPTphys entries above */ - for (i = 0; (i << PDRSHIFT) < *firstaddr; i++) { - ((pd_entry_t *)KPDphys)[i] = i << PDRSHIFT; - ((pd_entry_t *)KPDphys)[i] |= PG_RW | PG_V | PG_PS | PG_G; - } + for (i = 0; (i << PDRSHIFT) < *firstaddr; i++) + pd_p[i] = (i << PDRSHIFT) | PG_RW | PG_V | PG_PS | PG_G; /* And connect up the PD to the PDP */ - for (i = 0; i < nkpdpe; i++) { - ((pdp_entry_t *)KPDPphys)[i + KPDPI] = KPDphys + - (i << PAGE_SHIFT); - ((pdp_entry_t *)KPDPphys)[i + KPDPI] |= PG_RW | PG_V | PG_U; - } + pdp_p = (pdp_entry_t *)KPDPphys; + for (i = 0; i < nkpdpe; i++) + pdp_p[i + KPDPI] = (KPDphys + ptoa(i)) | PG_RW | PG_V | PG_U; /* * Now, set up the direct map region using 2MB and/or 1GB pages. If @@ -596,37 +594,39 @@ create_pagetables(vm_paddr_t *firstaddr) * memory, pmap_change_attr() will demote any 2MB or 1GB page mappings * that are partially used. */ + pd_p = (pd_entry_t *)DMPDphys; for (i = NPDEPG * ndm1g, j = 0; i < NPDEPG * ndmpdp; i++, j++) { - ((pd_entry_t *)DMPDphys)[j] = (vm_paddr_t)i << PDRSHIFT; + pd_p[j] = (vm_paddr_t)i << PDRSHIFT; /* Preset PG_M and PG_A because demotion expects it. */ - ((pd_entry_t *)DMPDphys)[j] |= PG_RW | PG_V | PG_PS | PG_G | + pd_p[j] |= PG_RW | PG_V | PG_PS | PG_G | PG_M | PG_A; } + pdp_p = (pdp_entry_t *)DMPDPphys; for (i = 0; i < ndm1g; i++) { - ((pdp_entry_t *)DMPDPphys)[i] = (vm_paddr_t)i << PDPSHIFT; + pdp_p[i] = (vm_paddr_t)i << PDPSHIFT; /* Preset PG_M and PG_A because demotion expects it. */ - ((pdp_entry_t *)DMPDPphys)[i] |= PG_RW | PG_V | PG_PS | PG_G | + pdp_p[i] |= PG_RW | PG_V | PG_PS | PG_G | PG_M | PG_A; } for (j = 0; i < ndmpdp; i++, j++) { - ((pdp_entry_t *)DMPDPphys)[i] = DMPDphys + (j << PAGE_SHIFT); - ((pdp_entry_t *)DMPDPphys)[i] |= PG_RW | PG_V | PG_U; + pdp_p[i] = DMPDphys + ptoa(j); + pdp_p[i] |= PG_RW | PG_V | PG_U; } /* And recursively map PML4 to itself in order to get PTmap */ - ((pdp_entry_t *)KPML4phys)[PML4PML4I] = KPML4phys; - ((pdp_entry_t *)KPML4phys)[PML4PML4I] |= PG_RW | PG_V | PG_U; + p4_p = (pml4_entry_t *)KPML4phys; + p4_p[PML4PML4I] = KPML4phys; + p4_p[PML4PML4I] |= PG_RW | PG_V | PG_U; /* Connect the Direct Map slot(s) up to the PML4. */ for (i = 0; i < NDMPML4E; i++) { - ((pdp_entry_t *)KPML4phys)[DMPML4I + i] = DMPDPphys + - (i << PAGE_SHIFT); - ((pdp_entry_t *)KPML4phys)[DMPML4I + i] |= PG_RW | PG_V | PG_U; + p4_p[DMPML4I + i] = DMPDPphys + ptoa(i); + p4_p[DMPML4I + i] |= PG_RW | PG_V | PG_U; } /* Connect the KVA slot up to the PML4 */ - ((pdp_entry_t *)KPML4phys)[KPML4I] = KPDPphys; - ((pdp_entry_t *)KPML4phys)[KPML4I] |= PG_RW | PG_V | PG_U; + p4_p[KPML4I] = KPDPphys; + p4_p[KPML4I] |= PG_RW | PG_V | PG_U; } /* Modified: user/attilio/vmobj-readlock/sys/boot/common/part.c ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/common/part.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/common/part.c Thu Aug 8 23:24:36 2013 (r254111) @@ -181,7 +181,7 @@ gpt_checkhdr(struct gpt_hdr *hdr, uint64 } hdr->hdr_entries = le32toh(hdr->hdr_entries); hdr->hdr_entsz = le32toh(hdr->hdr_entsz); - if (hdr->hdr_entries < 128 || + if (hdr->hdr_entries == 0 || hdr->hdr_entsz < sizeof(struct gpt_ent) || sectorsize % hdr->hdr_entsz != 0) { DEBUG("invalid entry size or number of entries"); @@ -203,11 +203,14 @@ gpt_checktbl(const struct gpt_hdr *hdr, int i, cnt; cnt = size / hdr->hdr_entsz; - /* Check CRC only when buffer size is enough for table. */ - if (hdr->hdr_entries <= cnt && - crc32(tbl, size) != hdr->hdr_crc_table) { - DEBUG("GPT table's CRC doesn't match"); - return (-1); + if (hdr->hdr_entries <= cnt) { + cnt = hdr->hdr_entries; + /* Check CRC only when buffer size is enough for table. */ + if (hdr->hdr_crc_table != + crc32(tbl, hdr->hdr_entries * hdr->hdr_entsz)) { + DEBUG("GPT table's CRC doesn't match"); + return (-1); + } } ent = (struct gpt_ent *)tbl; for (i = 0; i < cnt; i++, ent++) { Modified: user/attilio/vmobj-readlock/sys/boot/forth/beastie.4th ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/beastie.4th Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/beastie.4th Thu Aug 8 23:24:36 2013 (r254111) @@ -1,6 +1,6 @@ \ Copyright (c) 2003 Scott Long \ Copyright (c) 2003 Aleksander Fafula -\ Copyright (c) 2006-2011 Devin Teske +\ Copyright (c) 2006-2013 Devin Teske \ All rights reserved. \ \ Redistribution and use in source and binary forms, with or without @@ -181,8 +181,8 @@ variable logoY \ beastie Color ``Helper Daemon'' mascot (19 rows x 34 columns) \ beastiebw B/W ``Helper Daemon'' mascot (19 rows x 34 columns) \ fbsdbw "FreeBSD" logo in B/W (13 rows x 21 columns) -\ orb Color ``Orb'' mascot (15 rows x 30 columns) -\ orbbw B/W ``Orb'' mascot (15 rows x 32 columns) (default) +\ orb Color ``Orb'' mascot (15 rows x 30 columns) (default) +\ orbbw B/W ``Orb'' mascot (15 rows x 32 columns) \ \ NOTE: Setting `loader_logo' to an undefined value (such as "none") will \ prevent beastie from being drawn. Modified: user/attilio/vmobj-readlock/sys/boot/forth/color.4th ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/color.4th Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/color.4th Thu Aug 8 23:24:36 2013 (r254111) @@ -1,4 +1,4 @@ -\ Copyright (c) 2011 Devin Teske +\ Copyright (c) 2011-2013 Devin Teske \ All rights reserved. \ \ Redistribution and use in source and binary forms, with or without @@ -26,23 +26,24 @@ marker task-color.4th -\ This function returns TRUE if the `loader_color' environment variable is set -\ to YES, yes, or 1. Otherwise, FALSE is returned. +\ This function returns FALSE if the `loader_color' environment variable is set +\ to NO, no, or 0. Otherwise, TRUE is returned (unless booting serial). \ : loader_color? ( -- N ) s" loader_color" getenv dup -1 <> if - 2dup s" YES" compare-insensitive 0= if + 2dup s" NO" compare-insensitive 0= if 2drop - TRUE exit + FALSE exit then - 2dup s" 1" compare 0= if + 2dup s" 0" compare 0= if 2drop - TRUE exit + FALSE exit then drop then + drop - drop FALSE exit + boot_serial? if FALSE else TRUE then ; Modified: user/attilio/vmobj-readlock/sys/boot/forth/color.4th.8 ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/color.4th.8 Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/color.4th.8 Thu Aug 8 23:24:36 2013 (r254111) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2011 Devin Teske +.\" Copyright (c) 2011-2013 Devin Teske .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 18, 2011 +.Dd August 6, 2013 .Dt COLOR.4TH 8 .Os .Sh NAME @@ -57,26 +57,26 @@ The commands provided by it are: .Pp .Bl -tag -width disable-module_module -compact -offset indent .It Ic loader_color? -Returns TRUE if the +Returns FALSE if the .Ic loader_color environment variable is set to -.Dq YES +.Dq NO (case-insensitive) or -.Dq 1 . -Otherwise returns FALSE. +.Dq 0 . +Otherwise returns TRUE +.Pq unless booting serial . .El .Pp The environment variables that effect its behavior are: .Bl -tag -width bootfile -offset indent .It Va loader_color If set to -.Dq YES +.Dq NO (case-insensitive) or -.Dq 1 , +.Dq 0 , causes .Ic loader_color? -to return TRUE, indicating to many other modules that color should be used -whenever/wherever possible. +to return FALSE, indicating to many modules that color should not be used. .El .Sh FILES .Bl -tag -width /boot/loader.4th -compact Modified: user/attilio/vmobj-readlock/sys/boot/forth/loader.conf.5 ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/loader.conf.5 Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/loader.conf.5 Thu Aug 8 23:24:36 2013 (r254111) @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd December 10, 2012 +.Dd August 6, 2013 .Dt LOADER.CONF 5 .Os .Sh NAME @@ -245,8 +245,8 @@ and .Dq Li none . .It Va loader_color If set to -.Dq YES , -the beastie boot menu will be displayed using ANSI coloring where possible. +.Dq NO , +the beastie boot menu will be displayed without ANSI coloring. .El .Sh FILES .Bl -tag -width /boot/defaults/loader.conf -compact Modified: user/attilio/vmobj-readlock/sys/boot/forth/menu.4th ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/menu.4th Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/menu.4th Thu Aug 8 23:24:36 2013 (r254111) @@ -1,6 +1,6 @@ \ Copyright (c) 2003 Scott Long \ Copyright (c) 2003 Aleksander Fafula -\ Copyright (c) 2006-2012 Devin Teske +\ Copyright (c) 2006-2013 Devin Teske \ All rights reserved. \ \ Redistribution and use in source and binary forms, with or without @@ -35,6 +35,8 @@ f_double \ Set frames to double ( \ f_single if you want single frames. 46 constant dot \ ASCII definition of a period (in decimal) + 5 constant menu_default_x \ default column position of timeout +10 constant menu_default_y \ default row position of timeout msg 4 constant menu_timeout_default_x \ default column position of timeout 23 constant menu_timeout_default_y \ default row position of timeout msg 10 constant menu_timeout_default \ default timeout (in seconds) @@ -128,15 +130,19 @@ create init_text8 255 allot : cycle_stateN ( N -- ADDR ) s" cycle_stateN" 11 +c! evaluate ; : init_textN ( N -- C-ADDR ) s" init_textN" 9 +c! evaluate ; -: str_loader_menu_title ( -- C-ADDR/U ) s" loader_menu_title" ; -: str_loader_menu_timeout_x ( -- C-ADDR/U ) s" loader_menu_timeout_x" ; -: str_loader_menu_timeout_y ( -- C-ADDR/U ) s" loader_menu_timeout_y" ; -: str_menu_init ( -- C-ADDR/U ) s" menu_init" ; -: str_menu_timeout_command ( -- C-ADDR/U ) s" menu_timeout_command" ; -: str_menu_reboot ( -- C-ADDR/U ) s" menu_reboot" ; -: str_menu_acpi ( -- C-ADDR/U ) s" menu_acpi" ; -: str_menu_options ( -- C-ADDR/U ) s" menu_options" ; -: str_menu_optionstext ( -- C-ADDR/U ) s" menu_optionstext" ; +: str_loader_menu_frame ( -- C-ADDR/U ) s" loader_menu_frame" ; +: str_loader_menu_title ( -- C-ADDR/U ) s" loader_menu_title" ; +: str_loader_menu_title_align ( -- C-ADDR/U ) s" loader_menu_title_align" ; +: str_loader_menu_x ( -- C-ADDR/U ) s" loader_menu_x" ; +: str_loader_menu_y ( -- C-ADDR/U ) s" loader_menu_y" ; +: str_loader_menu_timeout_x ( -- C-ADDR/U ) s" loader_menu_timeout_x" ; +: str_loader_menu_timeout_y ( -- C-ADDR/U ) s" loader_menu_timeout_y" ; +: str_menu_init ( -- C-ADDR/U ) s" menu_init" ; +: str_menu_timeout_command ( -- C-ADDR/U ) s" menu_timeout_command" ; +: str_menu_reboot ( -- C-ADDR/U ) s" menu_reboot" ; +: str_menu_acpi ( -- C-ADDR/U ) s" menu_acpi" ; +: str_menu_options ( -- C-ADDR/U ) s" menu_options" ; +: str_menu_optionstext ( -- C-ADDR/U ) s" menu_optionstext" ; : str_menu_init[x] ( -- C-ADDR/U ) s" menu_init[x]" ; : str_menu_command[x] ( -- C-ADDR/U ) s" menu_command[x]" ; @@ -218,7 +224,7 @@ create init_text8 255 allot \ NOTE: no need to check toggle_stateN since the first time we \ are called, we will populate init_textN. Further, we don't \ need to test whether menu_caption[x] (ansi_caption[x] when - \ loader_color=1) is available since we would not have been + \ loader_color?=1) is available since we would not have been \ called if the caption was NULL. \ base name of environment variable @@ -441,7 +447,24 @@ create init_text8 255 allot str_loader_menu_title getenv dup -1 = if drop s" Welcome to FreeBSD" then - 24 over 2 / - 9 at-xy type + TRUE ( use default alignment ) + str_loader_menu_title_align getenv dup -1 <> if + 2dup s" left" compare-insensitive 0= if ( 1 ) + 2drop ( c-addr/u ) drop ( bool ) + menuX @ menuY @ 1- + FALSE ( don't use default alignment ) + else ( 1 ) 2dup s" right" compare-insensitive 0= if ( 2 ) + 2drop ( c-addr/u ) drop ( bool ) + menuX @ 42 + 4 - over - menuY @ 1- + FALSE ( don't use default alignment ) + else ( 2 ) 2drop ( c-addr/u ) then ( 1 ) then + else + drop ( getenv cruft ) + then + if ( use default center alignement? ) + menuX @ 19 + over 2 / - menuY @ 1- + then + at-xy type \ If $menu_init is set, evaluate it (allowing for whole menus to be \ constructed dynamically -- as this function could conceivably set @@ -733,8 +756,45 @@ create init_text8 255 allot menu_start 1- menuidx ! \ Initialize the starting index for the menu 0 menurow ! \ Initialize the starting position for the menu - 42 13 2 9 box \ Draw frame (w,h,x,y) - 0 25 at-xy \ Move cursor to the bottom for output + + \ Assign configuration values + str_loader_menu_y getenv dup -1 = if + drop \ no custom row position + menu_default_y + else + \ make sure custom position is a number + ?number 0= if + menu_default_y \ or use default + then + then + menuY ! + str_loader_menu_x getenv dup -1 = if + drop \ no custom column position + menu_default_x + else + \ make sure custom position is a number + ?number 0= if + menu_default_x \ or use default + then + then + menuX ! + + \ Interpret a custom frame type for the menu + TRUE ( draw a box? default yes, but might be altered below ) + str_loader_menu_frame getenv dup -1 = if ( 1 ) + drop \ no custom frame type + else ( 1 ) 2dup s" single" compare-insensitive 0= if ( 2 ) + f_single ( see frames.4th ) + else ( 2 ) 2dup s" double" compare-insensitive 0= if ( 3 ) + f_double ( see frames.4th ) + else ( 3 ) s" none" compare-insensitive 0= if ( 4 ) + drop FALSE \ don't draw a box + ( 4 ) then ( 3 ) then ( 2 ) then ( 1 ) then + if + 42 13 menuX @ 3 - menuY @ 1- box \ Draw frame (w,h,x,y) + then + + 0 25 at-xy \ Move cursor to the bottom for output ; \ Main function. Call this from your `loader.rc' file. @@ -965,10 +1025,7 @@ create init_text8 255 allot menu-erase ; -\ Assign configuration values bullet menubllt ! -10 menuY ! -5 menuX ! \ Initialize our menu initialization state variables 0 init_state1 ! Modified: user/attilio/vmobj-readlock/sys/boot/forth/menu.4th.8 ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/menu.4th.8 Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/menu.4th.8 Thu Aug 8 23:24:36 2013 (r254111) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2011-2012 Devin Teske +.\" Copyright (c) 2011-2013 Devin Teske .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 25, 2012 +.Dd August 6, 2013 .Dt MENU.4TH 8 .Os .Sh NAME @@ -83,13 +83,14 @@ The environment variables that effect it .Bl -tag -width bootfile -offset indent .It Va loader_color If set to -.Dq Li YES +.Dq Li NO (case-insensitive) or -.Dq Li 1 , -causes the menu to be displayed in color wherever possible. -This includes the -use of ANSI bold for numbers appearing to the left of menuitems and the use of -special +.Dq Li 0 , +causes the menu to be displayed without color. +The default is to use ANSI coloring whenever possible. +If serial boot is enabled, color is disabled by default. +Color features include the use of ANSI bold for numbers appearing to the left +of menuitems and the use of special .Dq Li ansi variables described below. .It Va autoboot_delay @@ -122,6 +123,14 @@ The command to be executed after seconds if a key is not pressed. The default is .Ic boot . +.It Va loader_menu_frame +Sets the desired box style to draw around the boot menu. +Possible values are: +.Dq Li single +.Pq the default , +.Dq Li double , +and +.Dq Li none . .It Va loader_menu_timeout_x Sets the desired column position of the timeout countdown text. Default is 4. @@ -129,9 +138,24 @@ Default is 4. Sets the desired row position of the timeout countdown text. Default is 23. .It Va loader_menu_title -The text to display centered above the menu. +The text to display above the menu. Default is .Dq Li "Welcome to FreeBSD" . +.It Va loader_menu_title_align +Default is to align +.Ic loader_menu_title +centered above the menu. This can be set to +.Dq Li left +or +.Dq Li right +to instead display the title left-or-right justified +.Pq respectively . +.It Va loader_menu_x +Sets the desired column position of the boot menu. +Default is 5. +.It Va loader_menu_y +Sets the desired row position of the boot menu. +Default is 10. .It Va menu_caption[x] The text to be displayed for the numbered menuitem .Dq Li x . @@ -148,7 +172,9 @@ When pressed, will cause the execution o .It Va ansi_caption[x] If .Va loader_color -is set, use this caption for menuitem +is set +.Pq enabled by default , +use this caption for menuitem .Dq Li x instead of .Va menu_caption[x] . @@ -165,7 +191,8 @@ Like .Va toggled_text[x] except used when .Va loader_color -is enabled. +is enabled +.Pq default . .It Va menu_caption[x][y] For menuitems where .Va menu_command[x] @@ -179,7 +206,8 @@ Like .Va menu_caption[x][y] except used when .Va loader_color -is enabled. +is enabled +.Pq default . .It Va menu_acpi When set to a number .Dq Li x Modified: user/attilio/vmobj-readlock/sys/boot/forth/menu.rc ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/menu.rc Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/menu.rc Thu Aug 8 23:24:36 2013 (r254111) @@ -16,7 +16,7 @@ draw-brand \ draw the FreeBSD title ( menu-init \ initialize the menu area (see `menu.4th') \ Initialize main menu constructs (see `menu.4th') -\ NOTE: To use the `ansi' variants, add `loader_color=1' to loader.conf(5) +\ NOTE: To use `non-ansi' variants, add `loader_color=0' to loader.conf(5) \ \ MAIN MENU Modified: user/attilio/vmobj-readlock/sys/boot/forth/version.4th.8 ============================================================================== --- user/attilio/vmobj-readlock/sys/boot/forth/version.4th.8 Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/boot/forth/version.4th.8 Thu Aug 8 23:24:36 2013 (r254111) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2011 Devin Teske +.\" Copyright (c) 2011-2013 Devin Teske .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 19, 2011 +.Dd August 6, 2013 .Dt VERSION.4TH 8 .Os .Sh NAME @@ -84,10 +84,11 @@ Sets the desired ending row position of Default is 24. .It Va loader_color If set to -.Dq Li YES +.Dq Li NO (case-insensitive) or -.Dq Li 1 , -causes the version to be printed in ANSI Cyan. +.Dq Li 0 , +causes the version to be printed without color +.Pq default is ANSI Cyan . .El .Sh FILES .Bl -tag -width /boot/loader.4th -compact @@ -113,6 +114,7 @@ loader_version="loader 1.1" .Sh SEE ALSO .Xr loader.conf 5 , .Xr loader 8 , +.Xr color.4th 8 .Sh HISTORY The .Nm Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Aug 8 23:24:36 2013 (r254111) @@ -448,12 +448,12 @@ dmu_tx_count_free(dmu_tx_hold_t *txh, ui blkid = off >> dn->dn_datablkshift; nblks = (len + dn->dn_datablksz - 1) >> dn->dn_datablkshift; - if (blkid >= dn->dn_maxblkid) { + if (blkid > dn->dn_maxblkid) { rw_exit(&dn->dn_struct_rwlock); return; } if (blkid + nblks > dn->dn_maxblkid) - nblks = dn->dn_maxblkid - blkid; + nblks = dn->dn_maxblkid - blkid + 1; } l0span = nblks; /* save for later use to calc level > 1 overhead */ Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Aug 8 23:24:36 2013 (r254111) @@ -759,6 +759,7 @@ spa_change_guid(spa_t *spa) int error; uint64_t guid; + mutex_enter(&spa->spa_vdev_top_lock); mutex_enter(&spa_namespace_lock); guid = spa_generate_guid(NULL); @@ -771,6 +772,7 @@ spa_change_guid(spa_t *spa) } mutex_exit(&spa_namespace_lock); + mutex_exit(&spa->spa_vdev_top_lock); return (error); } @@ -4861,7 +4863,6 @@ spa_vdev_detach(spa_t *spa, uint64_t gui if (pvd->vdev_ops == &vdev_spare_ops) cvd->vdev_unspare = B_FALSE; vdev_remove_parent(cvd); - cvd->vdev_resilvering = B_FALSE; } @@ -5496,6 +5497,13 @@ spa_vdev_resilver_done_hunt(vdev_t *vd) return (oldvd); } + if (vd->vdev_resilvering && vdev_dtl_empty(vd, DTL_MISSING) && + vdev_dtl_empty(vd, DTL_OUTAGE)) { + ASSERT(vd->vdev_ops->vdev_op_leaf); + vd->vdev_resilvering = B_FALSE; + vdev_config_dirty(vd->vdev_top); + } + /* * Check for a completed replacement. We always consider the first * vdev in the list to be the oldest vdev, and the last one to be Modified: user/attilio/vmobj-readlock/sys/conf/newvers.sh ============================================================================== --- user/attilio/vmobj-readlock/sys/conf/newvers.sh Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/conf/newvers.sh Thu Aug 8 23:24:36 2013 (r254111) @@ -88,19 +88,31 @@ v=`cat version` u=${USER:-root} d=`pwd` i=`${MAKE:-make} -V KERN_IDENT` compiler_v=$($(${MAKE:-make} -V CC) -v 2>&1 | grep 'version') -if [ -x /usr/bin/svnliteversion ] ; then - svnversion=/usr/bin/svnliteversion -fi - for dir in /usr/bin /usr/local/bin; do if [ ! -z "${svnversion}" ] ; then break fi if [ -x "${dir}/svnversion" ] && [ -z ${svnversion} ] ; then - svnversion=${dir}/svnversion - break + # Run svnversion from ${dir} on this script; if return code + # is not zero, the checkout might not be compatible with the + # svnversion being used. + ${dir}/svnversion $(basename ${0}) >/dev/null 2>&1 + if [ $? -eq 0 ]; then + svnversion=${dir}/svnversion + break + fi fi done + +if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then + /usr/bin/svnversion $(basename ${0}) >/dev/null 2>&1 + if [ $? -eq 0 ]; then + svnversion=/usr/bin/svnliteversion + else + svnversion= + fi +fi + for dir in /usr/bin /usr/local/bin; do if [ -x "${dir}/p4" ] && [ -z ${p4_cmd} ] ; then p4_cmd=${dir}/p4 Modified: user/attilio/vmobj-readlock/sys/dev/iwn/if_iwn.c ============================================================================== --- user/attilio/vmobj-readlock/sys/dev/iwn/if_iwn.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/dev/iwn/if_iwn.c Thu Aug 8 23:24:36 2013 (r254111) @@ -638,6 +638,20 @@ iwn_attach(device_t dev) if (sc->sc_flags & IWN_FLAG_HAS_11N) { ic->ic_rxstream = sc->nrxchains; ic->ic_txstream = sc->ntxchains; + + /* + * The NICs we currently support cap out at 2x2 support + * separate from the chains being used. + * + * This is a total hack to work around that until some + * per-device method is implemented to return the + * actual stream support. + */ + if (ic->ic_rxstream > 2) + ic->ic_rxstream = 2; + if (ic->ic_txstream > 2) + ic->ic_txstream = 2; + ic->ic_htcaps = IEEE80211_HTCAP_SMPS_OFF /* SMPS mode disabled */ | IEEE80211_HTCAP_SHORTGI20 /* short GI in 20MHz */ Modified: user/attilio/vmobj-readlock/sys/fs/ext2fs/ext2_hash.c ============================================================================== --- user/attilio/vmobj-readlock/sys/fs/ext2fs/ext2_hash.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/fs/ext2fs/ext2_hash.c Thu Aug 8 23:24:36 2013 (r254111) @@ -73,7 +73,7 @@ /* * FF, GG, and HH are transformations for rounds 1, 2, and 3. - * Rotation is separated from addition to prevent recompuatation + * Rotation is separated from addition to prevent recomputation. */ #define FF(a, b, c, d, x, s) { \ (a) += F ((b), (c), (d)) + (x); \ Modified: user/attilio/vmobj-readlock/sys/geom/part/g_part_gpt.c ============================================================================== --- user/attilio/vmobj-readlock/sys/geom/part/g_part_gpt.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/geom/part/g_part_gpt.c Thu Aug 8 23:24:36 2013 (r254111) @@ -916,9 +916,10 @@ g_part_gpt_read(struct g_part_table *bas basetable->gpt_first = table->hdr->hdr_lba_start; basetable->gpt_last = table->hdr->hdr_lba_end; - basetable->gpt_entries = table->hdr->hdr_entries; + basetable->gpt_entries = (table->hdr->hdr_lba_start - 2) * + pp->sectorsize / table->hdr->hdr_entsz; - for (index = basetable->gpt_entries - 1; index >= 0; index--) { + for (index = table->hdr->hdr_entries - 1; index >= 0; index--) { if (EQUUID(&tbl[index].ent_type, &gpt_uuid_unused)) continue; entry = (struct g_part_gpt_entry *)g_part_new_entry( Modified: user/attilio/vmobj-readlock/sys/kern/kern_event.c ============================================================================== --- user/attilio/vmobj-readlock/sys/kern/kern_event.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/kern/kern_event.c Thu Aug 8 23:24:36 2013 (r254111) @@ -431,8 +431,11 @@ filt_proc(struct knote *kn, long hint) if (!(kn->kn_status & KN_DETACHED)) knlist_remove_inevent(&p->p_klist, kn); kn->kn_flags |= (EV_EOF | EV_ONESHOT); - kn->kn_data = p->p_xstat; kn->kn_ptr.p_proc = NULL; + if (kn->kn_fflags & NOTE_EXIT) + kn->kn_data = p->p_xstat; + if (kn->kn_fflags == 0) + kn->kn_flags |= EV_DROP; return (1); } @@ -1410,7 +1413,21 @@ retry: KASSERT((kn->kn_status & KN_INFLUX) == 0, ("KN_INFLUX set when not suppose to be")); - if ((kn->kn_flags & EV_ONESHOT) == EV_ONESHOT) { + if ((kn->kn_flags & EV_DROP) == EV_DROP) { + kn->kn_status &= ~KN_QUEUED; + kn->kn_status |= KN_INFLUX; + kq->kq_count--; + KQ_UNLOCK(kq); + /* + * We don't need to lock the list since we've marked + * it _INFLUX. + */ + if (!(kn->kn_status & KN_DETACHED)) + kn->kn_fop->f_detach(kn); + knote_drop(kn, td); + KQ_LOCK(kq); + continue; + } else if ((kn->kn_flags & EV_ONESHOT) == EV_ONESHOT) { kn->kn_status &= ~KN_QUEUED; kn->kn_status |= KN_INFLUX; kq->kq_count--; Modified: user/attilio/vmobj-readlock/sys/kern/subr_bus.c ============================================================================== --- user/attilio/vmobj-readlock/sys/kern/subr_bus.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/kern/subr_bus.c Thu Aug 8 23:24:36 2013 (r254111) @@ -2077,11 +2077,11 @@ device_probe_child(device_t dev, device_ if (best == NULL || result > pri) { /* * Probes that return BUS_PROBE_NOWILDCARD - * or lower only match when they are set - * in stone by the parent bus. + * or lower only match on devices whose + * driver was explicitly specified. */ if (result <= BUS_PROBE_NOWILDCARD && - child->flags & DF_WILDCARD) + !(child->flags & DF_FIXEDCLASS)) continue; best = dl; pri = result; Modified: user/attilio/vmobj-readlock/sys/net80211/ieee80211.c ============================================================================== --- user/attilio/vmobj-readlock/sys/net80211/ieee80211.c Thu Aug 8 23:20:54 2013 (r254110) +++ user/attilio/vmobj-readlock/sys/net80211/ieee80211.c Thu Aug 8 23:24:36 2013 (r254111) @@ -241,9 +241,15 @@ null_transmit(struct ifnet *ifp, struct return EACCES; /* XXX EIO/EPERM? */ } +#if __FreeBSD_version >= 1000031 static int null_output(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst, struct route *ro) +#else +static int +null_output(struct ifnet *ifp, struct mbuf *m, + struct sockaddr *dst, struct route *ro) +#endif { if_printf(ifp, "discard raw packet\n"); return null_transmit(ifp, m); @@ -427,13 +433,10 @@ ieee80211_vap_setup(struct ieee80211com if_initname(ifp, name, unit); ifp->if_softc = vap; /* back pointer */ ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST; - ifp->if_start = ieee80211_start; + ifp->if_transmit = ieee80211_vap_transmit; + ifp->if_qflush = ieee80211_vap_qflush; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***