From owner-svn-src-projects@FreeBSD.ORG Sun Feb 6 08:46:37 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 59F68106564A; Sun, 6 Feb 2011 08:46:37 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 489A88FC0A; Sun, 6 Feb 2011 08:46:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p168kbPl057831; Sun, 6 Feb 2011 08:46:37 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p168kbwx057829; Sun, 6 Feb 2011 08:46:37 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102060846.p168kbwx057829@svn.freebsd.org> From: Alexander Motin Date: Sun, 6 Feb 2011 08:46:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218364 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Feb 2011 08:46:37 -0000 Author: mav Date: Sun Feb 6 08:46:37 2011 New Revision: 218364 URL: http://svn.freebsd.org/changeset/base/218364 Log: Use circular comparision of generations. If (unlikely) generations counter will ever wrap around, such logic may give a bit more reliable detection of the newest metadata copy. It is based on assumtion that all disk's metadata updated same time and should stay close and no disk should rejoin the array after being offline/failed/stale for more then half of generation counter wrap period. In last case this question just has no valid answer. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Sun Feb 6 07:41:27 2011 (r218363) +++ projects/graid/head/sys/geom/raid/md_intel.c Sun Feb 6 08:46:37 2011 (r218364) @@ -964,7 +964,7 @@ g_raid_md_intel_new_disk(struct g_raid_d } else { /* If we haven't started yet - check metadata freshness. */ if (mdi->mdio_meta == NULL || - pdmeta->generation > mdi->mdio_generation) { + ((int32_t)(pdmeta->generation - mdi->mdio_generation)) > 0) { G_RAID_DEBUG(1, "Newer disk"); if (mdi->mdio_meta != NULL) free(mdi->mdio_meta, M_MD_INTEL); From owner-svn-src-projects@FreeBSD.ORG Sun Feb 6 10:21:33 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D7539106564A; Sun, 6 Feb 2011 10:21:33 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AB1A98FC0C; Sun, 6 Feb 2011 10:21:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p16ALXj0060002; Sun, 6 Feb 2011 10:21:33 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p16ALXhr059999; Sun, 6 Feb 2011 10:21:33 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102061021.p16ALXhr059999@svn.freebsd.org> From: Alexander Motin Date: Sun, 6 Feb 2011 10:21:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218367 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Feb 2011 10:21:33 -0000 Author: mav Date: Sun Feb 6 10:21:33 2011 New Revision: 218367 URL: http://svn.freebsd.org/changeset/base/218367 Log: Log subdisks as "vol:pos-disk". New first part could be event more important then the second. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Sun Feb 6 09:49:55 2011 (r218366) +++ projects/graid/head/sys/geom/raid/g_raid.c Sun Feb 6 10:21:33 2011 (r218367) @@ -332,15 +332,6 @@ g_raid_get_diskname(struct g_raid_disk * return (disk->d_consumer->provider->name); } -static const char * -g_raid_get_subdiskname(struct g_raid_subdisk *subdisk) -{ - - if (subdisk->sd_disk == NULL) - return ("[unknown]"); - return (g_raid_get_diskname(subdisk->sd_disk)); -} - void g_raid_report_disk_state(struct g_raid_disk *disk) { @@ -392,8 +383,9 @@ void g_raid_change_subdisk_state(struct g_raid_subdisk *sd, int state) { - G_RAID_DEBUG(1, "Subdisk %s state changed from %s to %s.", - g_raid_get_subdiskname(sd), + G_RAID_DEBUG(1, "Subdisk %s:%d-%s state changed from %s to %s.", + sd->sd_volume->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]", g_raid_subdisk_state2str(sd->sd_state), g_raid_subdisk_state2str(state)); sd->sd_state = state; @@ -1408,9 +1400,10 @@ g_raid_update_subdisk(struct g_raid_subd vol = sd->sd_volume; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(3, "Event %s for subdisk %s.", + G_RAID_DEBUG(2, "Event %s for subdisk %s:%d-%s.", g_raid_subdisk_event2str(event), - g_raid_get_subdiskname(sd)); + vol->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]"); if (vol->v_tr) G_RAID_TR_EVENT(vol->v_tr, sd, event); Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Sun Feb 6 09:49:55 2011 (r218366) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Sun Feb 6 10:21:33 2011 (r218367) @@ -195,8 +195,8 @@ g_raid_tr_update_state_raid1(struct g_ra if (bestsd->sd_state >= G_RAID_SUBDISK_S_UNINITIALIZED) { /* We found reasonable candidate. */ G_RAID_DEBUG(1, - "Promote subdisk %d from %s to ACTIVE.", - bestsd->sd_pos, + "Promote subdisk %s:%d from %s to ACTIVE.", + vol->v_name, bestsd->sd_pos, g_raid_subdisk_state2str(bestsd->sd_state)); g_raid_change_subdisk_state(bestsd, G_RAID_SUBDISK_S_ACTIVE); From owner-svn-src-projects@FreeBSD.ORG Sun Feb 6 21:31:28 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F23C21065674; Sun, 6 Feb 2011 21:31:28 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E087C8FC08; Sun, 6 Feb 2011 21:31:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p16LVSgo077531; Sun, 6 Feb 2011 21:31:28 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p16LVSnd077529; Sun, 6 Feb 2011 21:31:28 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102062131.p16LVSnd077529@svn.freebsd.org> From: Alexander Motin Date: Sun, 6 Feb 2011 21:31:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218380 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Feb 2011 21:31:29 -0000 Author: mav Date: Sun Feb 6 21:31:28 2011 New Revision: 218380 URL: http://svn.freebsd.org/changeset/base/218380 Log: RAID0 doesn't really need to know what event for subdisk came from metadata layer. New state is all it needs to know. Modified: projects/graid/head/sys/geom/raid/tr_raid0.c Modified: projects/graid/head/sys/geom/raid/tr_raid0.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid0.c Sun Feb 6 20:11:24 2011 (r218379) +++ projects/graid/head/sys/geom/raid/tr_raid0.c Sun Feb 6 21:31:28 2011 (r218380) @@ -137,19 +137,15 @@ g_raid_tr_event_raid0(struct g_raid_tr_o trs = (struct g_raid_tr_raid0_object *)tr; vol = tr->tro_volume; sc = vol->v_softc; - if (event == G_RAID_SUBDISK_E_NEW) { - state = sd->sd_state; - if (state != G_RAID_SUBDISK_S_NONE && - state != G_RAID_SUBDISK_S_FAILED && - state != G_RAID_SUBDISK_S_ACTIVE) - g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_ACTIVE); - if (state != sd->sd_state && - !trs->trso_starting && !trs->trso_stopped) - g_raid_write_metadata(sc, vol, sd, NULL); - } else if (event == G_RAID_SUBDISK_E_FAILED) { -// g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_FAILED); - } else - g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_NONE); + + state = sd->sd_state; + if (state != G_RAID_SUBDISK_S_NONE && + state != G_RAID_SUBDISK_S_FAILED && + state != G_RAID_SUBDISK_S_ACTIVE) + g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_ACTIVE); + if (state != sd->sd_state && + !trs->trso_starting && !trs->trso_stopped) + g_raid_write_metadata(sc, vol, sd, NULL); g_raid_tr_update_state_raid0(vol); return (0); } From owner-svn-src-projects@FreeBSD.ORG Sun Feb 6 21:42:28 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE7A91065674; Sun, 6 Feb 2011 21:42:28 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D9F0A8FC0C; Sun, 6 Feb 2011 21:42:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p16LgSBC077787; Sun, 6 Feb 2011 21:42:28 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p16LgSxJ077785; Sun, 6 Feb 2011 21:42:28 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102062142.p16LgSxJ077785@svn.freebsd.org> From: Alexander Motin Date: Sun, 6 Feb 2011 21:42:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218381 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Feb 2011 21:42:29 -0000 Author: mav Date: Sun Feb 6 21:42:28 2011 New Revision: 218381 URL: http://svn.freebsd.org/changeset/base/218381 Log: No need to set states on FAILED and DISCONNECTED events. they are already set by metadata layer. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Sun Feb 6 21:31:28 2011 (r218380) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Sun Feb 6 21:42:28 2011 (r218381) @@ -415,12 +415,10 @@ g_raid_tr_event_raid1(struct g_raid_tr_o if (trs->trso_type == TR_RAID1_REBUILD || trs->trso_type == TR_RAID1_RESYNC) g_raid_tr_raid1_rebuild_abort(tr, vol); -// g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_FAILED); break; case G_RAID_SUBDISK_E_DISCONNECTED: if (trs->trso_type == TR_RAID1_REBUILD) g_raid_tr_raid1_rebuild_abort(tr, vol); - g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_NONE); break; } g_raid_tr_update_state_raid1(vol); From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 10:02:48 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3DE51106566B; Mon, 7 Feb 2011 10:02:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2D19D8FC18; Mon, 7 Feb 2011 10:02:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17A2mQN004827; Mon, 7 Feb 2011 10:02:48 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17A2mrH004823; Mon, 7 Feb 2011 10:02:48 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071002.p17A2mrH004823@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 10:02:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218394 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 10:02:48 -0000 Author: mav Date: Mon Feb 7 10:02:47 2011 New Revision: 218394 URL: http://svn.freebsd.org/changeset/base/218394 Log: - Refactor RAID1 rebuild start. Make it invariant to receved events, only new subdisk state and fact of the change really matters. - Implement UNINITIALIZED -> REBUILD transition. - Rebuild abort/restart still needs some work. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 08:12:24 2011 (r218393) +++ projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 10:02:47 2011 (r218394) @@ -187,10 +187,12 @@ g_raid_subdisk_state2str(int state) return ("FAILED"); case G_RAID_SUBDISK_S_NEW: return ("NEW"); - case G_RAID_SUBDISK_S_STALE: - return ("STALE"); case G_RAID_SUBDISK_S_REBUILD: return ("REBUILD"); + case G_RAID_SUBDISK_S_UNINITIALIZED: + return ("UNINITIALIZED"); + case G_RAID_SUBDISK_S_STALE: + return ("STALE"); case G_RAID_SUBDISK_S_RESYNC: return ("RESYNC"); case G_RAID_SUBDISK_S_ACTIVE: @@ -553,6 +555,30 @@ g_raid_nsubdisks(struct g_raid_volume *v return (n); } +/* + * Return the first subdisk in given state. + * If state is equal to -1, then the first connected disks. + */ +struct g_raid_subdisk * +g_raid_get_subdisk(struct g_raid_volume *vol, int state) +{ + struct g_raid_subdisk *sd; + struct g_raid_softc *sc; + u_int i; + + sc = vol->v_softc; + sx_assert(&sc->sc_lock, SX_LOCKED); + + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if ((state == -1 && + sd->sd_state != G_RAID_SUBDISK_S_NONE) || + sd->sd_state == state) + return (sd); + } + return (NULL); +} + static u_int g_raid_nrequests(struct g_raid_softc *sc, struct g_consumer *cp) { Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Mon Feb 7 08:12:24 2011 (r218393) +++ projects/graid/head/sys/geom/raid/g_raid.h Mon Feb 7 10:02:47 2011 (r218394) @@ -357,6 +357,8 @@ int g_raid_tr_kerneldump_common(struct g u_int g_raid_ndisks(struct g_raid_softc *sc, int state); u_int g_raid_nsubdisks(struct g_raid_volume *vol, int state); u_int g_raid_nopens(struct g_raid_softc *sc); +struct g_raid_subdisk * g_raid_get_subdisk(struct g_raid_volume *vol, + int state); #define G_RAID_DESTROY_SOFT 0 #define G_RAID_DESTROY_DELAYED 1 #define G_RAID_DESTROY_HARD 2 Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 08:12:24 2011 (r218393) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 10:02:47 2011 (r218394) @@ -138,12 +138,9 @@ static struct g_raid_tr_class g_raid_tr_ .trc_priority = 100 }; -static void g_raid_tr_raid1_rebuild_abort(struct g_raid_tr_object *tr, - struct g_raid_volume *vol); -static struct g_raid_subdisk *g_raid_tr_raid1_find_good_drive( - struct g_raid_volume *vol); +static void g_raid_tr_raid1_rebuild_abort(struct g_raid_tr_object *tr); static void g_raid_tr_raid1_maybe_rebuild(struct g_raid_tr_object *tr, - struct g_raid_volume *vol); + struct g_raid_subdisk *sd); static int g_raid_tr_taste_raid1(struct g_raid_tr_object *tr, struct g_raid_volume *vol) @@ -160,10 +157,11 @@ g_raid_tr_taste_raid1(struct g_raid_tr_o } static int -g_raid_tr_update_state_raid1(struct g_raid_volume *vol) +g_raid_tr_update_state_raid1(struct g_raid_volume *vol, + struct g_raid_subdisk *sd) { struct g_raid_tr_raid1_object *trs; - struct g_raid_subdisk *sd, *bestsd; + struct g_raid_subdisk *tsd, *bestsd; u_int s; int i, na, ns; @@ -183,14 +181,14 @@ g_raid_tr_update_state_raid1(struct g_ra */ bestsd = &vol->v_subdisks[0]; for (i = 1; i < vol->v_disks_count; i++) { - sd = &vol->v_subdisks[i]; - if (sd->sd_state > bestsd->sd_state) - bestsd = sd; - else if (sd->sd_state == bestsd->sd_state && - (sd->sd_state == G_RAID_SUBDISK_S_REBUILD || - sd->sd_state == G_RAID_SUBDISK_S_RESYNC) && - sd->sd_rebuild_pos > bestsd->sd_rebuild_pos) - bestsd = sd; + tsd = &vol->v_subdisks[i]; + if (tsd->sd_state > bestsd->sd_state) + bestsd = tsd; + else if (tsd->sd_state == bestsd->sd_state && + (tsd->sd_state == G_RAID_SUBDISK_S_REBUILD || + tsd->sd_state == G_RAID_SUBDISK_S_RESYNC) && + tsd->sd_rebuild_pos > bestsd->sd_rebuild_pos) + bestsd = tsd; } if (bestsd->sd_state >= G_RAID_SUBDISK_S_UNINITIALIZED) { /* We found reasonable candidate. */ @@ -215,8 +213,8 @@ g_raid_tr_update_state_raid1(struct g_ra s = G_RAID_VOLUME_S_DEGRADED; else s = G_RAID_VOLUME_S_BROKEN; + g_raid_tr_raid1_maybe_rebuild(vol->v_tr, sd); } - g_raid_tr_raid1_maybe_rebuild(vol->v_tr, vol); if (s != vol->v_state) { g_raid_event_send(vol, G_RAID_VOLUME_S_ALIVE(s) ? G_RAID_VOLUME_E_UP : G_RAID_VOLUME_E_DOWN, @@ -237,9 +235,9 @@ g_raid_tr_raid1_rebuild_some(struct g_ra trs = (struct g_raid_tr_raid1_object *)tr; if (trs->trso_flags & TR_RAID1_F_DOING_SOME) return; - good_sd = g_raid_tr_raid1_find_good_drive(sd->sd_volume); + good_sd = g_raid_get_subdisk(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE); if (good_sd == NULL) { - g_raid_tr_raid1_rebuild_abort(tr, sd->sd_volume); + g_raid_tr_raid1_rebuild_abort(tr); return; } bp = &trs->trso_bio; @@ -259,13 +257,13 @@ g_raid_tr_raid1_rebuild_some(struct g_ra } static void -g_raid_tr_raid1_rebuild_done(struct g_raid_tr_raid1_object *trs, - struct g_raid_volume *vol) +g_raid_tr_raid1_rebuild_done(struct g_raid_tr_raid1_object *trs) { + struct g_raid_volume *vol; struct g_raid_subdisk *sd; + vol = trs->trso_base.tro_volume; sd = trs->trso_failed_sd; - sd->sd_rebuild_pos = 0; g_raid_write_metadata(vol->v_softc, vol, sd, sd->sd_disk); free(trs->trso_buffer, M_TR_RAID1); trs->trso_buffer = NULL; @@ -273,12 +271,11 @@ g_raid_tr_raid1_rebuild_done(struct g_ra trs->trso_type = TR_RAID1_NONE; trs->trso_recover_slabs = 0; trs->trso_failed_sd = NULL; - g_raid_tr_update_state_raid1(vol); + g_raid_tr_update_state_raid1(vol, NULL); } static void -g_raid_tr_raid1_rebuild_finish(struct g_raid_tr_object *tr, - struct g_raid_volume *vol) +g_raid_tr_raid1_rebuild_finish(struct g_raid_tr_object *tr) { struct g_raid_tr_raid1_object *trs; struct g_raid_subdisk *sd; @@ -286,66 +283,75 @@ g_raid_tr_raid1_rebuild_finish(struct g_ trs = (struct g_raid_tr_raid1_object *)tr; sd = trs->trso_failed_sd; g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_ACTIVE); - g_raid_tr_raid1_rebuild_done(trs, vol); + sd->sd_rebuild_pos = 0; + g_raid_tr_raid1_rebuild_done(trs); } static void -g_raid_tr_raid1_rebuild_abort(struct g_raid_tr_object *tr, - struct g_raid_volume *vol) +g_raid_tr_raid1_rebuild_abort(struct g_raid_tr_object *tr) { struct g_raid_tr_raid1_object *trs; struct g_raid_subdisk *sd; + struct g_raid_volume *vol; off_t len; + vol = tr->tro_volume; trs = (struct g_raid_tr_raid1_object *)tr; sd = trs->trso_failed_sd; len = MIN(g_raid1_rebuild_slab, vol->v_mediasize - sd->sd_rebuild_pos); g_raid_unlock_range(tr->tro_volume, sd->sd_rebuild_pos, len); - g_raid_tr_raid1_rebuild_done(trs, vol); -} - -static struct g_raid_subdisk * -g_raid_tr_raid1_find_good_drive(struct g_raid_volume *vol) -{ - int i; - - for (i = 0; i < vol->v_disks_count; i++) - if (vol->v_subdisks[i].sd_state == G_RAID_SUBDISK_S_ACTIVE) - return (&vol->v_subdisks[i]); - return (NULL); -} - -static struct g_raid_subdisk * -g_raid_tr_raid1_find_failed_drive(struct g_raid_volume *vol) -{ - int i; - - for (i = 0; i < vol->v_disks_count; i++) - if (vol->v_subdisks[i].sd_state == G_RAID_SUBDISK_S_REBUILD || - vol->v_subdisks[i].sd_state == G_RAID_SUBDISK_S_RESYNC) - return (&vol->v_subdisks[i]); - return (NULL); + g_raid_tr_raid1_rebuild_done(trs); } static void -g_raid_tr_raid1_rebuild_start(struct g_raid_tr_object *tr, - struct g_raid_volume *vol) +g_raid_tr_raid1_rebuild_start(struct g_raid_tr_object *tr) { + struct g_raid_volume *vol; struct g_raid_tr_raid1_object *trs; - struct g_raid_subdisk *sd; + struct g_raid_subdisk *sd, *fsd; + vol = tr->tro_volume; trs = (struct g_raid_tr_raid1_object *)tr; if (trs->trso_failed_sd) { G_RAID_DEBUG(1, "Already rebuild in start rebuild. pos %jd\n", (intmax_t)trs->trso_failed_sd->sd_rebuild_pos); return; } - sd = g_raid_tr_raid1_find_good_drive(vol); - trs->trso_failed_sd = g_raid_tr_raid1_find_failed_drive(vol); - if (sd == NULL || trs->trso_failed_sd == NULL) { + sd = g_raid_get_subdisk(vol, G_RAID_SUBDISK_S_ACTIVE); + if (sd == NULL) { + G_RAID_DEBUG(1, "No active disk to rebuild. night night."); + return; + } + fsd = g_raid_get_subdisk(vol, G_RAID_SUBDISK_S_RESYNC); + if (fsd == NULL) + fsd = g_raid_get_subdisk(vol, G_RAID_SUBDISK_S_REBUILD); + if (fsd == NULL) { + fsd = g_raid_get_subdisk(vol, G_RAID_SUBDISK_S_STALE); + if (fsd != NULL) { + fsd->sd_rebuild_pos = 0; + g_raid_change_subdisk_state(fsd, + G_RAID_SUBDISK_S_RESYNC); + g_raid_write_metadata(vol->v_softc, vol, fsd, NULL); + } else { + fsd = g_raid_get_subdisk(vol, + G_RAID_SUBDISK_S_UNINITIALIZED); + if (fsd == NULL) + fsd = g_raid_get_subdisk(vol, + G_RAID_SUBDISK_S_NEW); + if (fsd != NULL) { + fsd->sd_rebuild_pos = 0; + g_raid_change_subdisk_state(fsd, + G_RAID_SUBDISK_S_REBUILD); + g_raid_write_metadata(vol->v_softc, + vol, fsd, NULL); + } + } + } + if (fsd == NULL) { G_RAID_DEBUG(1, "No failed disk to rebuild. night night."); return; } + trs->trso_failed_sd = fsd; G_RAID_DEBUG(2, "Kicking off a rebuild at %jd...", trs->trso_failed_sd->sd_rebuild_pos); trs->trso_type = TR_RAID1_REBUILD; @@ -357,8 +363,9 @@ g_raid_tr_raid1_rebuild_start(struct g_r static void g_raid_tr_raid1_maybe_rebuild(struct g_raid_tr_object *tr, - struct g_raid_volume *vol) + struct g_raid_subdisk *sd) { + struct g_raid_volume *vol; struct g_raid_tr_raid1_object *trs; int na, nr; @@ -368,6 +375,7 @@ g_raid_tr_raid1_maybe_rebuild(struct g_r * 'good disk' stored in the trs, then we're in progress and we punt. * If we make it past all these checks, we need to rebuild. */ + vol = tr->tro_volume; trs = (struct g_raid_tr_raid1_object *)tr; if (trs->trso_stopping) return; @@ -376,16 +384,20 @@ g_raid_tr_raid1_maybe_rebuild(struct g_r g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_RESYNC); switch(trs->trso_type) { case TR_RAID1_NONE: - if (na == 0 || nr == 0) - return; - if (trs->trso_type != TR_RAID1_NONE) + if (na == 0) return; - g_raid_tr_raid1_rebuild_start(tr, vol); + if (nr == 0) { + nr = g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_NEW) + + g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_STALE) + + g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_UNINITIALIZED); + if (nr == 0) + return; + } + g_raid_tr_raid1_rebuild_start(tr); break; case TR_RAID1_REBUILD: - /* - * We're rebuilding, maybe we need to stop... - */ + if (na == 0 || nr == 0) + g_raid_tr_raid1_rebuild_abort(tr); break; case TR_RAID1_RESYNC: break; @@ -396,32 +408,8 @@ static int g_raid_tr_event_raid1(struct g_raid_tr_object *tr, struct g_raid_subdisk *sd, u_int event) { - struct g_raid_tr_raid1_object *trs; - struct g_raid_volume *vol; - trs = (struct g_raid_tr_raid1_object *)tr; - vol = tr->tro_volume; - switch (event) { - case G_RAID_SUBDISK_E_NEW: - if (sd->sd_state == G_RAID_SUBDISK_S_NEW) { - sd->sd_rebuild_pos = 0; - g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_REBUILD); - } else if (sd->sd_state == G_RAID_SUBDISK_S_STALE) { - sd->sd_rebuild_pos = 0; - g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_RESYNC); - } - break; - case G_RAID_SUBDISK_E_FAILED: - if (trs->trso_type == TR_RAID1_REBUILD || - trs->trso_type == TR_RAID1_RESYNC) - g_raid_tr_raid1_rebuild_abort(tr, vol); - break; - case G_RAID_SUBDISK_E_DISCONNECTED: - if (trs->trso_type == TR_RAID1_REBUILD) - g_raid_tr_raid1_rebuild_abort(tr, vol); - break; - } - g_raid_tr_update_state_raid1(vol); + g_raid_tr_update_state_raid1(tr->tro_volume, sd); return (0); } @@ -434,7 +422,7 @@ g_raid_tr_start_raid1(struct g_raid_tr_o trs = (struct g_raid_tr_raid1_object *)tr; vol = tr->tro_volume; trs->trso_starting = 0; - g_raid_tr_update_state_raid1(vol); + g_raid_tr_update_state_raid1(vol, NULL); return (0); } @@ -448,7 +436,7 @@ g_raid_tr_stop_raid1(struct g_raid_tr_ob vol = tr->tro_volume; trs->trso_starting = 0; trs->trso_stopping = 1; - g_raid_tr_update_state_raid1(vol); + g_raid_tr_update_state_raid1(vol, NULL); return (0); } @@ -641,7 +629,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ G_RAID_LOGREQ(4, bp, "rebuild read done. %d", bp->bio_error); if (bp->bio_error != 0) { - g_raid_tr_raid1_rebuild_abort(tr, vol); + g_raid_tr_raid1_rebuild_abort(tr); return; } bp->bio_cmd = BIO_WRITE; @@ -664,7 +652,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (bp->bio_error != 0) { g_raid_fail_disk(sd->sd_softc, nsd, nsd->sd_disk); - g_raid_tr_raid1_rebuild_abort(tr, vol); + g_raid_tr_raid1_rebuild_abort(tr); return; } /* XXX A lot of the following is needed when we kick of the work -- refactor */ @@ -672,14 +660,14 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ bp->bio_offset, bp->bio_length); nsd->sd_rebuild_pos += bp->bio_length; if (nsd->sd_rebuild_pos >= vol->v_mediasize) { - g_raid_tr_raid1_rebuild_finish(tr, vol); + g_raid_tr_raid1_rebuild_finish(tr); return; } /* Abort rebuild if we are stopping */ if (trs->trso_stopping) { trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; - g_raid_tr_update_state_raid1(vol); + g_raid_tr_update_state_raid1(vol, NULL); return; } @@ -693,9 +681,10 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; return; } - good_sd = g_raid_tr_raid1_find_good_drive(vol); + good_sd = g_raid_get_subdisk(sd->sd_volume, + G_RAID_SUBDISK_S_ACTIVE); if (good_sd == NULL) { - g_raid_tr_raid1_rebuild_abort(tr, vol); + g_raid_tr_raid1_rebuild_abort(tr); return; } bp->bio_cmd = BIO_READ; From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 14:58:30 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2D9F8106564A; Mon, 7 Feb 2011 14:58:30 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1CDCA8FC0C; Mon, 7 Feb 2011 14:58:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17EwU89012767; Mon, 7 Feb 2011 14:58:30 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17EwUpX012765; Mon, 7 Feb 2011 14:58:30 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071458.p17EwUpX012765@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 14:58:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218399 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 14:58:30 -0000 Author: mav Date: Mon Feb 7 14:58:29 2011 New Revision: 218399 URL: http://svn.freebsd.org/changeset/base/218399 Log: Update metadata pointer obsoleted by metadata write. This fixes unneeded geom retaste call or possibly even panic. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 11:20:58 2011 (r218398) +++ projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 14:58:29 2011 (r218399) @@ -793,7 +793,7 @@ g_raid_md_intel_refill(struct g_raid_sof struct intel_raid_conf *meta; struct g_raid_disk *disk; struct task *task; - int update; + int update, na; md = sc->sc_md; mdi = (struct g_raid_md_intel_object *)md; @@ -801,11 +801,12 @@ g_raid_md_intel_refill(struct g_raid_sof update = 0; do { /* Make sure we miss anything. */ - if (g_raid_ndisks(sc, G_RAID_DISK_S_ACTIVE) == - meta->total_disks) + na = g_raid_ndisks(sc, G_RAID_DISK_S_ACTIVE); + if (na == meta->total_disks) break; - G_RAID_DEBUG(1, "Array is not complete, trying to refill."); + G_RAID_DEBUG(1, "Array is not complete (%d of %d), " + "trying to refill.", na, meta->total_disks); /* Try to get use some of STALE disks. */ TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { @@ -829,8 +830,10 @@ g_raid_md_intel_refill(struct g_raid_sof } while (disk != NULL); /* Write new metadata if we changed something. */ - if (update) + if (update) { g_raid_md_write_intel(md, NULL, NULL, NULL); + meta = mdi->mdio_meta; + } /* Update status of our need for spare. */ mdi->mdio_incomplete = (g_raid_ndisks(sc, G_RAID_DISK_S_ACTIVE) < From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 15:04:54 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D29D1065693; Mon, 7 Feb 2011 15:04:54 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2C19E8FC1B; Mon, 7 Feb 2011 15:04:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17F4swJ013029; Mon, 7 Feb 2011 15:04:54 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17F4sq9013027; Mon, 7 Feb 2011 15:04:54 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071504.p17F4sq9013027@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 15:04:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218401 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 15:04:54 -0000 Author: mav Date: Mon Feb 7 15:04:53 2011 New Revision: 218401 URL: http://svn.freebsd.org/changeset/base/218401 Log: Improve rebuild aborting. Depending on the current status we may be unable to abort rebuild immediately. In that case set ABORT flag and let things happen slowly. When rebuild abort, check if we can/want restart it again for another subdisk or even same subdisk, but from different position (if rebuilding disk failed during rebuild and was replaced by spare). Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 15:04:23 2011 (r218400) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 15:04:53 2011 (r218401) @@ -91,6 +91,8 @@ static MALLOC_DEFINE(M_TR_RAID1, "tr_rai #define TR_RAID1_RESYNC 2 #define TR_RAID1_F_DOING_SOME 0x1 +#define TR_RAID1_F_LOCKED 0x2 +#define TR_RAID1_F_ABORT 0x4 struct g_raid_tr_raid1_object { struct g_raid_tr_object trso_base; @@ -252,6 +254,7 @@ g_raid_tr_raid1_rebuild_some(struct g_ra trs->trso_recover_slabs = g_raid1_rebuild_cluster_idle; trs->trso_fair_io = g_raid1_rebuild_fair_io; trs->trso_flags |= TR_RAID1_F_DOING_SOME; + trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, /* Lock callback starts I/O */ bp->bio_offset, bp->bio_length, bp); } @@ -298,9 +301,19 @@ g_raid_tr_raid1_rebuild_abort(struct g_r vol = tr->tro_volume; trs = (struct g_raid_tr_raid1_object *)tr; sd = trs->trso_failed_sd; - len = MIN(g_raid1_rebuild_slab, vol->v_mediasize - sd->sd_rebuild_pos); - g_raid_unlock_range(tr->tro_volume, sd->sd_rebuild_pos, len); - g_raid_tr_raid1_rebuild_done(trs); + if (trs->trso_flags & TR_RAID1_F_DOING_SOME) { + trs->trso_flags |= TR_RAID1_F_ABORT; + } else { + trs->trso_flags &= ~TR_RAID1_F_ABORT; + if (trs->trso_flags & TR_RAID1_F_LOCKED) { + trs->trso_flags &= ~TR_RAID1_F_LOCKED; + len = MIN(g_raid1_rebuild_slab, + vol->v_mediasize - sd->sd_rebuild_pos); + g_raid_unlock_range(tr->tro_volume, + sd->sd_rebuild_pos, len); + } + g_raid_tr_raid1_rebuild_done(trs); + } } static void @@ -396,7 +409,7 @@ g_raid_tr_raid1_maybe_rebuild(struct g_r g_raid_tr_raid1_rebuild_start(tr); break; case TR_RAID1_REBUILD: - if (na == 0 || nr == 0) + if (na == 0 || nr == 0 || trs->trso_failed_sd == sd) g_raid_tr_raid1_rebuild_abort(tr); break; case TR_RAID1_RESYNC: @@ -628,7 +641,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ G_RAID_LOGREQ(4, bp, "rebuild read done. %d", bp->bio_error); - if (bp->bio_error != 0) { + if (bp->bio_error != 0 || + trs->trso_flags & TR_RAID1_F_ABORT) { + trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; g_raid_tr_raid1_rebuild_abort(tr); return; } @@ -649,13 +664,18 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ "rebuild write done. Error %d", bp->bio_error); nsd = trs->trso_failed_sd; - if (bp->bio_error != 0) { - g_raid_fail_disk(sd->sd_softc, nsd, - nsd->sd_disk); + if (bp->bio_error != 0 || + trs->trso_flags & TR_RAID1_F_ABORT) { + if (bp->bio_error != 0) { + g_raid_fail_disk(sd->sd_softc, + nsd, nsd->sd_disk); + } + trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; g_raid_tr_raid1_rebuild_abort(tr); return; } /* XXX A lot of the following is needed when we kick of the work -- refactor */ + trs->trso_flags &= ~TR_RAID1_F_LOCKED; g_raid_unlock_range(sd->sd_volume, bp->bio_offset, bp->bio_length); nsd->sd_rebuild_pos += bp->bio_length; @@ -667,7 +687,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ /* Abort rebuild if we are stopping */ if (trs->trso_stopping) { trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; - g_raid_tr_update_state_raid1(vol, NULL); + g_raid_tr_raid1_rebuild_abort(tr); return; } @@ -684,6 +704,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ good_sd = g_raid_get_subdisk(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE); if (good_sd == NULL) { + trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; g_raid_tr_raid1_rebuild_abort(tr); return; } @@ -696,6 +717,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ G_RAID_LOGREQ(4, bp, "Rebuild read at %jd.", bp->bio_offset); /* Lock callback starts I/O */ + trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, bp->bio_offset, bp->bio_length, bp); } From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 15:18:37 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BCA18106566C; Mon, 7 Feb 2011 15:18:37 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A75478FC13; Mon, 7 Feb 2011 15:18:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17FIbvu013418; Mon, 7 Feb 2011 15:18:37 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17FIbiZ013391; Mon, 7 Feb 2011 15:18:37 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201102071518.p17FIbiZ013391@svn.freebsd.org> From: Attilio Rao Date: Mon, 7 Feb 2011 15:18:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218403 - in projects/sv: . bin/kill bin/pkill bin/sh contrib/bind9 contrib/bind9/bin/check contrib/bind9/bin/dig contrib/bind9/bin/dnssec contrib/bind9/bin/named contrib/bind9/bin/name... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 15:18:37 -0000 Author: attilio Date: Mon Feb 7 15:18:36 2011 New Revision: 218403 URL: http://svn.freebsd.org/changeset/base/218403 Log: MFC @ r218143 Added: projects/sv/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.html - copied unchanged from r218399, head/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.html projects/sv/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.pdf - copied unchanged from r218399, head/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.pdf projects/sv/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.txt - copied unchanged from r218399, head/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.txt projects/sv/sys/dev/ath/if_ath_tx_ht.c - copied unchanged from r218399, head/sys/dev/ath/if_ath_tx_ht.c projects/sv/sys/dev/ath/if_ath_tx_ht.h - copied unchanged from r218399, head/sys/dev/ath/if_ath_tx_ht.h projects/sv/sys/modules/cc/cc_chd/ - copied from r218399, head/sys/modules/cc/cc_chd/ projects/sv/sys/modules/cc/cc_hd/ - copied from r218399, head/sys/modules/cc/cc_hd/ projects/sv/sys/modules/cc/cc_vegas/ - copied from r218399, head/sys/modules/cc/cc_vegas/ projects/sv/sys/netinet/cc/cc_chd.c - copied unchanged from r218399, head/sys/netinet/cc/cc_chd.c projects/sv/sys/netinet/cc/cc_hd.c - copied unchanged from r218399, head/sys/netinet/cc/cc_hd.c projects/sv/sys/netinet/cc/cc_vegas.c - copied unchanged from r218399, head/sys/netinet/cc/cc_vegas.c projects/sv/tools/regression/bin/sh/errors/bad-binary1.126 - copied unchanged from r218399, head/tools/regression/bin/sh/errors/bad-binary1.126 projects/sv/tools/regression/bin/sh/execution/hash1.0 - copied unchanged from r218399, head/tools/regression/bin/sh/execution/hash1.0 projects/sv/tools/regression/bin/sh/execution/redir5.0 - copied unchanged from r218399, head/tools/regression/bin/sh/execution/redir5.0 projects/sv/tools/regression/bin/sh/execution/shellproc1.0 - copied unchanged from r218399, head/tools/regression/bin/sh/execution/shellproc1.0 Modified: projects/sv/Makefile projects/sv/ObsoleteFiles.inc projects/sv/bin/kill/kill.c projects/sv/bin/pkill/pkill.c projects/sv/bin/sh/TOUR projects/sv/bin/sh/alias.c projects/sv/bin/sh/alias.h projects/sv/bin/sh/error.h projects/sv/bin/sh/eval.c projects/sv/bin/sh/exec.c projects/sv/bin/sh/exec.h projects/sv/bin/sh/expand.c projects/sv/bin/sh/init.h projects/sv/bin/sh/input.c projects/sv/bin/sh/jobs.c projects/sv/bin/sh/main.c projects/sv/bin/sh/mkinit.c projects/sv/bin/sh/options.c projects/sv/bin/sh/parser.c projects/sv/bin/sh/redir.c projects/sv/bin/sh/sh.1 projects/sv/bin/sh/trap.c projects/sv/bin/sh/var.c projects/sv/contrib/bind9/CHANGES projects/sv/contrib/bind9/COPYRIGHT projects/sv/contrib/bind9/README projects/sv/contrib/bind9/bin/check/check-tool.c projects/sv/contrib/bind9/bin/check/check-tool.h projects/sv/contrib/bind9/bin/check/named-checkconf.c projects/sv/contrib/bind9/bin/check/named-checkzone.c projects/sv/contrib/bind9/bin/dig/dig.c projects/sv/contrib/bind9/bin/dig/dighost.c projects/sv/contrib/bind9/bin/dig/host.c projects/sv/contrib/bind9/bin/dig/nslookup.1 projects/sv/contrib/bind9/bin/dig/nslookup.docbook projects/sv/contrib/bind9/bin/dig/nslookup.html projects/sv/contrib/bind9/bin/dnssec/dnssec-dsfromkey.8 projects/sv/contrib/bind9/bin/dnssec/dnssec-dsfromkey.html projects/sv/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.html projects/sv/contrib/bind9/bin/dnssec/dnssec-keygen.html projects/sv/contrib/bind9/bin/dnssec/dnssec-signzone.c projects/sv/contrib/bind9/bin/dnssec/dnssec-signzone.html projects/sv/contrib/bind9/bin/named/builtin.c projects/sv/contrib/bind9/bin/named/client.c projects/sv/contrib/bind9/bin/named/control.c projects/sv/contrib/bind9/bin/named/include/named/globals.h projects/sv/contrib/bind9/bin/named/include/named/query.h projects/sv/contrib/bind9/bin/named/main.c projects/sv/contrib/bind9/bin/named/query.c projects/sv/contrib/bind9/bin/named/server.c projects/sv/contrib/bind9/bin/named/update.c projects/sv/contrib/bind9/bin/named/xfrout.c projects/sv/contrib/bind9/bin/nsupdate/nsupdate.1 projects/sv/contrib/bind9/bin/nsupdate/nsupdate.c projects/sv/contrib/bind9/bin/nsupdate/nsupdate.docbook projects/sv/contrib/bind9/bin/nsupdate/nsupdate.html projects/sv/contrib/bind9/config.h.in projects/sv/contrib/bind9/config.threads.in projects/sv/contrib/bind9/configure.in projects/sv/contrib/bind9/doc/arm/Bv9ARM-book.xml projects/sv/contrib/bind9/doc/arm/Bv9ARM.ch06.html projects/sv/contrib/bind9/doc/arm/Bv9ARM.ch07.html projects/sv/contrib/bind9/doc/arm/Bv9ARM.ch08.html projects/sv/contrib/bind9/doc/arm/Bv9ARM.ch09.html projects/sv/contrib/bind9/doc/arm/Bv9ARM.html projects/sv/contrib/bind9/doc/arm/Bv9ARM.pdf projects/sv/contrib/bind9/doc/arm/man.dig.html projects/sv/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html projects/sv/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html projects/sv/contrib/bind9/doc/arm/man.dnssec-keygen.html projects/sv/contrib/bind9/doc/arm/man.dnssec-signzone.html projects/sv/contrib/bind9/doc/arm/man.host.html projects/sv/contrib/bind9/doc/arm/man.named-checkconf.html projects/sv/contrib/bind9/doc/arm/man.named-checkzone.html projects/sv/contrib/bind9/doc/arm/man.named.html projects/sv/contrib/bind9/doc/arm/man.nsupdate.html projects/sv/contrib/bind9/doc/arm/man.rndc-confgen.html projects/sv/contrib/bind9/doc/arm/man.rndc.conf.html projects/sv/contrib/bind9/doc/arm/man.rndc.html projects/sv/contrib/bind9/doc/misc/options projects/sv/contrib/bind9/lib/bind9/api projects/sv/contrib/bind9/lib/bind9/check.c projects/sv/contrib/bind9/lib/dns/Makefile.in projects/sv/contrib/bind9/lib/dns/adb.c projects/sv/contrib/bind9/lib/dns/api projects/sv/contrib/bind9/lib/dns/dst_api.c projects/sv/contrib/bind9/lib/dns/dst_internal.h projects/sv/contrib/bind9/lib/dns/gssapictx.c projects/sv/contrib/bind9/lib/dns/include/dns/diff.h projects/sv/contrib/bind9/lib/dns/include/dns/events.h projects/sv/contrib/bind9/lib/dns/include/dns/name.h projects/sv/contrib/bind9/lib/dns/include/dns/ncache.h projects/sv/contrib/bind9/lib/dns/include/dns/rdataset.h projects/sv/contrib/bind9/lib/dns/include/dns/resolver.h projects/sv/contrib/bind9/lib/dns/include/dns/result.h projects/sv/contrib/bind9/lib/dns/include/dns/tsig.h projects/sv/contrib/bind9/lib/dns/include/dns/types.h projects/sv/contrib/bind9/lib/dns/include/dns/validator.h projects/sv/contrib/bind9/lib/dns/include/dns/view.h projects/sv/contrib/bind9/lib/dns/include/dns/zone.h projects/sv/contrib/bind9/lib/dns/include/dst/dst.h projects/sv/contrib/bind9/lib/dns/journal.c projects/sv/contrib/bind9/lib/dns/message.c projects/sv/contrib/bind9/lib/dns/name.c projects/sv/contrib/bind9/lib/dns/ncache.c projects/sv/contrib/bind9/lib/dns/openssl_link.c projects/sv/contrib/bind9/lib/dns/rbtdb.c projects/sv/contrib/bind9/lib/dns/rdata.c projects/sv/contrib/bind9/lib/dns/rdata/generic/ipseckey_45.c projects/sv/contrib/bind9/lib/dns/rdata/generic/nsec_47.c projects/sv/contrib/bind9/lib/dns/rdata/generic/rrsig_46.c projects/sv/contrib/bind9/lib/dns/rdatalist.c projects/sv/contrib/bind9/lib/dns/rdataset.c projects/sv/contrib/bind9/lib/dns/rdataslab.c projects/sv/contrib/bind9/lib/dns/resolver.c projects/sv/contrib/bind9/lib/dns/result.c projects/sv/contrib/bind9/lib/dns/rootns.c projects/sv/contrib/bind9/lib/dns/sdb.c projects/sv/contrib/bind9/lib/dns/sdlz.c projects/sv/contrib/bind9/lib/dns/time.c projects/sv/contrib/bind9/lib/dns/tkey.c projects/sv/contrib/bind9/lib/dns/tsig.c projects/sv/contrib/bind9/lib/dns/validator.c projects/sv/contrib/bind9/lib/dns/view.c projects/sv/contrib/bind9/lib/dns/zone.c projects/sv/contrib/bind9/lib/isc/Makefile.in projects/sv/contrib/bind9/lib/isc/api projects/sv/contrib/bind9/lib/isc/entropy.c projects/sv/contrib/bind9/lib/isc/include/isc/mem.h projects/sv/contrib/bind9/lib/isc/include/isc/platform.h.in projects/sv/contrib/bind9/lib/isc/include/isc/task.h projects/sv/contrib/bind9/lib/isc/mem.c projects/sv/contrib/bind9/lib/isc/nothreads/Makefile.in projects/sv/contrib/bind9/lib/isc/print.c projects/sv/contrib/bind9/lib/isc/pthreads/mutex.c projects/sv/contrib/bind9/lib/isc/task.c projects/sv/contrib/bind9/lib/isc/unix/socket.c projects/sv/contrib/bind9/lib/isccfg/api projects/sv/contrib/bind9/lib/isccfg/namedconf.c projects/sv/contrib/bind9/lib/lwres/man/lwres.html projects/sv/contrib/bind9/lib/lwres/man/lwres_buffer.html projects/sv/contrib/bind9/lib/lwres/man/lwres_config.html projects/sv/contrib/bind9/lib/lwres/man/lwres_context.html projects/sv/contrib/bind9/lib/lwres/man/lwres_gabn.html projects/sv/contrib/bind9/lib/lwres/man/lwres_gai_strerror.html projects/sv/contrib/bind9/lib/lwres/man/lwres_getaddrinfo.html projects/sv/contrib/bind9/lib/lwres/man/lwres_gethostent.html projects/sv/contrib/bind9/lib/lwres/man/lwres_getipnode.html projects/sv/contrib/bind9/lib/lwres/man/lwres_getnameinfo.html projects/sv/contrib/bind9/lib/lwres/man/lwres_getrrsetbyname.html projects/sv/contrib/bind9/lib/lwres/man/lwres_gnba.html projects/sv/contrib/bind9/lib/lwres/man/lwres_hstrerror.html projects/sv/contrib/bind9/lib/lwres/man/lwres_inetntop.html projects/sv/contrib/bind9/lib/lwres/man/lwres_noop.html projects/sv/contrib/bind9/lib/lwres/man/lwres_packet.html projects/sv/contrib/bind9/lib/lwres/man/lwres_resutil.html projects/sv/contrib/bind9/lib/lwres/print_p.h projects/sv/contrib/bind9/version projects/sv/contrib/bsnmp/oid-list projects/sv/contrib/top/display.c projects/sv/etc/namedb/named.conf projects/sv/gnu/lib/libdialog/Makefile projects/sv/gnu/lib/libgcc/Makefile projects/sv/gnu/lib/libgomp/Makefile projects/sv/lib/bind/config.h projects/sv/lib/bind/dns/code.h projects/sv/lib/bind/dns/dns/enumclass.h projects/sv/lib/bind/dns/dns/enumtype.h projects/sv/lib/bind/dns/dns/rdatastruct.h projects/sv/lib/bind/isc/isc/platform.h projects/sv/lib/csu/mips/crt1.c projects/sv/lib/libc/amd64/string/memmove.S projects/sv/lib/libc/gen/psignal.3 projects/sv/lib/libc/gen/rfork_thread.3 projects/sv/lib/libc/gen/siglist.c projects/sv/lib/libc/i386/string/memcpy.S projects/sv/lib/libc/i386/string/memmove.S projects/sv/lib/libkvm/kvm.c projects/sv/lib/liblzma/config.h projects/sv/lib/msun/amd64/s_llrint.S projects/sv/lib/msun/amd64/s_llrintf.S projects/sv/release/picobsd/build/picobsd projects/sv/sbin/hastctl/hastctl.c projects/sv/sbin/hastd/control.c projects/sv/sbin/hastd/hast.h projects/sv/sbin/hastd/hastd.c projects/sv/sbin/hastd/primary.c projects/sv/sbin/hastd/proto.c projects/sv/sbin/hastd/proto.h projects/sv/sbin/hastd/proto_common.c projects/sv/sbin/hastd/proto_impl.h projects/sv/sbin/hastd/proto_socketpair.c projects/sv/sbin/hastd/proto_tcp4.c projects/sv/sbin/hastd/proto_uds.c projects/sv/sbin/hastd/secondary.c projects/sv/sbin/hastd/subr.c projects/sv/share/man/man4/amdtemp.4 projects/sv/share/man/man4/bwi.4 projects/sv/sys/amd64/amd64/machdep.c projects/sv/sys/amd64/amd64/uio_machdep.c projects/sv/sys/amd64/ia32/ia32_signal.c projects/sv/sys/arm/arm/locore.S projects/sv/sys/arm/arm/sys_machdep.c projects/sv/sys/arm/arm/uio_machdep.c projects/sv/sys/arm/arm/vm_machdep.c projects/sv/sys/arm/at91/if_ate.c projects/sv/sys/arm/include/pmap.h projects/sv/sys/arm/include/proc.h projects/sv/sys/arm/mv/gpio.c projects/sv/sys/arm/mv/mv_pci.c projects/sv/sys/boot/fdt/dts/db78100.dts projects/sv/sys/cddl/compat/opensolaris/sys/types.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/sv/sys/conf/files projects/sv/sys/conf/kern.pre.mk projects/sv/sys/conf/options projects/sv/sys/dev/aac/aac.c projects/sv/sys/dev/aac/aacvar.h projects/sv/sys/dev/ahci/ahci.c projects/sv/sys/dev/ata/ata-pci.h projects/sv/sys/dev/ata/chipsets/ata-intel.c projects/sv/sys/dev/ath/ath_hal/ah.c projects/sv/sys/dev/ath/ath_hal/ah.h projects/sv/sys/dev/ath/ath_hal/ah_internal.h projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c projects/sv/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c projects/sv/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c projects/sv/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c projects/sv/sys/dev/ath/ath_rate/amrr/amrr.c projects/sv/sys/dev/ath/ath_rate/onoe/onoe.c projects/sv/sys/dev/ath/ath_rate/sample/sample.c projects/sv/sys/dev/ath/if_ath.c projects/sv/sys/dev/ath/if_ath_tx.c projects/sv/sys/dev/ath/if_athioctl.h projects/sv/sys/dev/ath/if_athrate.h projects/sv/sys/dev/ath/if_athvar.h projects/sv/sys/dev/ichsmb/ichsmb_pci.c projects/sv/sys/dev/ichwd/ichwd.c projects/sv/sys/dev/ichwd/ichwd.h projects/sv/sys/dev/re/if_re.c projects/sv/sys/dev/sound/pci/hda/hdac.c projects/sv/sys/dev/usb/serial/u3g.c projects/sv/sys/dev/usb/serial/umodem.c projects/sv/sys/dev/usb/usbdevs projects/sv/sys/fs/ext2fs/ext2_alloc.c projects/sv/sys/fs/ext2fs/ext2_mount.h projects/sv/sys/fs/ext2fs/ext2_vfsops.c projects/sv/sys/fs/ext2fs/ext2fs.h projects/sv/sys/fs/nfsserver/nfs_nfsdport.c projects/sv/sys/i386/i386/machdep.c projects/sv/sys/i386/i386/uio_machdep.c projects/sv/sys/ia64/conf/GENERIC projects/sv/sys/ia64/ia64/uio_machdep.c projects/sv/sys/kern/imgact_elf.c projects/sv/sys/kern/kern_context.c projects/sv/sys/kern/subr_turnstile.c projects/sv/sys/kern/subr_uio.c projects/sv/sys/kern/uipc_syscalls.c projects/sv/sys/kern/uipc_usrreq.c projects/sv/sys/kern/vfs_bio.c projects/sv/sys/kern/vfs_mount.c projects/sv/sys/kern/vfs_subr.c projects/sv/sys/mips/include/_inttypes.h projects/sv/sys/mips/include/_limits.h projects/sv/sys/mips/include/_stdint.h projects/sv/sys/mips/include/_types.h projects/sv/sys/mips/include/cpufunc.h projects/sv/sys/mips/mips/uio_machdep.c projects/sv/sys/modules/ath/Makefile projects/sv/sys/netinet/cc.h projects/sv/sys/netinet/cc/cc_newreno.c projects/sv/sys/netinet/ipfw/ip_dn_io.c projects/sv/sys/netinet/sctp.h projects/sv/sys/netinet/sctp_asconf.c projects/sv/sys/netinet/sctp_asconf.h projects/sv/sys/netinet/sctp_auth.c projects/sv/sys/netinet/sctp_auth.h projects/sv/sys/netinet/sctp_bsd_addr.c projects/sv/sys/netinet/sctp_bsd_addr.h projects/sv/sys/netinet/sctp_cc_functions.c projects/sv/sys/netinet/sctp_constants.h projects/sv/sys/netinet/sctp_crc32.c projects/sv/sys/netinet/sctp_crc32.h projects/sv/sys/netinet/sctp_header.h projects/sv/sys/netinet/sctp_indata.c projects/sv/sys/netinet/sctp_indata.h projects/sv/sys/netinet/sctp_input.c projects/sv/sys/netinet/sctp_input.h projects/sv/sys/netinet/sctp_lock_bsd.h projects/sv/sys/netinet/sctp_os.h projects/sv/sys/netinet/sctp_os_bsd.h projects/sv/sys/netinet/sctp_output.c projects/sv/sys/netinet/sctp_output.h projects/sv/sys/netinet/sctp_pcb.c projects/sv/sys/netinet/sctp_pcb.h projects/sv/sys/netinet/sctp_peeloff.c projects/sv/sys/netinet/sctp_peeloff.h projects/sv/sys/netinet/sctp_ss_functions.c projects/sv/sys/netinet/sctp_structs.h projects/sv/sys/netinet/sctp_sysctl.c projects/sv/sys/netinet/sctp_sysctl.h projects/sv/sys/netinet/sctp_timer.c projects/sv/sys/netinet/sctp_timer.h projects/sv/sys/netinet/sctp_uio.h projects/sv/sys/netinet/sctp_usrreq.c projects/sv/sys/netinet/sctp_var.h projects/sv/sys/netinet/sctputil.c projects/sv/sys/netinet/sctputil.h projects/sv/sys/netinet/tcp_usrreq.c projects/sv/sys/netinet6/sctp6_usrreq.c projects/sv/sys/netinet6/sctp6_var.h projects/sv/sys/nfsserver/nfs_serv.c projects/sv/sys/pc98/pc98/machdep.c projects/sv/sys/powerpc/include/intr_machdep.h projects/sv/sys/powerpc/mpc85xx/pci_fdt.c projects/sv/sys/powerpc/ofw/ofw_pcib_pci.c projects/sv/sys/powerpc/ofw/ofw_pcibus.c projects/sv/sys/powerpc/powermac/cpcht.c projects/sv/sys/powerpc/powermac/grackle.c projects/sv/sys/powerpc/powermac/macgpio.c projects/sv/sys/powerpc/powermac/macio.c projects/sv/sys/powerpc/powermac/uninorth.c projects/sv/sys/powerpc/powermac/uninorthpci.c projects/sv/sys/powerpc/powerpc/intr_machdep.c projects/sv/sys/powerpc/powerpc/uio_machdep.c projects/sv/sys/security/mac/mac_process.c projects/sv/sys/sparc64/sparc64/uio_machdep.c projects/sv/sys/sun4v/sun4v/uio_machdep.c projects/sv/sys/sys/taskqueue.h projects/sv/sys/sys/uio.h projects/sv/sys/sys/vnode.h projects/sv/sys/ufs/ffs/ffs_rawread.c projects/sv/sys/ufs/ffs/ffs_softdep.c projects/sv/sys/vm/vm_map.c projects/sv/sys/vm/vm_object.c projects/sv/sys/vm/vm_object.h projects/sv/sys/x86/x86/mca.c projects/sv/tools/regression/bin/sh/builtins/command6.0 projects/sv/tools/regression/bin/sh/builtins/command6.0.stdout projects/sv/tools/regression/bin/sh/builtins/command7.0 projects/sv/usr.bin/killall/killall.c projects/sv/usr.bin/truss/main.c projects/sv/usr.sbin/ppp/bundle.c projects/sv/usr.sbin/ppp/command.c projects/sv/usr.sbin/ppp/iface.c projects/sv/usr.sbin/ppp/iface.h projects/sv/usr.sbin/ppp/log.c projects/sv/usr.sbin/ppp/log.h projects/sv/usr.sbin/ppp/main.c projects/sv/usr.sbin/ppp/ppp.8.m4 projects/sv/usr.sbin/pw/pw_user.c Directory Properties: projects/sv/ (props changed) projects/sv/cddl/contrib/opensolaris/ (props changed) projects/sv/contrib/bind9/ (props changed) projects/sv/contrib/binutils/ (props changed) projects/sv/contrib/bzip2/ (props changed) projects/sv/contrib/dialog/ (props changed) projects/sv/contrib/ee/ (props changed) projects/sv/contrib/expat/ (props changed) projects/sv/contrib/file/ (props changed) projects/sv/contrib/gdb/ (props changed) projects/sv/contrib/gdtoa/ (props changed) projects/sv/contrib/gnu-sort/ (props changed) projects/sv/contrib/groff/ (props changed) projects/sv/contrib/less/ (props changed) projects/sv/contrib/libpcap/ (props changed) projects/sv/contrib/llvm/ (props changed) projects/sv/contrib/llvm/tools/clang/ (props changed) projects/sv/contrib/ncurses/ (props changed) projects/sv/contrib/netcat/ (props changed) projects/sv/contrib/ntp/ (props changed) projects/sv/contrib/one-true-awk/ (props changed) projects/sv/contrib/openbsm/ (props changed) projects/sv/contrib/openpam/ (props changed) projects/sv/contrib/pf/ (props changed) projects/sv/contrib/sendmail/ (props changed) projects/sv/contrib/tcpdump/ (props changed) projects/sv/contrib/tcsh/ (props changed) projects/sv/contrib/top/ (props changed) projects/sv/contrib/top/install-sh (props changed) projects/sv/contrib/tzcode/stdtime/ (props changed) projects/sv/contrib/tzcode/zic/ (props changed) projects/sv/contrib/tzdata/ (props changed) projects/sv/contrib/wpa/ (props changed) projects/sv/contrib/xz/ (props changed) projects/sv/crypto/openssh/ (props changed) projects/sv/crypto/openssl/ (props changed) projects/sv/lib/libc/ (props changed) projects/sv/lib/libc/stdtime/ (props changed) projects/sv/lib/libutil/ (props changed) projects/sv/lib/libz/ (props changed) projects/sv/sbin/ (props changed) projects/sv/sbin/ipfw/ (props changed) projects/sv/share/mk/bsd.arch.inc.mk (props changed) projects/sv/share/zoneinfo/ (props changed) projects/sv/sys/ (props changed) projects/sv/sys/amd64/include/xen/ (props changed) projects/sv/sys/cddl/contrib/opensolaris/ (props changed) projects/sv/sys/contrib/dev/acpica/ (props changed) projects/sv/sys/contrib/octeon-sdk/ (props changed) projects/sv/sys/contrib/pf/ (props changed) projects/sv/sys/contrib/x86emu/ (props changed) projects/sv/usr.bin/calendar/ (props changed) projects/sv/usr.bin/csup/ (props changed) projects/sv/usr.bin/procstat/ (props changed) projects/sv/usr.sbin/zic/ (props changed) Modified: projects/sv/Makefile ============================================================================== --- projects/sv/Makefile Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/Makefile Mon Feb 7 15:18:36 2011 (r218403) @@ -124,7 +124,7 @@ MAKEPATH= ${MAKEOBJDIRPREFIX}${.CURDIR}/ BINMAKE= \ `if [ -x ${MAKEPATH}/make ]; then echo ${MAKEPATH}/make; else echo ${MAKE}; fi` \ -m ${.CURDIR}/share/mk -_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 +_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} # Guess machine architecture from machine type, and vice versa. .if !defined(TARGET_ARCH) && defined(TARGET) @@ -205,7 +205,7 @@ cleanworld: # ${TGTS}: - ${_+_}cd ${.CURDIR}; ${_MAKE} TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} ${.TARGET} + ${_+_}@cd ${.CURDIR}; ${_MAKE} ${.TARGET} # Set a reasonable default .MAIN: all Modified: projects/sv/ObsoleteFiles.inc ============================================================================== --- projects/sv/ObsoleteFiles.inc Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/ObsoleteFiles.inc Mon Feb 7 15:18:36 2011 (r218403) @@ -38,6 +38,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20110119: Remove SYSCTL_*X* sysctl additions. +OLD_FILES+=usr/share/man/man9/SYSCTL_XINT.9.gz \ + usr/share/man/man9/SYSCTL_XLONG.9.gz + # 20110112: Update dialog to new version, rename old libdialog to libodialog, # removing associated man pages and header files. OLD_FILES+=usr/share/man/man3/draw_shadow.3.gz \ @@ -100,6 +104,8 @@ OLD_FILES+=usr/include/machine/mca.h .endif # 20101020: catch up with vm_page_sleep_if_busy rename OLD_FILES+=usr/share/man/man9/vm_page_sleep_busy.9.gz +# 20101018: taskqueue(9) updates +OLD_FILES+=usr/share/man/man9/taskqueue_find.9.gz # 20101011: removed subblock.h from liblzma OLD_FILES+=usr/include/lzma/subblock.h # 20101002: removed manpath.config Modified: projects/sv/bin/kill/kill.c ============================================================================== --- projects/sv/bin/kill/kill.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/kill/kill.c Mon Feb 7 15:18:36 2011 (r218403) @@ -152,7 +152,7 @@ signame_to_signum(const char *sig) { int n; - if (!strncasecmp(sig, "sig", (size_t)3)) + if (!strncasecmp(sig, "SIG", (size_t)3)) sig += 3; for (n = 1; n < sys_nsig; n++) { if (!strcasecmp(sys_signame[n], sig)) Modified: projects/sv/bin/pkill/pkill.c ============================================================================== --- projects/sv/bin/pkill/pkill.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/pkill/pkill.c Mon Feb 7 15:18:36 2011 (r218403) @@ -156,7 +156,7 @@ main(int argc, char **argv) argv++; argc--; } else { - if (strncasecmp(p, "sig", 3) == 0) + if (strncasecmp(p, "SIG", 3) == 0) p += 3; for (i = 1; i < NSIG; i++) if (strcasecmp(sys_signame[i], p) == 0) Modified: projects/sv/bin/sh/TOUR ============================================================================== --- projects/sv/bin/sh/TOUR Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/TOUR Mon Feb 7 15:18:36 2011 (r218403) @@ -44,10 +44,6 @@ C source files for entries looking like: back to the main command loop */ } - SHELLPROC { - x = 3; /* executed when the shell runs a shell procedure */ - } - It pulls this code out into routines which are when particular events occur. The intent is to improve modularity by isolating the information about which modules need to be explicitly @@ -80,12 +76,7 @@ EXCEPTIONS: Code for dealing with excep exceptions.c. The C language doesn't include exception handling, so I implement it using setjmp and longjmp. The global variable exception contains the type of exception. EXERROR is raised by -calling error. EXINT is an interrupt. EXSHELLPROC is an excep- -tion which is raised when a shell procedure is invoked. The pur- -pose of EXSHELLPROC is to perform the cleanup actions associated -with other exceptions. After these cleanup actions, the shell -can interpret a shell procedure itself without exec'ing a new -copy of the shell. +calling error. EXINT is an interrupt. INTERRUPTS: In an interactive shell, an interrupt will cause an EXINT exception to return to the main command loop. (Exception: @@ -270,14 +261,6 @@ When a program is run, the code in eval. variables which precede the command (as in "PATH=xxx command") in the variable table as the simplest way to strip duplicates, and then calls "environment" to get the value of the environment. -There are two consequences of this. First, if an assignment to -PATH precedes the command, the value of PATH before the assign- -ment must be remembered and passed to shellexec. Second, if the -program turns out to be a shell procedure, the strings from the -environment variables which preceded the command must be pulled -out of the table and replaced with strings obtained from malloc, -since the former will automatically be freed when the stack (see -the entry on memalloc.c) is emptied. BUILTIN COMMANDS: The procedures for handling these are scat- tered throughout the code, depending on which location appears Modified: projects/sv/bin/sh/alias.c ============================================================================== --- projects/sv/bin/sh/alias.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/alias.c Mon Feb 7 15:18:36 2011 (r218403) @@ -145,15 +145,7 @@ unalias(const char *name) return (1); } -#ifdef mkinit -MKINIT void rmaliases(void); - -SHELLPROC { - rmaliases(); -} -#endif - -void +static void rmaliases(void) { struct alias *ap, *tmp; Modified: projects/sv/bin/sh/alias.h ============================================================================== --- projects/sv/bin/sh/alias.h Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/alias.h Mon Feb 7 15:18:36 2011 (r218403) @@ -45,4 +45,3 @@ struct alias { struct alias *lookupalias(const char *, int); int aliascmd(int, char **); int unaliascmd(int, char **); -void rmaliases(void); Modified: projects/sv/bin/sh/error.h ============================================================================== --- projects/sv/bin/sh/error.h Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/error.h Mon Feb 7 15:18:36 2011 (r218403) @@ -56,8 +56,7 @@ extern volatile sig_atomic_t exception; /* exceptions */ #define EXINT 0 /* SIGINT received */ #define EXERROR 1 /* a generic error */ -#define EXSHELLPROC 2 /* execute a shell procedure */ -#define EXEXEC 3 /* command execution failed */ +#define EXEXEC 2 /* command execution failed */ /* Modified: projects/sv/bin/sh/eval.c ============================================================================== --- projects/sv/bin/sh/eval.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/eval.c Mon Feb 7 15:18:36 2011 (r218403) @@ -111,10 +111,6 @@ RESET { loopnest = 0; funcnest = 0; } - -SHELLPROC { - exitstatus = 0; -} #endif @@ -732,7 +728,9 @@ evalcommand(union node *cmd, int flags, argc = 0; for (sp = arglist.list ; sp ; sp = sp->next) argc++; - argv = stalloc(sizeof (char *) * (argc + 1)); + /* Add one slot at the beginning for tryexec(). */ + argv = stalloc(sizeof (char *) * (argc + 2)); + argv++; for (sp = arglist.list ; sp ; sp = sp->next) { TRACE(("evalcommand arg: %s\n", sp->text)); @@ -814,7 +812,7 @@ evalcommand(union node *cmd, int flags, * bookinging effort, since most such runs add * directories in front of the new PATH. */ - clearcmdentry(0); + clearcmdentry(); do_clearcmdentry = 1; } @@ -856,7 +854,7 @@ evalcommand(union node *cmd, int flags, argc -= 2; } path = _PATH_STDPATH; - clearcmdentry(0); + clearcmdentry(); do_clearcmdentry = 1; } else if (!strcmp(argv[1], "--")) { if (argc == 2) @@ -927,14 +925,10 @@ evalcommand(union node *cmd, int flags, reffunc(cmdentry.u.func); savehandler = handler; if (setjmp(jmploc.loc)) { - if (exception == EXSHELLPROC) - freeparam(&saveparam); - else { - freeparam(&shellparam); - shellparam = saveparam; - if (exception == EXERROR || exception == EXEXEC) - popredir(); - } + freeparam(&shellparam); + shellparam = saveparam; + if (exception == EXERROR || exception == EXEXEC) + popredir(); unreffunc(cmdentry.u.func); poplocalvars(); localvars = savelocalvars; @@ -1016,11 +1010,9 @@ cmddone: out2 = &errout; freestdout(); handler = savehandler; - if (e != EXSHELLPROC) { - commandname = savecmdname; - if (jp) - exitshell(exitstatus); - } + commandname = savecmdname; + if (jp) + exitshell(exitstatus); if (flags == EV_BACKCMD) { backcmd->buf = memout.buf; backcmd->nleft = memout.nextc - memout.buf; @@ -1069,7 +1061,7 @@ out: if (lastarg) setvar("_", lastarg, 0); if (do_clearcmdentry) - clearcmdentry(0); + clearcmdentry(); popstackmark(&smark); } Modified: projects/sv/bin/sh/exec.c ============================================================================== --- projects/sv/bin/sh/exec.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/exec.c Mon Feb 7 15:18:36 2011 (r218403) @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include /* @@ -105,6 +106,8 @@ static void delete_cmd_entry(void); /* * Exec a program. Never returns. If you change this routine, you may * have to change the find_command routine as well. + * + * The argv array may be changed and element argv[-1] should be writable. */ void @@ -123,43 +126,47 @@ shellexec(char **argv, char **envp, cons tryexec(cmdname, argv, envp); if (errno != ENOENT && errno != ENOTDIR) e = errno; + if (e == ENOEXEC) + break; } stunalloc(cmdname); } } /* Map to POSIX errors */ - switch (e) { - case EACCES: - exerrno = 126; - break; - case ENOENT: + if (e == ENOENT || e == ENOTDIR) { exerrno = 127; - break; - default: - exerrno = 2; - break; - } - if (e == ENOENT || e == ENOTDIR) exerror(EXEXEC, "%s: not found", argv[0]); - exerror(EXEXEC, "%s: %s", argv[0], strerror(e)); + } else { + exerrno = 126; + exerror(EXEXEC, "%s: %s", argv[0], strerror(e)); + } } static void tryexec(char *cmd, char **argv, char **envp) { - int e; + int e, in; + ssize_t n; + char buf[256]; execve(cmd, argv, envp); e = errno; if (e == ENOEXEC) { - initshellproc(); - setinputfile(cmd, 0); - commandname = arg0 = savestr(argv[0]); - setparam(argv + 1); - exraise(EXSHELLPROC); - /*NOTREACHED*/ + INTOFF; + in = open(cmd, O_RDONLY | O_NONBLOCK); + if (in != -1) { + n = pread(in, buf, sizeof buf, 0); + close(in); + if (n > 0 && memchr(buf, '\0', n) != NULL) { + errno = ENOEXEC; + return; + } + } + *argv = cmd; + *--argv = _PATH_BSHELL; + execve(_PATH_BSHELL, argv, envp); } errno = e; } @@ -227,7 +234,7 @@ hashcmd(int argc __unused, char **argv _ verbose = 0; while ((c = nextopt("rv")) != '\0') { if (c == 'r') { - clearcmdentry(0); + clearcmdentry(); } else if (c == 'v') { verbose++; } @@ -487,30 +494,7 @@ hashcd(void) void changepath(const char *newval) { - const char *old, *new; - int idx; - int firstchange; - - old = pathval(); - new = newval; - firstchange = 9999; /* assume no change */ - idx = 0; - for (;;) { - if (*old != *new) { - firstchange = idx; - if ((*old == '\0' && *new == ':') - || (*old == ':' && *new == '\0')) - firstchange++; - old = new; /* ignore subsequent differences */ - } - if (*new == '\0') - break; - if (*new == ':') { - idx++; - } - new++, old++; - } - clearcmdentry(firstchange); + clearcmdentry(); } @@ -520,7 +504,7 @@ changepath(const char *newval) */ void -clearcmdentry(int firstchange) +clearcmdentry(void) { struct tblentry **tblp; struct tblentry **pp; @@ -530,8 +514,7 @@ clearcmdentry(int firstchange) for (tblp = cmdtable ; tblp < &cmdtable[CMDTABLESIZE] ; tblp++) { pp = tblp; while ((cmdp = *pp) != NULL) { - if ((cmdp->cmdtype == CMDNORMAL && - cmdp->param.index >= firstchange)) { + if (cmdp->cmdtype == CMDNORMAL) { *pp = cmdp->next; ckfree(cmdp); } else { @@ -544,43 +527,6 @@ clearcmdentry(int firstchange) /* - * Delete all functions. - */ - -#ifdef mkinit -MKINIT void deletefuncs(void); - -SHELLPROC { - deletefuncs(); -} -#endif - -void -deletefuncs(void) -{ - struct tblentry **tblp; - struct tblentry **pp; - struct tblentry *cmdp; - - INTOFF; - for (tblp = cmdtable ; tblp < &cmdtable[CMDTABLESIZE] ; tblp++) { - pp = tblp; - while ((cmdp = *pp) != NULL) { - if (cmdp->cmdtype == CMDFUNCTION) { - *pp = cmdp->next; - unreffunc(cmdp->param.func); - ckfree(cmdp); - } else { - pp = &cmdp->next; - } - } - } - INTON; -} - - - -/* * Locate a command in the command hash table. If "add" is nonzero, * add the command to the table if it is not already present. The * variable "lastcmdentry" is set to point to the address of the link @@ -713,7 +659,7 @@ typecmd_impl(int argc, char **argv, int int error1 = 0; if (path != pathval()) - clearcmdentry(0); + clearcmdentry(); for (i = 1; i < argc; i++) { /* First look at the keywords */ @@ -809,7 +755,7 @@ typecmd_impl(int argc, char **argv, int } if (path != pathval()) - clearcmdentry(0); + clearcmdentry(); return error1; } Modified: projects/sv/bin/sh/exec.h ============================================================================== --- projects/sv/bin/sh/exec.h Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/exec.h Mon Feb 7 15:18:36 2011 (r218403) @@ -71,10 +71,9 @@ void find_command(const char *, struct c int find_builtin(const char *, int *); void hashcd(void); void changepath(const char *); -void deletefuncs(void); void addcmdentry(const char *, struct cmdentry *); void defun(const char *, union node *); int unsetfunc(const char *); int typecmd_impl(int, char **, int, const char *); int typecmd(int, char **); -void clearcmdentry(int); +void clearcmdentry(void); Modified: projects/sv/bin/sh/expand.c ============================================================================== --- projects/sv/bin/sh/expand.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/expand.c Mon Feb 7 15:18:36 2011 (r218403) @@ -155,8 +155,7 @@ stputs_quotes(const char *data, const ch * expansion are always performed; additional expansions can be requested * via flag (EXP_*). * The result is left in the stack string. - * When arglist is NULL, perform here document expansion. A partial result - * may be written to herefd, which is then not included in the stack string. + * When arglist is NULL, perform here document expansion. * * Caution: this function uses global state and is not reentrant. * However, a new invocation after an interrupted invocation is safe Modified: projects/sv/bin/sh/init.h ============================================================================== --- projects/sv/bin/sh/init.h Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/init.h Mon Feb 7 15:18:36 2011 (r218403) @@ -35,4 +35,3 @@ void init(void); void reset(void); -void initshellproc(void); Modified: projects/sv/bin/sh/input.c ============================================================================== --- projects/sv/bin/sh/input.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/input.c Mon Feb 7 15:18:36 2011 (r218403) @@ -119,12 +119,7 @@ INIT { RESET { popallfiles(); - if (exception != EXSHELLPROC) - parselleft = parsenleft = 0; /* clear input buffer */ -} - -SHELLPROC { - popallfiles(); + parselleft = parsenleft = 0; /* clear input buffer */ } #endif Modified: projects/sv/bin/sh/jobs.c ============================================================================== --- projects/sv/bin/sh/jobs.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/jobs.c Mon Feb 7 15:18:36 2011 (r218403) @@ -177,22 +177,6 @@ out: out2fmt_flush("sh: can't access #endif -#ifdef mkinit -INCLUDE -INCLUDE - -SHELLPROC { - backgndpid = -1; - bgjob = NULL; -#if JOBS - jobctl = 0; -#endif -} - -#endif - - - #if JOBS int fgcmd(int argc __unused, char **argv) Modified: projects/sv/bin/sh/main.c ============================================================================== --- projects/sv/bin/sh/main.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/main.c Mon Feb 7 15:18:36 2011 (r218403) @@ -98,19 +98,7 @@ main(int argc, char *argv[]) (void) setlocale(LC_ALL, ""); state = 0; if (setjmp(main_handler.loc)) { - /* - * When a shell procedure is executed, we raise the - * exception EXSHELLPROC to clean up before executing - * the shell procedure. - */ switch (exception) { - case EXSHELLPROC: - rootpid = getpid(); - rootshell = 1; - minusc = NULL; - state = 3; - break; - case EXEXEC: exitstatus = exerrno; break; @@ -123,10 +111,8 @@ main(int argc, char *argv[]) break; } - if (exception != EXSHELLPROC) { - if (state == 0 || iflag == 0 || ! rootshell) - exitshell(exitstatus); - } + if (state == 0 || iflag == 0 || ! rootshell) + exitshell(exitstatus); reset(); if (exception == EXINT) out2fmt_flush("\n"); Modified: projects/sv/bin/sh/mkinit.c ============================================================================== --- projects/sv/bin/sh/mkinit.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/mkinit.c Mon Feb 7 15:18:36 2011 (r218403) @@ -126,16 +126,10 @@ char reset[] = "\ * interactive shell and control is returned to the main command loop.\n\ */\n"; -char shellproc[] = "\ -/*\n\ - * This routine is called to initialize the shell to run a shell procedure.\n\ - */\n"; - struct event event[] = { { "INIT", "init", init, { NULL, 0, NULL, NULL } }, { "RESET", "reset", reset, { NULL, 0, NULL, NULL } }, - { "SHELLPROC", "initshellproc", shellproc, { NULL, 0, NULL, NULL } }, { NULL, NULL, NULL, { NULL, 0, NULL, NULL } } }; Modified: projects/sv/bin/sh/options.c ============================================================================== --- projects/sv/bin/sh/options.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/options.c Mon Feb 7 15:18:36 2011 (r218403) @@ -304,21 +304,6 @@ setoption(int flag, int val) } - -#ifdef mkinit -INCLUDE "options.h" - -SHELLPROC { - int i; - - for (i = 0; i < NOPTS; i++) - optlist[i].val = 0; - optschanged(); - -} -#endif - - /* * Set the shell parameters. */ Modified: projects/sv/bin/sh/parser.c ============================================================================== --- projects/sv/bin/sh/parser.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/parser.c Mon Feb 7 15:18:36 2011 (r218403) @@ -389,8 +389,10 @@ command(void) union node *cp, **cpp; union node *redir, **rpp; int t; + int is_subshell; checkkwd = CHKNL | CHKKWD | CHKALIAS; + is_subshell = 0; redir = NULL; n1 = NULL; rpp = &redir; @@ -558,6 +560,7 @@ TRACE(("expecting DO got %s %s\n", tokna if (readtoken() != TRP) synexpect(TRP); checkkwd = CHKKWD | CHKALIAS; + is_subshell = 1; break; case TBEGIN: n1 = list(0, 0); @@ -596,7 +599,7 @@ TRACE(("expecting DO got %s %s\n", tokna tokpushback++; *rpp = NULL; if (redir) { - if (n1->type != NSUBSHELL) { + if (!is_subshell) { n2 = (union node *)stalloc(sizeof (struct nredir)); n2->type = NREDIR; n2->nredir.n = n1; Modified: projects/sv/bin/sh/redir.c ============================================================================== --- projects/sv/bin/sh/redir.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/redir.c Mon Feb 7 15:18:36 2011 (r218403) @@ -324,10 +324,6 @@ RESET { popredir(); } -SHELLPROC { - clearredir(); -} - #endif /* Return true if fd 0 has already been redirected at least once. */ Modified: projects/sv/bin/sh/sh.1 ============================================================================== --- projects/sv/bin/sh/sh.1 Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/sh.1 Mon Feb 7 15:18:36 2011 (r218403) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd January 16, 2011 +.Dd February 4, 2011 .Dt SH 1 .Os .Sh NAME @@ -647,15 +647,10 @@ resulting in an .Er ENOEXEC return value from .Xr execve 2 ) -the shell will interpret the program in a subshell. -The child shell will reinitialize itself in this case, -so that the effect will be -as if a new shell had been invoked to handle the ad-hoc shell script, -except that the location of hashed commands located in -the parent shell will be remembered by the child -(see the description of the -.Ic hash -built-in command below). +but appears to be a text file, +the shell will run a new instance of +.Nm +to interpret it. .Pp Note that previous versions of this document and the source code itself misleadingly and sporadically Modified: projects/sv/bin/sh/trap.c ============================================================================== --- projects/sv/bin/sh/trap.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/trap.c Mon Feb 7 15:18:36 2011 (r218403) @@ -101,12 +101,12 @@ sigstring_to_signum(char *sig) signo = atoi(sig); return ((signo >= 0 && signo < NSIG) ? signo : (-1)); - } else if (strcasecmp(sig, "exit") == 0) { + } else if (strcasecmp(sig, "EXIT") == 0) { return (0); } else { int n; - if (strncasecmp(sig, "sig", 3) == 0) + if (strncasecmp(sig, "SIG", 3) == 0) sig += 3; for (n = 1; n < sys_nsig; n++) if (sys_signame[n] && @@ -171,7 +171,7 @@ trapcmd(int argc, char **argv) out1str("trap -- "); out1qstr(trap[signo]); if (signo == 0) { - out1str(" exit\n"); + out1str(" EXIT\n"); } else if (sys_signame[signo]) { out1fmt(" %s\n", sys_signame[signo]); } else { @@ -367,22 +367,6 @@ ignoresig(int signo) } -#ifdef mkinit -INCLUDE -INCLUDE "trap.h" - -SHELLPROC { - char *sm; - - clear_traps(); - for (sm = sigmode ; sm < sigmode + NSIG ; sm++) { - if (*sm == S_IGN) - *sm = S_HARD_IGN; - } -} -#endif - - /* * Signal handler. */ Modified: projects/sv/bin/sh/var.c ============================================================================== --- projects/sv/bin/sh/var.c Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/bin/sh/var.c Mon Feb 7 15:18:36 2011 (r218403) @@ -161,7 +161,7 @@ INIT { /* * This routine initializes the builtin variables. It is called when the - * shell is initialized and again when a shell procedure is spawned. + * shell is initialized. */ void @@ -542,47 +542,6 @@ environment(void) } -/* - * Called when a shell procedure is invoked to clear out nonexported - * variables. It is also necessary to reallocate variables of with - * VSTACK set since these are currently allocated on the stack. - */ - -MKINIT void shprocvar(void); - -#ifdef mkinit -SHELLPROC { - shprocvar(); -} -#endif - -void -shprocvar(void) -{ - struct var **vpp; - struct var *vp, **prev; - - for (vpp = vartab ; vpp < vartab + VTABSIZE ; vpp++) { - for (prev = vpp ; (vp = *prev) != NULL ; ) { - if ((vp->flags & VEXPORT) == 0) { - *prev = vp->next; - if ((vp->flags & VTEXTFIXED) == 0) - ckfree(vp->text); - if ((vp->flags & VSTRFIXED) == 0) - ckfree(vp); - } else { - if (vp->flags & VSTACK) { - vp->text = savestr(vp->text); - vp->flags &=~ VSTACK; - } - prev = &vp->next; - } - } - } - initvar(); -} - - static int var_compare(const void *a, const void *b) { Modified: projects/sv/contrib/bind9/CHANGES ============================================================================== --- projects/sv/contrib/bind9/CHANGES Mon Feb 7 15:09:13 2011 (r218402) +++ projects/sv/contrib/bind9/CHANGES Mon Feb 7 15:18:36 2011 (r218403) @@ -1,5 +1,54 @@ + --- 9.6.3 released --- - --- 9.6-ESV-R3 released --- +3009. [bug] clients-per-query code didn't work as expected with + particular query patterns. [RT #22972] + + --- 9.6.3rc1 released --- + +3007. [bug] Named failed to preserve the case of domain names in + rdata which is not compressible when writing master + files. [RT #22863] + +3002. [bug] isc_mutex_init_errcheck() failed to destroy attr. + [RT #22766] + +2996. [security] Temporarily disable SO_ACCEPTFILTER support. + [RT #22589] + +2995. [bug] The Kerberos realm was not being correctly extracted + from the signer's identity. [RT #22770] + +2994. [port] NetBSD: use pthreads by default on NetBSD >= 5.0, and + do not use threads on earlier versions. Also kill + the unproven-pthreads, mit-pthreads, and ptl2 support. + +2984. [bug] Don't run MX checks when the target of the MX record + is ".". [RT #22645] + +2817. [cleanup] Removed unnecessary isc_task_endexclusive() calls. + [RT #20768] + + --- 9.6.3b1 released --- + +2982. [bug] Reference count dst keys. dst_key_attach() can be used + increment the reference count. + + Note: dns_tsigkey_createfromkey() callers should now + always call dst_key_free() rather than setting it + to NULL on success. [RT #22672] + +2979. [bug] named could deadlock during shutdown if two + "rndc stop" commands were issued at the same + time. [RT #22108] + +2978. [port] hpux: look for [RT #21919] + +2976. [bug] named could die on exit after negotiating a GSS-TSIG + key. [RT #22573] + +2975. [bug] rbtdb.c:cleanup_dead_nodes_callback() aquired the + wrong lock which could lead to server deadlock. + [RT #22614] 2972. [bug] win32: address windows socket errors. [RT #21906] @@ -36,6 +85,9 @@ justified character with a non zero width, (e.g. "%-1c"). [RT #22270] +2965. [func] Test HMAC functions using test data from RFC 2104 and + RFC 4634. [RT #21702] + 2964. [bug] view->queryacl was being overloaded. Seperate the usage into view->queryacl, view->cacheacl and view->queryonacl. [RT #22114] @@ -43,6 +95,25 @@ 2962. [port] win32: add more dependencies to BINDBuild.dsw. [RT #22062] +2960. [func] Check that named accepts non-authoritative answers. + [RT #21594] + +2959. [func] Check that named starts with a missing masterfile. + [RT #22076] + +2957. [bug] entropy_get() and entropy_getpseudo() failed to match + the API for RAND_bytes() and RAND_pseudo_bytes() + respectively. [RT #21962] + +2956. [port] Enable atomic operations on the PowerPC64. [RT #21899] + +2954. [bug] contrib: dlz_mysql_driver.c bad error handling on + build_sqldbinstance failure. [RT #21623] + +2953. [bug] Silence spurious "expected covering NSEC3, got an + exact match" message when returning a wildcard + no data response. [RT #21744] + 2952. [port] win32: named-checkzone and named-checkconf failed to initialise winsock. [RT #21932] @@ -50,7 +121,23 @@ in a optout, delegation only zone with no secure delegations. [RT #22007] - --- 9.6-ESV-R2 released --- +2950. [bug] named failed to perform a SOA up to date check when + falling back to TCP on UDP timeouts when + ixfr-from-differences was set. [RT #21595] + +2946. [doc] Document the default values for the minimum and maximum + zone refresh and retry values in the ARM. [RT #21886] + +2945. [doc] Update empty-zones list in ARM. [RT #21772] + +2944. [maint] Remove ORCHID prefix from built in empty zones. + [RT #21772] + +2942. [contrib] zone2sqlite failed to setup the entropy sources. + [RT #21610] + +2941. [bug] sdb and sdlz (dlz's zone database) failed to support + DNAME at the zone apex. [RT #21610] 2939. [func] Check that named successfully skips NSEC3 records that fail to match the NSEC3PARAM record currently @@ -73,31 +160,173 @@ likely that the bug happens only when enabling threads, but it's not confirmed yet. [RT #21818] +2935. [bug] nsupdate: improve 'file not found' error message. + [RT #21871] + +2934. [bug] Use ANSI C compliant shift range in lib/isc/entropy.c. + [RT #21871] + +2933. [bug] 'dig +nsid' used stack memory after it went out of + scope. This could potentially result in a unknown, + potentially malformed, EDNS option being sent instead + of the desired NSID option. [RT #21781] + +2932. [cleanup] Corrected a numbering error in the "dnssec" test. + [RT #21597] + +2931. [bug] Temporarily and partially disable change 2864 + because it would cause infinite attempts of RRSIG + queries. This is an urgent care fix; we'll + revisit the issue and complete the fix later. + [RT #21710] + +2929. [bug] Improved handling of GSS security contexts: + - added LRU expiration for generated TSIGs + - added the ability to use a non-default realm + - added new "realm" keyword in nsupdate + - limited lifetime of generated keys to 1 hour + or the lifetime of the context (whichever is + smaller) + [RT #19737] + 2925. [bug] Named failed to accept uncachable negative responses from insecure zones. [RT# 21555] +2923. [bug] 'dig +trace' could drop core after "connection + timeout". [RT #21514] + +2922. [contrib] Update zkt to version 1.0. + 2921. [bug] The resolver could attempt to destroy a fetch context too soon. [RT #19878] +2918. [maint] Add AAAA address for I.ROOT-SERVERS.NET. + +2916. [func] Add framework to use IPv6 in tests. + fd92:7065:b8e:ffff::1 ... fd92:7065:b8e:ffff::7 + +2915. [cleanup] Be smarter about which objects we attempt to compile + based on configure options. [RT #21444] + +2912. [func] Windows clients don't like UPDATE responses that clear + the zone section. [RT #20986] + +2911. [bug] dnssec-signzone didn't handle out of zone records well. + [RT #21367] + +2910. [func] Sanity check Kerberos credentials. [RT #20986] + +2908. [bug] It was possible for re-signing to stop after removing + a DNSKEY. [RT #21384] + +2905. [port] aix: set use_atomic=yes with native compiler. + [RT #21402] + +2904. [bug] When using DLV, sub-zones of the zones in the DLV, + could be incorrectly marked as insecure instead of + secure leading to negative proofs failing. This was + a unintended outcome from change 2890. [RT# 21392] + +2901. [port] Use AC_C_FLEXIBLE_ARRAY_MEMBER. [RT #21316] + 2900. [bug] The placeholder negative caching element was not - properly constructed triggering a INSIST in + properly constructed triggering a INSIST in dns_ncache_towire(). [RT #21346] - + +2899. [port] win32: Support linking against OpenSSL 1.0.0. + +2898. [bug] nslookup leaked memory when -domain=value was + specified. [RT #21301] + +2894. [contrib] DLZ LDAP support now use '$' not '%'. [RT #21294] + +2891. [maint] Update empty-zones list to match + draft-ietf-dnsop-default-local-zones-13. [RT# 21099] + 2890. [bug] Handle the introduction of new trusted-keys and DS, DLV RRsets better. [RT #21097] -2869. [bug] Fix arguments to dns_keytable_findnextkeynode() call. - [RT #20877] +2889. [bug] Elements of the grammar where not properly reported. + [RT #21046] + +2888. [bug] Only the first EDNS option was displayed. [RT #21273] + +2885. [bug] Improve -fno-strict-aliasing support probing in + configure. [RT #21080] + +2884. [bug] Insufficient validation in dns_name_getlabelsequence(). + [RT #21283] + +2883. [bug] 'dig +short' failed to handle really large datasets. + [RT #21113] + +2882. [bug] Remove memory context from list of active contexts + before clearing 'magic'. [RT #21274] *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 15:30:11 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C16C7106564A; Mon, 7 Feb 2011 15:30:11 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B10EF8FC1B; Mon, 7 Feb 2011 15:30:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17FUBvg013717; Mon, 7 Feb 2011 15:30:11 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17FUBrb013714; Mon, 7 Feb 2011 15:30:11 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071530.p17FUBrb013714@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 15:30:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218404 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 15:30:11 -0000 Author: mav Date: Mon Feb 7 15:30:11 2011 New Revision: 218404 URL: http://svn.freebsd.org/changeset/base/218404 Log: Block metadata writing when active array destruction started. Otherwise we have real chances to write something half-destroyed. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 15:18:36 2011 (r218403) +++ projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 15:30:11 2011 (r218404) @@ -1918,6 +1918,8 @@ void g_raid_write_metadata(struct g_raid struct g_raid_subdisk *sd, struct g_raid_disk *disk) { + if (sc->sc_stopping == G_RAID_DESTROY_HARD) + return; if (sc->sc_md) G_RAID_MD_WRITE(sc->sc_md, vol, sd, disk); } Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 15:18:36 2011 (r218403) +++ projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 15:30:11 2011 (r218404) @@ -1972,6 +1972,9 @@ g_raid_md_write_intel(struct g_raid_md_o sc = md->mdo_softc; mdi = (struct g_raid_md_intel_object *)md; + if (sc->sc_stopping == G_RAID_DESTROY_HARD) + return (0); + /* Bump generation. Newly written metadata may differ from previous. */ mdi->mdio_generation++; From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 15:47:44 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 461AD106566B; Mon, 7 Feb 2011 15:47:44 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 35DB68FC13; Mon, 7 Feb 2011 15:47:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17Fli7r014183; Mon, 7 Feb 2011 15:47:44 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17FliMZ014181; Mon, 7 Feb 2011 15:47:44 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071547.p17FliMZ014181@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 15:47:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218405 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 15:47:44 -0000 Author: mav Date: Mon Feb 7 15:47:43 2011 New Revision: 218405 URL: http://svn.freebsd.org/changeset/base/218405 Log: Measure rebuild_meta_update in rebuild slabs, not in clusters of slabs. It is more stable and predictable unit. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 15:30:11 2011 (r218404) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 15:47:43 2011 (r218405) @@ -76,7 +76,7 @@ SYSCTL_UINT(_kern_geom_raid_raid1, OID_A &g_raid1_rebuild_cluster_idle, RAID1_REBUILD_CLUSTER_IDLE, "Number of slabs to do each time we trigger a rebuild cycle"); -#define RAID1_REBUILD_META_UPDATE 500 /* update meta data every 5 GB or so */ +#define RAID1_REBUILD_META_UPDATE 1024 /* update meta data every 1GB or so */ static int g_raid1_rebuild_meta_update = RAID1_REBUILD_META_UPDATE; TUNABLE_INT("kern.geom.raid.raid1.rebuild_meta_update", &g_raid1_rebuild_slab); @@ -691,13 +691,13 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ return; } + if (--trs->trso_meta_update <= 0) { + g_raid_write_metadata(vol->v_softc, + vol, nsd, nsd->sd_disk); + trs->trso_meta_update = + g_raid1_rebuild_meta_update; + } if (--trs->trso_recover_slabs <= 0) { - if (--trs->trso_meta_update <= 0) { - g_raid_write_metadata(vol->v_softc, - vol, nsd, nsd->sd_disk); - trs->trso_meta_update = - g_raid1_rebuild_meta_update; - } trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; return; } From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 16:14:12 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93247106566C; Mon, 7 Feb 2011 16:14:12 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 68A928FC12; Mon, 7 Feb 2011 16:14:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17GEC3R014913; Mon, 7 Feb 2011 16:14:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17GEC50014910; Mon, 7 Feb 2011 16:14:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071614.p17GEC50014910@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 16:14:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218406 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 16:14:12 -0000 Author: mav Date: Mon Feb 7 16:14:12 2011 New Revision: 218406 URL: http://svn.freebsd.org/changeset/base/218406 Log: Define and use G_RAID_NODE_E_WAKE constant. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 15:47:43 2011 (r218405) +++ projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 16:14:12 2011 (r218406) @@ -133,6 +133,8 @@ g_raid_node_event2str(int event) { switch (event) { + case G_RAID_NODE_E_WAKE: + return ("WAKE"); case G_RAID_NODE_E_START: return ("START"); default: @@ -1467,6 +1469,8 @@ g_raid_update_node(struct g_raid_softc * G_RAID_DEBUG(2, "Event %s for node %s.", g_raid_node_event2str(event), sc->sc_name); + if (event == G_RAID_NODE_E_WAKE) + return (0); if (sc->sc_md) G_RAID_MD_EVENT(sc->sc_md, NULL, event); return (0); @@ -1509,7 +1513,8 @@ g_raid_access(struct g_provider *pp, int opens = g_raid_nopens(sc); if (opens == 0) { sc->sc_stopping = G_RAID_DESTROY_HARD; - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + /* Wake up worker to make it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } } /* Handle open volume destruction. */ @@ -1699,7 +1704,7 @@ g_raid_destroy_node(struct g_raid_softc kproc_exit(0); } else { /* Wake up worker to make it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } return (0); } @@ -1746,8 +1751,10 @@ g_raid_destroy_volume(struct g_raid_volu } G_RAID_DEBUG(2, "Volume %s destroyed.", vol->v_name); free(vol, M_RAID); - if (sc->sc_stopping == G_RAID_DESTROY_HARD) - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + if (sc->sc_stopping == G_RAID_DESTROY_HARD) { + /* Wake up worker to let it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); + } return (0); } @@ -1815,7 +1822,7 @@ g_raid_destroy(struct g_raid_softc *sc, /* Mark node for destruction. */ sc->sc_stopping = G_RAID_DESTROY_HARD; /* Wake up worker to let it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); /* Sleep until node destroyed. */ sx_sleep(&sc->sc_stopping, &sc->sc_lock, PRIBIO | PDROP, "r:destroy", 0); Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Mon Feb 7 15:47:43 2011 (r218405) +++ projects/graid/head/sys/geom/raid/g_raid.h Mon Feb 7 16:14:12 2011 (r218406) @@ -240,6 +240,7 @@ struct g_raid_volume { LIST_ENTRY(g_raid_volume) v_global_next; /* Global list entry. */ }; +#define G_RAID_NODE_E_WAKE 0x00 #define G_RAID_NODE_E_START 0x01 struct g_raid_softc { From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 16:33:00 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E7FB8106564A; Mon, 7 Feb 2011 16:33:00 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D85C68FC23; Mon, 7 Feb 2011 16:33:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17GX0od015367; Mon, 7 Feb 2011 16:33:00 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17GX0OT015365; Mon, 7 Feb 2011 16:33:00 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071633.p17GX0OT015365@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 16:33:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218407 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 16:33:01 -0000 Author: mav Date: Mon Feb 7 16:33:00 2011 New Revision: 218407 URL: http://svn.freebsd.org/changeset/base/218407 Log: After unclean shutdown we have to restart rebuild and resync processes from the beginning. We can't trust completed portions synchronicity. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 16:14:12 2011 (r218406) +++ projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 16:33:00 2011 (r218407) @@ -737,10 +737,14 @@ nofit: /* Rebuilding disk. */ g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_REBUILD); - sd->sd_rebuild_pos = - (off_t)mvol->curr_migr_unit * - sd->sd_volume->v_strip_size * - mmap0->total_domains; + if (mvol->dirty) { + sd->sd_rebuild_pos = 0; + } else { + sd->sd_rebuild_pos = + (off_t)mvol->curr_migr_unit * + sd->sd_volume->v_strip_size * + mmap0->total_domains; + } } } else if (mvol->migr_type == INTEL_MT_VERIFY || mvol->migr_type == INTEL_MT_REPAIR) { @@ -756,10 +760,14 @@ nofit: /* Resyncing disk. */ g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_RESYNC); - sd->sd_rebuild_pos = - (off_t)mvol->curr_migr_unit * - sd->sd_volume->v_strip_size * - mmap0->total_domains; + if (mvol->dirty) { + sd->sd_rebuild_pos = 0; + } else { + sd->sd_rebuild_pos = + (off_t)mvol->curr_migr_unit * + sd->sd_volume->v_strip_size * + mmap0->total_domains; + } } } g_raid_event_send(sd, G_RAID_SUBDISK_E_NEW, From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 17:03:42 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1279E1065693; Mon, 7 Feb 2011 17:03:42 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 02F778FC21; Mon, 7 Feb 2011 17:03:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17H3faa016078; Mon, 7 Feb 2011 17:03:41 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17H3fRD016076; Mon, 7 Feb 2011 17:03:41 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071703.p17H3fRD016076@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 17:03:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218408 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 17:03:42 -0000 Author: mav Date: Mon Feb 7 17:03:41 2011 New Revision: 218408 URL: http://svn.freebsd.org/changeset/base/218408 Log: Fix copy-paste bugs in tunables declarations. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 16:33:00 2011 (r218407) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Mon Feb 7 17:03:41 2011 (r218408) @@ -63,7 +63,7 @@ SYSCTL_UINT(_kern_geom_raid_raid1, OID_A #define RAID1_REBUILD_FAIR_IO 20 /* use 1/x of the available I/O */ static int g_raid1_rebuild_fair_io = RAID1_REBUILD_FAIR_IO; TUNABLE_INT("kern.geom.raid.raid1.rebuild_fair_io", - &g_raid1_rebuild_slab); + &g_raid1_rebuild_fair_io); SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, rebuild_fair_io, CTLFLAG_RW, &g_raid1_rebuild_fair_io, RAID1_REBUILD_FAIR_IO, "Fraction of the I/O bandwidth to use when disk busy for rebuild."); @@ -71,7 +71,7 @@ SYSCTL_UINT(_kern_geom_raid_raid1, OID_A #define RAID1_REBUILD_CLUSTER_IDLE 100 static int g_raid1_rebuild_cluster_idle = RAID1_REBUILD_CLUSTER_IDLE; TUNABLE_INT("kern.geom.raid.raid1.rebuild_cluster_idle", - &g_raid1_rebuild_slab); + &g_raid1_rebuild_cluster_idle); SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, rebuild_cluster_idle, CTLFLAG_RW, &g_raid1_rebuild_cluster_idle, RAID1_REBUILD_CLUSTER_IDLE, "Number of slabs to do each time we trigger a rebuild cycle"); @@ -79,7 +79,7 @@ SYSCTL_UINT(_kern_geom_raid_raid1, OID_A #define RAID1_REBUILD_META_UPDATE 1024 /* update meta data every 1GB or so */ static int g_raid1_rebuild_meta_update = RAID1_REBUILD_META_UPDATE; TUNABLE_INT("kern.geom.raid.raid1.rebuild_meta_update", - &g_raid1_rebuild_slab); + &g_raid1_rebuild_meta_update); SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, rebuild_meta_update, CTLFLAG_RW, &g_raid1_rebuild_meta_update, RAID1_REBUILD_META_UPDATE, "When to update the meta data."); From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 21:45:23 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D946106566B; Mon, 7 Feb 2011 21:45:23 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2C6FB8FC0A; Mon, 7 Feb 2011 21:45:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p17LjN3a023582; Mon, 7 Feb 2011 21:45:23 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17LjNGc023580; Mon, 7 Feb 2011 21:45:23 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102072145.p17LjNGc023580@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 21:45:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218418 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2011 21:45:23 -0000 Author: mav Date: Mon Feb 7 21:45:22 2011 New Revision: 218418 URL: http://svn.freebsd.org/changeset/base/218418 Log: Store REBUILD into metadata as VERIFY+FIX. At least my BIOS seems doesn't support REPAIR migration type. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 21:31:21 2011 (r218417) +++ projects/graid/head/sys/geom/raid/md_intel.c Mon Feb 7 21:45:22 2011 (r218418) @@ -74,6 +74,19 @@ struct intel_raid_vol { uint8_t name[16]; u_int64_t total_sectors __packed; uint32_t state; +#define INTEL_ST_BOOTABLE 0x00000001 +#define INTEL_ST_BOOT_DEVICE 0x00000002 +#define INTEL_ST_READ_COALESCING 0x00000004 +#define INTEL_ST_WRITE_COALESCING 0x00000008 +#define INTEL_ST_LAST_SHUTDOWN_DIRTY 0x00000010 +#define INTEL_ST_HIDDEN_AT_BOOT 0x00000020 +#define INTEL_ST_CURRENTLY_HIDDEN 0x00000040 +#define INTEL_ST_VERIFY_AND_FIX 0x00000080 +#define INTEL_ST_MAP_STATE_UNINIT 0x00000100 +#define INTEL_ST_NO_AUTO_RECOVERY 0x00000200 +#define INTEL_ST_CLONE_N_GO 0x00000400 +#define INTEL_ST_CLONE_MAN_SYNC 0x00000800 +#define INTEL_ST_CNG_MASTER_DISK_NUM 0x00001000 uint32_t reserved; uint8_t migr_priority; uint8_t num_sub_vols; @@ -2099,7 +2112,9 @@ g_raid_md_write_intel(struct g_raid_md_o mvol->migr_type = INTEL_MT_REBUILD; } else if (state == G_RAID_SUBDISK_S_RESYNC) { mvol->migr_state = 1; - mvol->migr_type = INTEL_MT_REPAIR; + /* mvol->migr_type = INTEL_MT_REPAIR; */ + mvol->migr_type = INTEL_MT_VERIFY; + mvol->state |= INTEL_ST_VERIFY_AND_FIX; } else mvol->migr_state = 0; mvol->dirty = (vol->v_dirty || stale); From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 12:12:48 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 688D5106564A; Tue, 8 Feb 2011 12:12:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 57AD18FC16; Tue, 8 Feb 2011 12:12:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18CCm34045425; Tue, 8 Feb 2011 12:12:48 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18CCm4A045417; Tue, 8 Feb 2011 12:12:48 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081212.p18CCm4A045417@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 12:12:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218435 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 12:12:48 -0000 Author: mav Date: Tue Feb 8 12:12:48 2011 New Revision: 218435 URL: http://svn.freebsd.org/changeset/base/218435 Log: Tune logging: - add array name to the log message when appropriate; - s/node/array/; - move some log messages useful for average user to debug level 0. - log rebuild start/stop events. Do not try to retaste, looking for spare disks to refill the array, if we loose last related disk and going to destroy array. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/g_raid_ctl.c projects/graid/head/sys/geom/raid/md_intel.c projects/graid/head/sys/geom/raid/tr_raid0.c projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Tue Feb 8 11:48:47 2011 (r218434) +++ projects/graid/head/sys/geom/raid/g_raid.c Tue Feb 8 12:12:48 2011 (r218435) @@ -327,7 +327,7 @@ g_raid_volume_str2level(const char *str, return (0); } -static const char * +const char * g_raid_get_diskname(struct g_raid_disk *disk) { @@ -367,7 +367,7 @@ g_raid_report_disk_state(struct g_raid_d } len = sizeof(s); g_io_getattr("GEOM::setstate", disk->d_consumer, &len, &s); - G_RAID_DEBUG(2, "Disk %s state reported as %d.", + G_RAID_DEBUG1(2, disk->d_softc, "Disk %s state reported as %d.", g_raid_get_diskname(disk), s); } @@ -375,7 +375,7 @@ void g_raid_change_disk_state(struct g_raid_disk *disk, int state) { - G_RAID_DEBUG(1, "Disk %s state changed from %s to %s.", + G_RAID_DEBUG1(0, disk->d_softc, "Disk %s state changed from %s to %s.", g_raid_get_diskname(disk), g_raid_disk_state2str(disk->d_state), g_raid_disk_state2str(state)); @@ -387,7 +387,8 @@ void g_raid_change_subdisk_state(struct g_raid_subdisk *sd, int state) { - G_RAID_DEBUG(1, "Subdisk %s:%d-%s state changed from %s to %s.", + G_RAID_DEBUG1(0, sd->sd_softc, + "Subdisk %s:%d-%s state changed from %s to %s.", sd->sd_volume->v_name, sd->sd_pos, sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]", g_raid_subdisk_state2str(sd->sd_state), @@ -401,7 +402,8 @@ void g_raid_change_volume_state(struct g_raid_volume *vol, int state) { - G_RAID_DEBUG(1, "Volume %s state changed from %s to %s.", + G_RAID_DEBUG1(0, vol->v_softc, + "Volume %s state changed from %s to %s.", vol->v_name, g_raid_volume_state2str(vol->v_state), g_raid_volume_state2str(state)); @@ -428,7 +430,6 @@ g_raid_event_send(void *arg, int event, int error; ep = malloc(sizeof(*ep), M_RAID, M_WAITOK); - G_RAID_DEBUG(4, "%s: Sending event %p.", __func__, ep); if ((flags & G_RAID_EVENT_VOLUME) != 0) { sc = ((struct g_raid_volume *)arg)->v_softc; } else if ((flags & G_RAID_EVENT_DISK) != 0) { @@ -442,7 +443,7 @@ g_raid_event_send(void *arg, int event, ep->e_event = event; ep->e_flags = flags; ep->e_error = 0; - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc); + G_RAID_DEBUG1(4, sc, "Sending event %p. Waking up %p.", ep, sc); mtx_lock(&sc->sc_queue_mtx); TAILQ_INSERT_TAIL(&sc->sc_events, ep, e_next); mtx_unlock(&sc->sc_queue_mtx); @@ -452,7 +453,7 @@ g_raid_event_send(void *arg, int event, return (0); sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(4, "%s: Sleeping %p.", __func__, ep); + G_RAID_DEBUG1(4, sc, "Sleeping on %p.", ep); sx_xunlock(&sc->sc_lock); while ((ep->e_flags & G_RAID_EVENT_DONE) == 0) { mtx_lock(&sc->sc_queue_mtx); @@ -615,13 +616,13 @@ g_raid_consumer_is_busy(struct g_raid_so { if (cp->index > 0) { - G_RAID_DEBUG(2, + G_RAID_DEBUG1(2, sc, "I/O requests for %s exist, can't destroy it now.", cp->provider->name); return (1); } if (g_raid_nrequests(sc, cp) > 0) { - G_RAID_DEBUG(2, + G_RAID_DEBUG1(2, sc, "I/O requests for %s in queue, can't destroy it now.", cp->provider->name); return (1); @@ -659,8 +660,6 @@ g_raid_kill_consumer(struct g_raid_softc if ((pp->geom->flags & G_GEOM_WITHER) == 0) retaste_wait = 1; } - G_RAID_DEBUG(2, "Access %s r%dw%de%d = %d", pp->name, -cp->acr, - -cp->acw, -cp->ace, 0); if (cp->acr > 0 || cp->acw > 0 || cp->ace > 0) g_access(cp, -cp->acr, -cp->acw, -cp->ace); if (retaste_wait) { @@ -718,8 +717,8 @@ g_raid_clean(struct g_raid_volume *vol, return (timeout); } vol->v_dirty = 0; - G_RAID_DEBUG(1, "Volume %s (node %s) marked as clean.", - vol->v_name, sc->sc_name); + G_RAID_DEBUG1(1, sc, "Volume %s marked as clean.", + vol->v_name); g_raid_write_metadata(sc, vol, NULL, NULL); return (0); } @@ -736,8 +735,8 @@ g_raid_dirty(struct g_raid_volume *vol) // if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) // return; vol->v_dirty = 1; - G_RAID_DEBUG(1, "Volume %s (node %s) marked as dirty.", - vol->v_name, sc->sc_name); + G_RAID_DEBUG1(1, sc, "Volume %s marked as dirty.", + vol->v_name); g_raid_write_metadata(sc, vol, NULL, NULL); } @@ -770,7 +769,7 @@ g_raid_tr_kerneldump_common(struct g_rai g_raid_start(&bp); while (!(bp.bio_flags & BIO_DONE)) { - G_RAID_DEBUG(4, "Poll..."); + G_RAID_DEBUG1(4, sc, "Poll..."); g_raid_poll(sc); DELAY(10); } @@ -786,14 +785,11 @@ g_raid_dump(void *arg, int error; vol = (struct g_raid_volume *)arg; - G_RAID_DEBUG(3, "Dumping at off %llu len %llu.", + G_RAID_DEBUG1(3, vol->v_softc, "Dumping at off %llu len %llu.", (long long unsigned)offset, (long long unsigned)length); error = G_RAID_TR_KERNELDUMP(vol->v_tr, virtual, physical, offset, length); - - G_RAID_DEBUG(3, "Dumping at off %llu len %llu done: %d.", - (long long unsigned)offset, (long long unsigned)length, error); return (error); } @@ -857,7 +853,7 @@ g_raid_start(struct bio *bp) bioq_disksort(&sc->sc_queue, bp); mtx_unlock(&sc->sc_queue_mtx); if (!dumping) { - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc); + G_RAID_DEBUG1(4, sc, "Waking up %p.", sc); wakeup(sc); } } @@ -967,13 +963,13 @@ g_raid_finish_with_locked_ranges(struct } if (lp->l_pending) { vol->v_pending_lock = 1; - G_RAID_DEBUG(4, + G_RAID_DEBUG1(4, vol->v_softc, "Deferred lock(%jd, %jd) has %d pending", (intmax_t)off, (intmax_t)(off + len), lp->l_pending); continue; } - G_RAID_DEBUG(4, + G_RAID_DEBUG1(4, vol->v_softc, "Deferred lock of %jd to %jd completed", (intmax_t)off, (intmax_t)(off + len)); G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg); @@ -1030,11 +1026,11 @@ g_raid_lock_range(struct g_raid_volume * */ if (lp->l_pending > 0) { vol->v_pending_lock = 1; - G_RAID_DEBUG(4, "Locking range %jd to %jd deferred %d pend", + G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd deferred %d pend", (intmax_t)off, (intmax_t)(off+len), lp->l_pending); return (EBUSY); } - G_RAID_DEBUG(4, "Locking range %jd to %jd", + G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd", (intmax_t)off, (intmax_t)(off+len)); G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg); return (0); @@ -1058,7 +1054,7 @@ g_raid_unlock_range(struct g_raid_volume * when the worker thread runs. * XXX */ - G_RAID_DEBUG(4, "Unlocked %jd to %jd", + G_RAID_DEBUG1(4, sc, "Unlocked %jd to %jd", (intmax_t)lp->l_offset, (intmax_t)(lp->l_offset+lp->l_length)); mtx_lock(&sc->sc_queue_mtx); @@ -1170,8 +1166,7 @@ g_raid_handle_event(struct g_raid_softc g_raid_event_free(ep); } else { ep->e_flags |= G_RAID_EVENT_DONE; - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, - ep); + G_RAID_DEBUG1(4, sc, "Waking up %p.", ep); mtx_lock(&sc->sc_queue_mtx); wakeup(ep); mtx_unlock(&sc->sc_queue_mtx); @@ -1282,30 +1277,6 @@ out: sx_xunlock(&sc->sc_lock); } -#if 0 -static void -g_raid_update_idle(struct g_raid_softc *sc, struct g_raid_disk *disk) -{ - - sx_assert(&sc->sc_lock, SX_LOCKED); - - if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) - return; -#if 0 - if (!sc->sc_idle && (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) == 0) { - G_RAID_DEBUG(1, "Disk %s (device %s) marked as dirty.", - g_raid_get_diskname(disk), sc->sc_name); - disk->d_flags |= G_RAID_DISK_FLAG_DIRTY; - } else if (sc->sc_idle && - (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) != 0) { - G_RAID_DEBUG(1, "Disk %s (device %s) marked as clean.", - g_raid_get_diskname(disk), sc->sc_name); - disk->d_flags &= ~G_RAID_DISK_FLAG_DIRTY; - } -#endif -} -#endif - static void g_raid_launch_provider(struct g_raid_volume *vol) { @@ -1342,7 +1313,8 @@ g_raid_launch_provider(struct g_raid_vol vol->v_provider = pp; g_error_provider(pp, 0); g_topology_unlock(); - G_RAID_DEBUG(0, "Volume %s launched.", pp->name); + G_RAID_DEBUG1(0, sc, "Provider %s for volume %s created.", + pp->name, vol->v_name); } static void @@ -1367,8 +1339,8 @@ g_raid_destroy_provider(struct g_raid_vo g_io_deliver(bp, ENXIO); } mtx_unlock(&sc->sc_queue_mtx); - G_RAID_DEBUG(0, "Node %s: provider %s destroyed.", sc->sc_name, - pp->name); + G_RAID_DEBUG1(0, sc, "Provider %s for volume %s destroyed.", + pp->name, vol->v_name); g_wither_provider(pp, ENXIO); g_topology_unlock(); vol->v_provider = NULL; @@ -1385,7 +1357,7 @@ g_raid_update_volume(struct g_raid_volum sc = vol->v_softc; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for volume %s.", + G_RAID_DEBUG1(2, sc, "Event %s for volume %s.", g_raid_volume_event2str(event), vol->v_name); switch (event) { @@ -1406,7 +1378,7 @@ g_raid_update_volume(struct g_raid_volum /* Manage root mount release. */ if (vol->v_starting) { vol->v_starting = 0; - G_RAID_DEBUG(1, "root_mount_rel %p", vol->v_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_rel %p", vol->v_rootmount); root_mount_rel(vol->v_rootmount); vol->v_rootmount = NULL; } @@ -1428,7 +1400,7 @@ g_raid_update_subdisk(struct g_raid_subd vol = sd->sd_volume; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for subdisk %s:%d-%s.", + G_RAID_DEBUG1(2, sc, "Event %s for subdisk %s:%d-%s.", g_raid_subdisk_event2str(event), vol->v_name, sd->sd_pos, sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]"); @@ -1449,7 +1421,7 @@ g_raid_update_disk(struct g_raid_disk *d sc = disk->d_softc; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for disk %s.", + G_RAID_DEBUG1(2, sc, "Event %s for disk %s.", g_raid_disk_event2str(event), g_raid_get_diskname(disk)); @@ -1466,8 +1438,8 @@ g_raid_update_node(struct g_raid_softc * { sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for node %s.", - g_raid_node_event2str(event), sc->sc_name); + G_RAID_DEBUG1(2, sc, "Event %s for the array.", + g_raid_node_event2str(event)); if (event == G_RAID_NODE_E_WAKE) return (0); @@ -1484,14 +1456,14 @@ g_raid_access(struct g_provider *pp, int int dcr, dcw, dce, opens, error = 0; g_topology_assert(); - G_RAID_DEBUG(2, "Access request for %s: r%dw%de%d.", pp->name, acr, - acw, ace); - sc = pp->geom->softc; vol = pp->private; KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name)); KASSERT(vol != NULL, ("NULL volume (provider=%s).", pp->name)); + G_RAID_DEBUG1(2, sc, "Access request for %s: r%dw%de%d.", pp->name, + acr, acw, ace); + dcr = pp->acr + acr; dcw = pp->acw + acw; dce = pp->ace + ace; @@ -1535,7 +1507,7 @@ g_raid_create_node(struct g_class *mp, int error; g_topology_assert(); - G_RAID_DEBUG(1, "Creating node %s.", name); + G_RAID_DEBUG(1, "Creating array %s.", name); gp = g_new_geomf(mp, "%s", name); sc = malloc(sizeof(*sc), M_RAID, M_WAITOK | M_ZERO); @@ -1557,7 +1529,7 @@ g_raid_create_node(struct g_class *mp, error = kproc_create(g_raid_worker, sc, &sc->sc_worker, 0, 0, "g_raid %s", name); if (error != 0) { - G_RAID_DEBUG(1, "Cannot create kernel thread for %s.", name); + G_RAID_DEBUG(0, "Cannot create kernel thread for %s.", name); mtx_destroy(&sc->sc_queue_mtx); sx_destroy(&sc->sc_lock); g_destroy_geom(sc->sc_geom); @@ -1565,7 +1537,7 @@ g_raid_create_node(struct g_class *mp, return (NULL); } - G_RAID_DEBUG(1, "Node %s created.", name); + G_RAID_DEBUG1(0, sc, "Array %s created.", name); return (sc); } @@ -1575,7 +1547,7 @@ g_raid_create_volume(struct g_raid_softc struct g_raid_volume *vol, *vol1; int i; - G_RAID_DEBUG(1, "Creating volume %s.", name); + G_RAID_DEBUG1(1, sc, "Creating volume %s.", name); vol = malloc(sizeof(*vol), M_RAID, M_WAITOK | M_ZERO); vol->v_softc = sc; strlcpy(vol->v_name, name, G_RAID_MAX_VOLUMENAME); @@ -1606,7 +1578,7 @@ g_raid_create_volume(struct g_raid_softc /* Delay root mounting. */ vol->v_rootmount = root_mount_hold("GRAID"); - G_RAID_DEBUG(1, "root_mount_hold %p", vol->v_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_hold %p", vol->v_rootmount); vol->v_starting = 1; TAILQ_INSERT_TAIL(&sc->sc_volumes, vol, v_next); return (vol); @@ -1617,7 +1589,7 @@ g_raid_create_disk(struct g_raid_softc * { struct g_raid_disk *disk; - G_RAID_DEBUG(1, "Creating disk."); + G_RAID_DEBUG1(1, sc, "Creating disk."); disk = malloc(sizeof(*disk), M_RAID, M_WAITOK | M_ZERO); disk->d_softc = sc; disk->d_state = G_RAID_DISK_S_NONE; @@ -1632,9 +1604,11 @@ int g_raid_start_volume(struct g_raid_vo struct g_raid_tr_object *obj; int status; - G_RAID_DEBUG(2, "Starting volume %s.", vol->v_name); + G_RAID_DEBUG1(2, vol->v_softc, "Starting volume %s.", vol->v_name); LIST_FOREACH(class, &g_raid_tr_classes, trc_list) { - G_RAID_DEBUG(2, "Tasting %s for %s transformation.", vol->v_name, class->name); + G_RAID_DEBUG1(2, vol->v_softc, + "Tasting volume %s for %s transformation.", + vol->v_name, class->name); obj = (void *)kobj_create((kobj_class_t)class, M_RAID, M_WAITOK); obj->tro_class = class; @@ -1645,7 +1619,8 @@ int g_raid_start_volume(struct g_raid_vo kobj_delete((kobj_t)obj, M_RAID); } if (class == NULL) { - G_RAID_DEBUG(1, "No transformation module found for %s.", + G_RAID_DEBUG1(0, vol->v_softc, + "No transformation module found for %s.", vol->v_name); vol->v_tr = NULL; g_raid_change_volume_state(vol, G_RAID_VOLUME_S_UNSUPPORTED); @@ -1653,7 +1628,8 @@ int g_raid_start_volume(struct g_raid_vo G_RAID_EVENT_VOLUME); return (-1); } - G_RAID_DEBUG(2, "Transformation module %s chosen for %s.", + G_RAID_DEBUG1(2, vol->v_softc, + "Transformation module %s chosen for %s.", class->name, vol->v_name); vol->v_tr = obj; return (0); @@ -1685,14 +1661,14 @@ g_raid_destroy_node(struct g_raid_softc sc->sc_md = NULL; } if (sc->sc_geom != NULL) { - G_RAID_DEBUG(1, "Destroying node %s.", sc->sc_name); + G_RAID_DEBUG1(0, sc, "Array %s destroyed.", sc->sc_name); g_topology_lock(); sc->sc_geom->softc = NULL; g_wither_geom(sc->sc_geom, ENXIO); g_topology_unlock(); sc->sc_geom = NULL; } else - G_RAID_DEBUG(1, "Destroying node."); + G_RAID_DEBUG(1, "Array destroyed."); if (worker) { mtx_destroy(&sc->sc_queue_mtx); sx_xunlock(&sc->sc_lock); @@ -1717,7 +1693,7 @@ g_raid_destroy_volume(struct g_raid_volu int i; sc = vol->v_softc; - G_RAID_DEBUG(2, "Destroying volume %s.", vol->v_name); + G_RAID_DEBUG1(2, sc, "Destroying volume %s.", vol->v_name); vol->v_stopping = 1; if (vol->v_state != G_RAID_VOLUME_S_STOPPED) { if (vol->v_tr) { @@ -1749,7 +1725,7 @@ g_raid_destroy_volume(struct g_raid_volu continue; TAILQ_REMOVE(&disk->d_subdisks, &vol->v_subdisks[i], sd_next); } - G_RAID_DEBUG(2, "Volume %s destroyed.", vol->v_name); + G_RAID_DEBUG1(2, sc, "Volume %s destroyed.", vol->v_name); free(vol, M_RAID); if (sc->sc_stopping == G_RAID_DESTROY_HARD) { /* Wake up worker to let it selfdestruct. */ @@ -1765,7 +1741,7 @@ g_raid_destroy_disk(struct g_raid_disk * struct g_raid_subdisk *sd, *tmp; sc = disk->d_softc; - G_RAID_DEBUG(2, "Destroying disk."); + G_RAID_DEBUG1(2, sc, "Destroying disk."); if (disk->d_consumer) { g_topology_lock(); g_raid_kill_consumer(sc, disk->d_consumer); @@ -1802,20 +1778,19 @@ g_raid_destroy(struct g_raid_softc *sc, if (opens > 0) { switch (how) { case G_RAID_DESTROY_SOFT: - G_RAID_DEBUG(1, - "%d volumes of %s are still open.", - opens, sc->sc_name); + G_RAID_DEBUG1(1, sc, + "%d volumes are still open.", + opens); return (EBUSY); case G_RAID_DESTROY_DELAYED: - G_RAID_DEBUG(1, - "Node %s will be destroyed on last close.", - sc->sc_name); + G_RAID_DEBUG1(1, sc, + "Array will be destroyed on last close."); sc->sc_stopping = G_RAID_DESTROY_DELAYED; return (EBUSY); case G_RAID_DESTROY_HARD: - G_RAID_DEBUG(1, - "%d volumes of %s are still open.", - opens, sc->sc_name); + G_RAID_DEBUG1(1, sc, + "%d volumes are still open.", + opens); } } @@ -1848,7 +1823,7 @@ g_raid_taste(struct g_class *mp, struct g_topology_assert(); g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); - G_RAID_DEBUG(2, "Tasting %s.", pp->name); + G_RAID_DEBUG(2, "Tasting provider %s.", pp->name); gp = g_new_geomf(mp, "mirror:taste"); /* @@ -1860,7 +1835,8 @@ g_raid_taste(struct g_class *mp, struct geom = NULL; LIST_FOREACH(class, &g_raid_md_classes, mdc_list) { - G_RAID_DEBUG(2, "Tasting %s for %s metadata.", pp->name, class->name); + G_RAID_DEBUG(2, "Tasting provider %s for %s metadata.", + pp->name, class->name); obj = (void *)kobj_create((kobj_class_t)class, M_RAID, M_WAITOK); obj->mdo_class = class; @@ -1874,7 +1850,7 @@ g_raid_taste(struct g_class *mp, struct g_detach(cp); g_destroy_consumer(cp); g_destroy_geom(gp); - G_RAID_DEBUG(2, "Tasting %s done.", pp->name); + G_RAID_DEBUG(2, "Tasting provider %s done.", pp->name); return (geom); } @@ -1885,13 +1861,13 @@ g_raid_create_node_format(const char *fo struct g_raid_md_object *obj; int status; - G_RAID_DEBUG(2, "Creating node for %s metadata.", format); + G_RAID_DEBUG(2, "Creating array for %s metadata.", format); LIST_FOREACH(class, &g_raid_md_classes, mdc_list) { if (strcasecmp(class->name, format) == 0) break; } if (class == NULL) { - G_RAID_DEBUG(2, "Creating node for %s metadata.", format); + G_RAID_DEBUG(1, "No support for %s metadata.", format); return (G_RAID_MD_TASTE_FAIL); } obj = (void *)kobj_create((kobj_class_t)class, M_RAID, Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Tue Feb 8 11:48:47 2011 (r218434) +++ projects/graid/head/sys/geom/raid/g_raid.h Tue Feb 8 12:12:48 2011 (r218435) @@ -64,6 +64,17 @@ extern struct g_class g_raid_class; } \ } \ } while (0) +#define G_RAID_DEBUG1(lvl, sc, fmt, ...) do { \ + if (g_raid_debug >= (lvl)) { \ + if (g_raid_debug > 0) { \ + printf("GEOM_RAID[%u]: %s: " fmt "\n", \ + lvl, (sc)->sc_name, ## __VA_ARGS__); \ + } else { \ + printf("GEOM_RAID: %s: " fmt "\n", \ + (sc)->sc_name, ## __VA_ARGS__); \ + } \ + } \ +} while (0) #define G_RAID_LOGREQ(lvl, bp, fmt, ...) do { \ if (g_raid_debug >= (lvl)) { \ if (g_raid_debug > 0) { \ @@ -328,6 +339,7 @@ int g_raid_create_node_format(const char struct g_raid_volume * g_raid_create_volume(struct g_raid_softc *sc, const char *name); struct g_raid_disk * g_raid_create_disk(struct g_raid_softc *sc); +const char * g_raid_get_diskname(struct g_raid_disk *disk); int g_raid_start_volume(struct g_raid_volume *vol); Modified: projects/graid/head/sys/geom/raid/g_raid_ctl.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid_ctl.c Tue Feb 8 11:48:47 2011 (r218434) +++ projects/graid/head/sys/geom/raid/g_raid_ctl.c Tue Feb 8 12:12:48 2011 (r218435) @@ -90,7 +90,7 @@ g_raid_ctl_label(struct gctl_req *req, s } crstatus = g_raid_create_node_format(format, &geom); if (crstatus == G_RAID_MD_TASTE_FAIL) { - gctl_error(req, "Failed to create node with format '%s'.", + gctl_error(req, "Failed to create array with format '%s'.", format); return; } @@ -132,12 +132,12 @@ g_raid_ctl_stop(struct gctl_req *req, st } nodename = gctl_get_asciiparam(req, "arg0"); if (nodename == NULL) { - gctl_error(req, "No node name recieved."); + gctl_error(req, "No array name recieved."); return; } sc = g_raid_find_node(mp, nodename); if (sc == NULL) { - gctl_error(req, "Node '%s' not found.", nodename); + gctl_error(req, "Array '%s' not found.", nodename); return; } force = gctl_get_paraml(req, "force", sizeof(*force)); @@ -172,12 +172,12 @@ g_raid_ctl_other(struct gctl_req *req, s } nodename = gctl_get_asciiparam(req, "arg0"); if (nodename == NULL) { - gctl_error(req, "No node name recieved."); + gctl_error(req, "No array name recieved."); return; } sc = g_raid_find_node(mp, nodename); if (sc == NULL) { - gctl_error(req, "Node '%s' not found.", nodename); + gctl_error(req, "Array '%s' not found.", nodename); return; } g_topology_unlock(); Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Tue Feb 8 11:48:47 2011 (r218434) +++ projects/graid/head/sys/geom/raid/md_intel.c Tue Feb 8 12:12:48 2011 (r218435) @@ -603,7 +603,7 @@ g_raid_md_intel_start_disk(struct g_raid /* Find disk position in metadata by it's serial. */ disk_pos = intel_meta_find_disk(meta, pd->pd_disk_meta.serial); if (disk_pos < 0) { - G_RAID_DEBUG(1, "Unknown, probably new or stale disk"); + G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk"); /* Failed stale disk is useless for us. */ if (pd->pd_disk_meta.flags & INTEL_F_FAILED) { g_raid_change_disk_state(disk, G_RAID_DISK_S_STALE_FAILED); @@ -624,7 +624,7 @@ g_raid_md_intel_start_disk(struct g_raid TAILQ_FOREACH(sd, &tmpdisk->d_subdisks, sd_next) { if (sd->sd_offset + sd->sd_size + 4096 > (off_t)pd->pd_disk_meta.sectors * 512) { - G_RAID_DEBUG(1, + G_RAID_DEBUG1(1, sc, "Disk too small (%llu < %llu)", ((unsigned long long) pd->pd_disk_meta.sectors) * 512, @@ -664,7 +664,7 @@ nofit: if (olddisk == NULL) panic("No disk at position %d!", disk_pos); if (olddisk->d_state != G_RAID_DISK_S_OFFLINE) { - G_RAID_DEBUG(1, "More then one disk for pos %d", + G_RAID_DEBUG1(1, sc, "More then one disk for pos %d", disk_pos); g_raid_change_disk_state(disk, G_RAID_DISK_S_STALE); return (0); @@ -826,7 +826,8 @@ g_raid_md_intel_refill(struct g_raid_sof if (na == meta->total_disks) break; - G_RAID_DEBUG(1, "Array is not complete (%d of %d), " + G_RAID_DEBUG1(1, md->mdo_softc, + "Array is not complete (%d of %d), " "trying to refill.", na, meta->total_disks); /* Try to get use some of STALE disks. */ @@ -924,7 +925,7 @@ g_raid_md_intel_start(struct g_raid_soft pd->pd_disk_meta = meta->disk[disk_pos]; disk = g_raid_create_disk(sc); disk->d_md_data = (void *)pd; - g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); + disk->d_state = G_RAID_DISK_S_OFFLINE; for (i = 0; i < meta->total_volumes; i++) { mvol = intel_get_volume(meta, i); mmap = intel_get_map(mvol, 0); @@ -962,7 +963,7 @@ g_raid_md_intel_start(struct g_raid_soft } callout_stop(&mdi->mdio_start_co); - G_RAID_DEBUG(1, "root_mount_rel %p", mdi->mdio_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_rel %p", mdi->mdio_rootmount); root_mount_rel(mdi->mdio_rootmount); mdi->mdio_rootmount = NULL; } @@ -989,7 +990,7 @@ g_raid_md_intel_new_disk(struct g_raid_d /* If we haven't started yet - check metadata freshness. */ if (mdi->mdio_meta == NULL || ((int32_t)(pdmeta->generation - mdi->mdio_generation)) > 0) { - G_RAID_DEBUG(1, "Newer disk"); + G_RAID_DEBUG1(1, sc, "Newer disk"); if (mdi->mdio_meta != NULL) free(mdi->mdio_meta, M_MD_INTEL); mdi->mdio_meta = intel_meta_copy(pdmeta); @@ -997,10 +998,11 @@ g_raid_md_intel_new_disk(struct g_raid_d mdi->mdio_disks_present = 1; } else if (pdmeta->generation == mdi->mdio_generation) { mdi->mdio_disks_present++; - G_RAID_DEBUG(1, "Matching disk (%d up)", - mdi->mdio_disks_present); + G_RAID_DEBUG1(1, sc, "Matching disk (%d of %d up)", + mdi->mdio_disks_present, + mdi->mdio_meta->total_disks); } else { - G_RAID_DEBUG(1, "Older disk"); + G_RAID_DEBUG1(1, sc, "Older disk"); } /* If we collected all needed disks - start array. */ if (mdi->mdio_disks_present == mdi->mdio_meta->total_disks) @@ -1020,7 +1022,7 @@ g_raid_intel_go(void *arg) mdi = (struct g_raid_md_intel_object *)md; sx_xlock(&sc->sc_lock); if (!mdi->mdio_started) { - G_RAID_DEBUG(0, "Force node %s start due to timeout.", sc->sc_name); + G_RAID_DEBUG1(0, sc, "Force array start due to timeout."); g_raid_event_send(sc, G_RAID_NODE_E_START, 0); } sx_xunlock(&sc->sc_lock); @@ -1043,7 +1045,6 @@ g_raid_md_create_intel(struct g_raid_md_ return (G_RAID_MD_TASTE_FAIL); md->mdo_softc = sc; *gp = sc->sc_geom; - G_RAID_DEBUG(1, "Created new node %s", sc->sc_name); return (G_RAID_MD_TASTE_NEW); } @@ -1174,7 +1175,7 @@ search: /* Found matching node. */ if (geom != NULL) { - G_RAID_DEBUG(1, "Found matching node %s", sc->sc_name); + G_RAID_DEBUG(1, "Found matching array %s", sc->sc_name); result = G_RAID_MD_TASTE_EXISTING; } else if (spare) { /* Not found needy node -- left for later. */ @@ -1188,12 +1189,11 @@ search: sc = g_raid_create_node(mp, name, md); md->mdo_softc = sc; geom = sc->sc_geom; - G_RAID_DEBUG(1, "Created new node %s", sc->sc_name); callout_init(&mdi->mdio_start_co, 1); callout_reset(&mdi->mdio_start_co, g_raid_start_timeout * hz, g_raid_intel_go, sc); mdi->mdio_rootmount = root_mount_hold("GRAID-Intel"); - G_RAID_DEBUG(1, "root_mount_hold %p", mdi->mdio_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_hold %p", mdi->mdio_rootmount); } rcp = g_new_consumer(geom); @@ -1226,7 +1226,8 @@ search: len = sizeof(disk->d_kd); error = g_io_getattr("GEOM::kerneldump", rcp, &len, &disk->d_kd); if (disk->d_kd.di.dumper == NULL) - G_RAID_DEBUG(2, "Dumping not supported: %d.", error); + G_RAID_DEBUG1(2, sc, "Dumping not supported by %s: %d.", + rcp->provider->name, error); g_raid_md_intel_new_disk(disk); @@ -1289,13 +1290,12 @@ g_raid_md_event_intel(struct g_raid_md_o /* Write updated metadata to all disks. */ g_raid_md_write_intel(md, NULL, NULL, NULL); - /* Pickup any STALE/SPARE disks to refill array if needed. */ - g_raid_md_intel_refill(sc); - /* Check if anything left except placeholders. */ if (g_raid_ndisks(sc, -1) == g_raid_ndisks(sc, G_RAID_DISK_S_OFFLINE)) g_raid_destroy_node(sc, 0); + else + g_raid_md_intel_refill(sc); return (0); } return (-2); @@ -1434,7 +1434,9 @@ makedisk: len = sizeof(disk->d_kd); g_io_getattr("GEOM::kerneldump", cp, &len, &disk->d_kd); if (disk->d_kd.di.dumper == NULL) - G_RAID_DEBUG(2, "Dumping not supported."); + G_RAID_DEBUG1(2, sc, + "Dumping not supported by %s.", + cp->provider->name); pd->pd_disk_meta.sectors = pp->mediasize / pp->sectorsize; if (size > pp->mediasize) @@ -1857,13 +1859,12 @@ makedisk: /* Write updated metadata to remaining disks. */ g_raid_md_write_intel(md, NULL, NULL, NULL); - /* Pickup any STALE/SPARE disks to refill array if needed. */ - g_raid_md_intel_refill(sc); - /* Check if anything left except placeholders. */ if (g_raid_ndisks(sc, -1) == g_raid_ndisks(sc, G_RAID_DISK_S_OFFLINE)) g_raid_destroy_node(sc, 0); + else + g_raid_md_intel_refill(sc); return (error); } if (strcmp(verb, "insert") == 0) { @@ -1943,7 +1944,9 @@ makedisk: len = sizeof(disk->d_kd); g_io_getattr("GEOM::kerneldump", cp, &len, &disk->d_kd); if (disk->d_kd.di.dumper == NULL) - G_RAID_DEBUG(2, "Dumping not supported."); + G_RAID_DEBUG1(2, sc, + "Dumping not supported by %s.", + cp->provider->name); memcpy(&pd->pd_disk_meta.serial[0], &serial[0], INTEL_SERIAL_LEN); @@ -2250,13 +2253,12 @@ g_raid_md_fail_disk_intel(struct g_raid_ /* Write updated metadata to remaining disks. */ g_raid_md_write_intel(md, NULL, NULL, tdisk); - /* Pickup any STALE/SPARE disks to refill array if needed. */ - g_raid_md_intel_refill(sc); - /* Check if anything left except placeholders. */ if (g_raid_ndisks(sc, -1) == g_raid_ndisks(sc, G_RAID_DISK_S_OFFLINE)) g_raid_destroy_node(sc, 0); + else + g_raid_md_intel_refill(sc); return (0); } @@ -2285,7 +2287,8 @@ g_raid_md_free_intel(struct g_raid_md_ob if (!mdi->mdio_started) { mdi->mdio_started = 0; callout_stop(&mdi->mdio_start_co); - G_RAID_DEBUG(1, "root_mount_rel %p", mdi->mdio_rootmount); + G_RAID_DEBUG1(1, md->mdo_softc, + "root_mount_rel %p", mdi->mdio_rootmount); root_mount_rel(mdi->mdio_rootmount); mdi->mdio_rootmount = NULL; } Modified: projects/graid/head/sys/geom/raid/tr_raid0.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid0.c Tue Feb 8 11:48:47 2011 (r218434) +++ projects/graid/head/sys/geom/raid/tr_raid0.c Tue Feb 8 12:12:48 2011 (r218435) @@ -141,8 +141,13 @@ g_raid_tr_event_raid0(struct g_raid_tr_o state = sd->sd_state; if (state != G_RAID_SUBDISK_S_NONE && state != G_RAID_SUBDISK_S_FAILED && - state != G_RAID_SUBDISK_S_ACTIVE) + state != G_RAID_SUBDISK_S_ACTIVE) { + G_RAID_DEBUG1(1, sc, + "Promote subdisk %s:%d from %s to ACTIVE.", + vol->v_name, sd->sd_pos, + g_raid_subdisk_state2str(sd->sd_state)); g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_ACTIVE); + } if (state != sd->sd_state && !trs->trso_starting && !trs->trso_stopped) g_raid_write_metadata(sc, vol, sd, NULL); Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 11:48:47 2011 (r218434) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 12:12:48 2011 (r218435) @@ -194,7 +194,7 @@ g_raid_tr_update_state_raid1(struct g_ra } if (bestsd->sd_state >= G_RAID_SUBDISK_S_UNINITIALIZED) { /* We found reasonable candidate. */ - G_RAID_DEBUG(1, + G_RAID_DEBUG1(1, vol->v_softc, "Promote subdisk %s:%d from %s to ACTIVE.", vol->v_name, bestsd->sd_pos, g_raid_subdisk_state2str(bestsd->sd_state)); @@ -285,6 +285,10 @@ g_raid_tr_raid1_rebuild_finish(struct g_ trs = (struct g_raid_tr_raid1_object *)tr; sd = trs->trso_failed_sd; + G_RAID_DEBUG1(0, tr->tro_volume->v_softc, + "Subdisk %s:%d-%s rebuild completed.", + sd->sd_volume->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]"); g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_ACTIVE); sd->sd_rebuild_pos = 0; g_raid_tr_raid1_rebuild_done(trs); @@ -302,8 +306,16 @@ g_raid_tr_raid1_rebuild_abort(struct g_r trs = (struct g_raid_tr_raid1_object *)tr; sd = trs->trso_failed_sd; if (trs->trso_flags & TR_RAID1_F_DOING_SOME) { + G_RAID_DEBUG1(1, vol->v_softc, + "Subdisk %s:%d-%s rebuild is aborting.", + sd->sd_volume->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]"); trs->trso_flags |= TR_RAID1_F_ABORT; } else { + G_RAID_DEBUG1(0, vol->v_softc, + "Subdisk %s:%d-%s rebuild aborted.", + sd->sd_volume->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]"); trs->trso_flags &= ~TR_RAID1_F_ABORT; if (trs->trso_flags & TR_RAID1_F_LOCKED) { trs->trso_flags &= ~TR_RAID1_F_LOCKED; @@ -326,13 +338,15 @@ g_raid_tr_raid1_rebuild_start(struct g_r vol = tr->tro_volume; trs = (struct g_raid_tr_raid1_object *)tr; if (trs->trso_failed_sd) { - G_RAID_DEBUG(1, "Already rebuild in start rebuild. pos %jd\n", + G_RAID_DEBUG1(1, vol->v_softc, + "Already rebuild in start rebuild. pos %jd\n", (intmax_t)trs->trso_failed_sd->sd_rebuild_pos); return; } sd = g_raid_get_subdisk(vol, G_RAID_SUBDISK_S_ACTIVE); if (sd == NULL) { - G_RAID_DEBUG(1, "No active disk to rebuild. night night."); + G_RAID_DEBUG1(1, vol->v_softc, + "No active disk to rebuild. night night."); return; } fsd = g_raid_get_subdisk(vol, G_RAID_SUBDISK_S_RESYNC); @@ -361,11 +375,15 @@ g_raid_tr_raid1_rebuild_start(struct g_r } } if (fsd == NULL) { - G_RAID_DEBUG(1, "No failed disk to rebuild. night night."); + G_RAID_DEBUG1(1, vol->v_softc, + "No failed disk to rebuild. night night."); return; } trs->trso_failed_sd = fsd; - G_RAID_DEBUG(2, "Kicking off a rebuild at %jd...", + G_RAID_DEBUG1(0, vol->v_softc, + "Subdisk %s:%d-%s rebuild start at %jd.", + fsd->sd_volume->v_name, fsd->sd_pos, + fsd->sd_disk ? g_raid_get_diskname(fsd->sd_disk) : "[none]", trs->trso_failed_sd->sd_rebuild_pos); trs->trso_type = TR_RAID1_REBUILD; trs->trso_buffer = malloc(g_raid1_rebuild_slab, M_TR_RAID1, M_WAITOK); From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 12:51:54 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA3141065674; Tue, 8 Feb 2011 12:51:54 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B85EA8FC16; Tue, 8 Feb 2011 12:51:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18CpsW7046423; Tue, 8 Feb 2011 12:51:54 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18CpseE046415; Tue, 8 Feb 2011 12:51:54 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081251.p18CpseE046415@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 12:51:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218437 - in projects/graid/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/raid sbin/geom/class/sched sys/geom/r... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 12:51:54 -0000 Author: mav Date: Tue Feb 8 12:51:54 2011 New Revision: 218437 URL: http://svn.freebsd.org/changeset/base/218437 Log: MFH r218321, r218322, r218336, r218364, r218367, r218380, r218381, r218394, r218399, r218401, r218404, r218405, r218406, r218407, r218408, r218418, r218435. Modified: projects/graid/8/sbin/geom/class/raid/geom_raid.c projects/graid/8/sbin/geom/class/raid/graid.8 projects/graid/8/sys/geom/raid/g_raid.c projects/graid/8/sys/geom/raid/g_raid.h projects/graid/8/sys/geom/raid/g_raid_ctl.c projects/graid/8/sys/geom/raid/md_intel.c projects/graid/8/sys/geom/raid/tr_raid0.c projects/graid/8/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/8/ (props changed) projects/graid/8/COPYRIGHT (props changed) projects/graid/8/Makefile (props changed) projects/graid/8/Makefile.inc1 (props changed) projects/graid/8/ObsoleteFiles.inc (props changed) projects/graid/8/UPDATING (props changed) projects/graid/8/bin/ (props changed) projects/graid/8/bin/chio/ (props changed) projects/graid/8/bin/chmod/ (props changed) projects/graid/8/bin/cp/ (props changed) projects/graid/8/bin/csh/ (props changed) projects/graid/8/bin/date/ (props changed) projects/graid/8/bin/echo/ (props changed) projects/graid/8/bin/expr/ (props changed) projects/graid/8/bin/getfacl/ (props changed) projects/graid/8/bin/kill/ (props changed) projects/graid/8/bin/ln/ (props changed) projects/graid/8/bin/ls/ (props changed) projects/graid/8/bin/mv/ (props changed) projects/graid/8/bin/pax/ (props changed) projects/graid/8/bin/pkill/ (props changed) projects/graid/8/bin/ps/ (props changed) projects/graid/8/bin/pwait/ (props changed) projects/graid/8/bin/setfacl/ (props changed) projects/graid/8/bin/sh/ (props changed) projects/graid/8/bin/sleep/ (props changed) projects/graid/8/bin/test/ (props changed) projects/graid/8/cddl/compat/opensolaris/ (props changed) projects/graid/8/cddl/contrib/opensolaris/ (props changed) projects/graid/8/cddl/lib/ (props changed) projects/graid/8/cddl/lib/libnvpair/ (props changed) projects/graid/8/cddl/lib/libzpool/ (props changed) projects/graid/8/cddl/usr.bin/ (props changed) projects/graid/8/cddl/usr.sbin/ (props changed) projects/graid/8/contrib/ (props changed) projects/graid/8/contrib/bind9/ (props changed) projects/graid/8/contrib/binutils/ (props changed) projects/graid/8/contrib/bsnmp/ (props changed) projects/graid/8/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/8/contrib/bzip2/ (props changed) projects/graid/8/contrib/com_err/ (props changed) projects/graid/8/contrib/csup/ (props changed) projects/graid/8/contrib/ee/ (props changed) projects/graid/8/contrib/expat/ (props changed) projects/graid/8/contrib/file/ (props changed) projects/graid/8/contrib/gcc/ (props changed) projects/graid/8/contrib/gdb/ (props changed) projects/graid/8/contrib/gdtoa/ (props changed) projects/graid/8/contrib/groff/ (props changed) projects/graid/8/contrib/ipfilter/ (props changed) projects/graid/8/contrib/less/ (props changed) projects/graid/8/contrib/libpcap/ (props changed) projects/graid/8/contrib/ncurses/ (props changed) projects/graid/8/contrib/netcat/ (props changed) projects/graid/8/contrib/ntp/ (props changed) projects/graid/8/contrib/nvi/ (props changed) projects/graid/8/contrib/one-true-awk/ (props changed) projects/graid/8/contrib/openbsm/ (props changed) projects/graid/8/contrib/openpam/ (props changed) projects/graid/8/contrib/pf/ (props changed) projects/graid/8/contrib/sendmail/ (props changed) projects/graid/8/contrib/tcp_wrappers/ (props changed) projects/graid/8/contrib/tcpdump/ (props changed) projects/graid/8/contrib/tcsh/ (props changed) projects/graid/8/contrib/telnet/ (props changed) projects/graid/8/contrib/top/ (props changed) projects/graid/8/contrib/top/install-sh (props changed) projects/graid/8/contrib/traceroute/ (props changed) projects/graid/8/contrib/wpa/ (props changed) projects/graid/8/contrib/xz/ (props changed) projects/graid/8/contrib/xz/AUTHORS (props changed) projects/graid/8/contrib/xz/COPYING (props changed) projects/graid/8/contrib/xz/ChangeLog (props changed) projects/graid/8/contrib/xz/FREEBSD-Xlist (props changed) projects/graid/8/contrib/xz/FREEBSD-upgrade (props changed) projects/graid/8/contrib/xz/README (props changed) projects/graid/8/contrib/xz/THANKS (props changed) projects/graid/8/contrib/xz/TODO (props changed) projects/graid/8/contrib/xz/po/ (props changed) projects/graid/8/contrib/xz/src/ (props changed) projects/graid/8/crypto/heimdal/ (props changed) projects/graid/8/crypto/openssh/ (props changed) projects/graid/8/crypto/openssl/ (props changed) projects/graid/8/etc/ (props changed) projects/graid/8/games/factor/ (props changed) projects/graid/8/games/fortune/ (props changed) projects/graid/8/games/grdc/ (props changed) projects/graid/8/games/pom/ (props changed) projects/graid/8/gnu/lib/csu/ (props changed) projects/graid/8/gnu/lib/libgcc/ (props changed) projects/graid/8/gnu/lib/libstdc++/ (props changed) projects/graid/8/gnu/usr.bin/ (props changed) projects/graid/8/gnu/usr.bin/Makefile (props changed) projects/graid/8/gnu/usr.bin/dialog/ (props changed) projects/graid/8/gnu/usr.bin/gdb/ (props changed) projects/graid/8/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/8/gnu/usr.bin/groff/ (props changed) projects/graid/8/gnu/usr.bin/patch/ (props changed) projects/graid/8/include/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_krb5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_spnego/ (props changed) projects/graid/8/kerberos5/usr.bin/kdestroy/ (props changed) projects/graid/8/kerberos5/usr.bin/kpasswd/ (props changed) projects/graid/8/lib/ (props changed) projects/graid/8/lib/bind/ (props changed) projects/graid/8/lib/csu/ (props changed) projects/graid/8/lib/libarchive/ (props changed) projects/graid/8/lib/libbluetooth/ (props changed) projects/graid/8/lib/libc/ (props changed) projects/graid/8/lib/libc/stdtime/ (props changed) projects/graid/8/lib/libc_r/ (props changed) projects/graid/8/lib/libcam/ (props changed) projects/graid/8/lib/libcompat/ (props changed) projects/graid/8/lib/libdevinfo/ (props changed) projects/graid/8/lib/libdisk/ (props changed) projects/graid/8/lib/libedit/ (props changed) projects/graid/8/lib/libelf/ (props changed) projects/graid/8/lib/libexpat/ (props changed) projects/graid/8/lib/libfetch/ (props changed) projects/graid/8/lib/libgeom/ (props changed) projects/graid/8/lib/libgpib/ (props changed) projects/graid/8/lib/libgssapi/ (props changed) projects/graid/8/lib/libjail/ (props changed) projects/graid/8/lib/libkse/ (props changed) projects/graid/8/lib/libkvm/ (props changed) projects/graid/8/lib/liblzma/ (props changed) projects/graid/8/lib/libmagic/ (props changed) projects/graid/8/lib/libmemstat/ (props changed) projects/graid/8/lib/libpam/ (props changed) projects/graid/8/lib/libpmc/ (props changed) projects/graid/8/lib/libproc/ (props changed) projects/graid/8/lib/libradius/ (props changed) projects/graid/8/lib/librpcsec_gss/ (props changed) projects/graid/8/lib/librtld_db/ (props changed) projects/graid/8/lib/libsm/ (props changed) projects/graid/8/lib/libstand/ (props changed) projects/graid/8/lib/libtacplus/ (props changed) projects/graid/8/lib/libthr/ (props changed) projects/graid/8/lib/libthread_db/ (props changed) projects/graid/8/lib/libufs/ (props changed) projects/graid/8/lib/libugidfw/ (props changed) projects/graid/8/lib/libusb/ (props changed) projects/graid/8/lib/libusb/usb.h (props changed) projects/graid/8/lib/libusbhid/ (props changed) projects/graid/8/lib/libutil/ (props changed) projects/graid/8/lib/libz/ (props changed) projects/graid/8/lib/libz/contrib/ (props changed) projects/graid/8/lib/msun/ (props changed) projects/graid/8/libexec/ (props changed) projects/graid/8/libexec/ftpd/ (props changed) projects/graid/8/libexec/rtld-elf/ (props changed) projects/graid/8/libexec/tftpd/ (props changed) projects/graid/8/release/ (props changed) projects/graid/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/8/release/picobsd/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed) projects/graid/8/release/picobsd/qemu/ (props changed) projects/graid/8/release/picobsd/tinyware/login/ (props changed) projects/graid/8/release/powerpc/ (props changed) projects/graid/8/sbin/ (props changed) projects/graid/8/sbin/atacontrol/ (props changed) projects/graid/8/sbin/bsdlabel/ (props changed) projects/graid/8/sbin/camcontrol/ (props changed) projects/graid/8/sbin/ddb/ (props changed) projects/graid/8/sbin/devd/ (props changed) projects/graid/8/sbin/devfs/ (props changed) projects/graid/8/sbin/dhclient/ (props changed) projects/graid/8/sbin/dump/ (props changed) projects/graid/8/sbin/dumpfs/ (props changed) projects/graid/8/sbin/fdisk/ (props changed) projects/graid/8/sbin/fsck/ (props changed) projects/graid/8/sbin/fsck_ffs/ (props changed) projects/graid/8/sbin/fsck_msdosfs/ (props changed) projects/graid/8/sbin/fsirand/ (props changed) projects/graid/8/sbin/geom/ (props changed) projects/graid/8/sbin/geom/class/multipath/ (props changed) projects/graid/8/sbin/geom/class/part/ (props changed) projects/graid/8/sbin/geom/class/sched/gsched.8 (props changed) projects/graid/8/sbin/geom/class/stripe/ (props changed) projects/graid/8/sbin/ggate/ (props changed) projects/graid/8/sbin/growfs/ (props changed) projects/graid/8/sbin/hastctl/ (props changed) projects/graid/8/sbin/hastd/ (props changed) projects/graid/8/sbin/ifconfig/ (props changed) projects/graid/8/sbin/ipfw/ (props changed) projects/graid/8/sbin/iscontrol/ (props changed) projects/graid/8/sbin/kldload/ (props changed) projects/graid/8/sbin/kldstat/ (props changed) projects/graid/8/sbin/mdconfig/ (props changed) projects/graid/8/sbin/mksnap_ffs/ (props changed) projects/graid/8/sbin/mount/ (props changed) projects/graid/8/sbin/mount_cd9660/ (props changed) projects/graid/8/sbin/mount_msdosfs/ (props changed) projects/graid/8/sbin/mount_nfs/ (props changed) projects/graid/8/sbin/natd/ (props changed) projects/graid/8/sbin/newfs/ (props changed) projects/graid/8/sbin/newfs_msdos/ (props changed) projects/graid/8/sbin/ping6/ (props changed) projects/graid/8/sbin/reboot/ (props changed) projects/graid/8/sbin/restore/ (props changed) projects/graid/8/sbin/route/ (props changed) projects/graid/8/sbin/routed/ (props changed) projects/graid/8/sbin/setkey/ (props changed) projects/graid/8/sbin/spppcontrol/ (props changed) projects/graid/8/sbin/sysctl/ (props changed) projects/graid/8/sbin/tunefs/ (props changed) projects/graid/8/sbin/umount/ (props changed) projects/graid/8/secure/ (props changed) projects/graid/8/secure/lib/libcrypto/ (props changed) projects/graid/8/secure/lib/libssl/ (props changed) projects/graid/8/secure/usr.bin/bdes/ (props changed) projects/graid/8/secure/usr.bin/openssl/ (props changed) projects/graid/8/share/dict/ (props changed) projects/graid/8/share/doc/papers/jail/ (props changed) projects/graid/8/share/doc/smm/01.setup/ (props changed) projects/graid/8/share/examples/ (props changed) projects/graid/8/share/examples/etc/ (props changed) projects/graid/8/share/examples/kld/syscall/ (props changed) projects/graid/8/share/man/ (props changed) projects/graid/8/share/man/man1/ (props changed) projects/graid/8/share/man/man3/ (props changed) projects/graid/8/share/man/man4/ (props changed) projects/graid/8/share/man/man5/ (props changed) projects/graid/8/share/man/man7/ (props changed) projects/graid/8/share/man/man8/ (props changed) projects/graid/8/share/man/man9/ (props changed) projects/graid/8/share/misc/ (props changed) projects/graid/8/share/mk/ (props changed) projects/graid/8/share/syscons/ (props changed) projects/graid/8/share/termcap/ (props changed) projects/graid/8/share/timedef/ (props changed) projects/graid/8/share/zoneinfo/ (props changed) projects/graid/8/sys/ (props changed) projects/graid/8/sys/amd64/include/xen/ (props changed) projects/graid/8/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/8/sys/contrib/dev/acpica/ (props changed) projects/graid/8/sys/contrib/pf/ (props changed) projects/graid/8/tools/ (props changed) projects/graid/8/tools/build/mk/ (props changed) projects/graid/8/tools/build/options/ (props changed) projects/graid/8/tools/debugscripts/ (props changed) projects/graid/8/tools/kerneldoc/subsys/ (props changed) projects/graid/8/tools/regression/acct/ (props changed) projects/graid/8/tools/regression/acltools/ (props changed) projects/graid/8/tools/regression/aio/aiotest/ (props changed) projects/graid/8/tools/regression/bin/ (props changed) projects/graid/8/tools/regression/bin/date/ (props changed) projects/graid/8/tools/regression/bin/sh/ (props changed) projects/graid/8/tools/regression/fifo/ (props changed) projects/graid/8/tools/regression/geom/ (props changed) projects/graid/8/tools/regression/lib/libc/ (props changed) projects/graid/8/tools/regression/lib/msun/test-conj.t (props changed) projects/graid/8/tools/regression/mqueue/mqtest1/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest2/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest3/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest4/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest5/ (props changed) projects/graid/8/tools/regression/netinet/ (props changed) projects/graid/8/tools/regression/poll/ (props changed) projects/graid/8/tools/regression/posixsem/ (props changed) projects/graid/8/tools/regression/priv/ (props changed) projects/graid/8/tools/regression/sockets/unix_gc/ (props changed) projects/graid/8/tools/regression/usr.bin/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/sed/ (props changed) projects/graid/8/tools/regression/usr.bin/tr/ (props changed) projects/graid/8/tools/test/ (props changed) projects/graid/8/tools/tools/ (props changed) projects/graid/8/tools/tools/ath/ (props changed) projects/graid/8/tools/tools/ath/common/dumpregs.h (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/graid/8/tools/tools/mctest/ (props changed) projects/graid/8/tools/tools/nanobsd/ (props changed) projects/graid/8/tools/tools/netrate/ (props changed) projects/graid/8/tools/tools/netrate/tcpp/ (props changed) projects/graid/8/tools/tools/termcap/termcap.pl (props changed) projects/graid/8/tools/tools/umastat/ (props changed) projects/graid/8/tools/tools/vimage/ (props changed) projects/graid/8/usr.bin/ (props changed) projects/graid/8/usr.bin/apply/ (props changed) projects/graid/8/usr.bin/ar/ (props changed) projects/graid/8/usr.bin/awk/ (props changed) projects/graid/8/usr.bin/biff/ (props changed) projects/graid/8/usr.bin/c89/ (props changed) projects/graid/8/usr.bin/c99/ (props changed) projects/graid/8/usr.bin/calendar/ (props changed) projects/graid/8/usr.bin/catman/ (props changed) projects/graid/8/usr.bin/chpass/Makefile (props changed) projects/graid/8/usr.bin/column/ (props changed) projects/graid/8/usr.bin/comm/ (props changed) projects/graid/8/usr.bin/cpio/ (props changed) projects/graid/8/usr.bin/csup/ (props changed) projects/graid/8/usr.bin/du/ (props changed) projects/graid/8/usr.bin/ee/ (props changed) projects/graid/8/usr.bin/enigma/ (props changed) projects/graid/8/usr.bin/fetch/ (props changed) projects/graid/8/usr.bin/find/ (props changed) projects/graid/8/usr.bin/finger/ (props changed) projects/graid/8/usr.bin/fold/ (props changed) projects/graid/8/usr.bin/fstat/ (props changed) projects/graid/8/usr.bin/gcore/ (props changed) projects/graid/8/usr.bin/getopt/ (props changed) projects/graid/8/usr.bin/gzip/ (props changed) projects/graid/8/usr.bin/hexdump/ (props changed) projects/graid/8/usr.bin/indent/ (props changed) projects/graid/8/usr.bin/jot/ (props changed) projects/graid/8/usr.bin/kdump/ (props changed) projects/graid/8/usr.bin/killall/ (props changed) projects/graid/8/usr.bin/ktrace/ (props changed) projects/graid/8/usr.bin/ldd/ (props changed) projects/graid/8/usr.bin/lex/ (props changed) projects/graid/8/usr.bin/locale/ (props changed) projects/graid/8/usr.bin/locate/ (props changed) projects/graid/8/usr.bin/lockf/ (props changed) projects/graid/8/usr.bin/look/ (props changed) projects/graid/8/usr.bin/mail/ (props changed) projects/graid/8/usr.bin/make/ (props changed) projects/graid/8/usr.bin/makewhatis/ (props changed) projects/graid/8/usr.bin/minigzip/ (props changed) projects/graid/8/usr.bin/ncal/ (props changed) projects/graid/8/usr.bin/netstat/ (props changed) projects/graid/8/usr.bin/pathchk/ (props changed) projects/graid/8/usr.bin/perror/ (props changed) projects/graid/8/usr.bin/procstat/ (props changed) projects/graid/8/usr.bin/rpcgen/ (props changed) projects/graid/8/usr.bin/ruptime/ (props changed) projects/graid/8/usr.bin/script/ (props changed) projects/graid/8/usr.bin/sed/ (props changed) projects/graid/8/usr.bin/sockstat/ (props changed) projects/graid/8/usr.bin/split/ (props changed) projects/graid/8/usr.bin/stat/ (props changed) projects/graid/8/usr.bin/systat/ (props changed) projects/graid/8/usr.bin/tar/ (props changed) projects/graid/8/usr.bin/tftp/ (props changed) projects/graid/8/usr.bin/top/ (props changed) projects/graid/8/usr.bin/touch/ (props changed) projects/graid/8/usr.bin/tr/ (props changed) projects/graid/8/usr.bin/truss/ (props changed) projects/graid/8/usr.bin/uname/ (props changed) projects/graid/8/usr.bin/unifdef/ (props changed) projects/graid/8/usr.bin/uniq/ (props changed) projects/graid/8/usr.bin/unzip/ (props changed) projects/graid/8/usr.bin/uudecode/ (props changed) projects/graid/8/usr.bin/vmstat/ (props changed) projects/graid/8/usr.bin/w/ (props changed) projects/graid/8/usr.bin/whois/ (props changed) projects/graid/8/usr.bin/xinstall/ (props changed) projects/graid/8/usr.bin/xlint/ (props changed) projects/graid/8/usr.bin/xz/ (props changed) projects/graid/8/usr.bin/yacc/ (props changed) projects/graid/8/usr.sbin/ (props changed) projects/graid/8/usr.sbin/Makefile (props changed) projects/graid/8/usr.sbin/acpi/ (props changed) projects/graid/8/usr.sbin/arp/ (props changed) projects/graid/8/usr.sbin/asf/ (props changed) projects/graid/8/usr.sbin/bluetooth/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidcontrol/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidd/ (props changed) projects/graid/8/usr.sbin/boot0cfg/ (props changed) projects/graid/8/usr.sbin/bsnmpd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/8/usr.sbin/burncd/ (props changed) projects/graid/8/usr.sbin/cdcontrol/ (props changed) projects/graid/8/usr.sbin/chown/ (props changed) projects/graid/8/usr.sbin/config/ (props changed) projects/graid/8/usr.sbin/config/SMM.doc/ (props changed) projects/graid/8/usr.sbin/cpucontrol/ (props changed) projects/graid/8/usr.sbin/crashinfo/ (props changed) projects/graid/8/usr.sbin/cron/ (props changed) projects/graid/8/usr.sbin/crunch/examples/ (props changed) projects/graid/8/usr.sbin/ctm/ (props changed) projects/graid/8/usr.sbin/cxgbtool/ (props changed) projects/graid/8/usr.sbin/devinfo/ (props changed) projects/graid/8/usr.sbin/diskinfo/ (props changed) projects/graid/8/usr.sbin/dumpcis/cardinfo.h (props changed) projects/graid/8/usr.sbin/dumpcis/cis.h (props changed) projects/graid/8/usr.sbin/faithd/ (props changed) projects/graid/8/usr.sbin/fdcontrol/ (props changed) projects/graid/8/usr.sbin/fdformat/ (props changed) projects/graid/8/usr.sbin/fdread/ (props changed) projects/graid/8/usr.sbin/fdwrite/ (props changed) projects/graid/8/usr.sbin/fifolog/ (props changed) projects/graid/8/usr.sbin/flowctl/ (props changed) projects/graid/8/usr.sbin/freebsd-update/ (props changed) projects/graid/8/usr.sbin/i2c/ (props changed) projects/graid/8/usr.sbin/inetd/ (props changed) projects/graid/8/usr.sbin/iostat/ (props changed) projects/graid/8/usr.sbin/jail/ (props changed) projects/graid/8/usr.sbin/jls/ (props changed) projects/graid/8/usr.sbin/lpr/ (props changed) projects/graid/8/usr.sbin/mailwrapper/ (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/8/usr.sbin/makefs/getid.c (props changed) projects/graid/8/usr.sbin/mergemaster/ (props changed) projects/graid/8/usr.sbin/mfiutil/ (props changed) projects/graid/8/usr.sbin/mountd/ (props changed) projects/graid/8/usr.sbin/moused/ (props changed) projects/graid/8/usr.sbin/mptutil/ (props changed) projects/graid/8/usr.sbin/mtest/ (props changed) projects/graid/8/usr.sbin/mtree/ (props changed) projects/graid/8/usr.sbin/named/ (props changed) projects/graid/8/usr.sbin/ndp/ (props changed) projects/graid/8/usr.sbin/newsyslog/ (props changed) projects/graid/8/usr.sbin/nfsdumpstate/ (props changed) projects/graid/8/usr.sbin/ntp/ (props changed) projects/graid/8/usr.sbin/pciconf/ (props changed) projects/graid/8/usr.sbin/periodic/ (props changed) projects/graid/8/usr.sbin/pkg_install/ (props changed) projects/graid/8/usr.sbin/pmcannotate/ (props changed) projects/graid/8/usr.sbin/pmccontrol/ (props changed) projects/graid/8/usr.sbin/pmcstat/ (props changed) projects/graid/8/usr.sbin/powerd/ (props changed) projects/graid/8/usr.sbin/ppp/ (props changed) projects/graid/8/usr.sbin/pppctl/ (props changed) projects/graid/8/usr.sbin/pstat/ (props changed) projects/graid/8/usr.sbin/rpc.lockd/ (props changed) projects/graid/8/usr.sbin/rpc.umntall/ (props changed) projects/graid/8/usr.sbin/rtadvd/ (props changed) projects/graid/8/usr.sbin/rtsold/ (props changed) projects/graid/8/usr.sbin/sade/ (props changed) projects/graid/8/usr.sbin/service/ (props changed) projects/graid/8/usr.sbin/services_mkdb/ (props changed) projects/graid/8/usr.sbin/setfmac/ (props changed) projects/graid/8/usr.sbin/setpmac/ (props changed) projects/graid/8/usr.sbin/smbmsg/ (props changed) projects/graid/8/usr.sbin/sysinstall/ (props changed) projects/graid/8/usr.sbin/syslogd/ (props changed) projects/graid/8/usr.sbin/traceroute/ (props changed) projects/graid/8/usr.sbin/traceroute6/ (props changed) projects/graid/8/usr.sbin/uathload/ (props changed) projects/graid/8/usr.sbin/ugidfw/ (props changed) projects/graid/8/usr.sbin/uhsoctl/ (props changed) projects/graid/8/usr.sbin/usbconfig/ (props changed) projects/graid/8/usr.sbin/vidcontrol/ (props changed) projects/graid/8/usr.sbin/watchdogd/ (props changed) projects/graid/8/usr.sbin/wpa/ (props changed) projects/graid/8/usr.sbin/ypserv/ (props changed) projects/graid/8/usr.sbin/zic/ (props changed) Modified: projects/graid/8/sbin/geom/class/raid/geom_raid.c ============================================================================== --- projects/graid/8/sbin/geom/class/raid/geom_raid.c Tue Feb 8 12:49:01 2011 (r218436) +++ projects/graid/8/sbin/geom/class/raid/geom_raid.c Tue Feb 8 12:51:54 2011 (r218437) @@ -61,8 +61,12 @@ struct g_command class_commands[] = { }, NULL, "[-S size] [-s stripsize] name label level" }, - { "delete", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, - "[-v] name [label|num]" + { "delete", G_FLAG_VERBOSE, NULL, + { + { 'f', "force", NULL, G_TYPE_BOOL }, + G_OPT_SENTINEL + }, + NULL, "[-fv] name [label|num]" }, { "insert", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, "[-v] name prov ..." Modified: projects/graid/8/sbin/geom/class/raid/graid.8 ============================================================================== --- projects/graid/8/sbin/geom/class/raid/graid.8 Tue Feb 8 12:49:01 2011 (r218436) +++ projects/graid/8/sbin/geom/class/raid/graid.8 Tue Feb 8 12:51:54 2011 (r218437) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 3, 2011 +.Dd February 5, 2011 .Dt GRAID 8 .Os .Sh NAME @@ -48,6 +48,7 @@ .Ar level .Nm .Cm delete +.Op Fl f .Ar name .Op Ar label | Ar num .Nm @@ -142,6 +143,12 @@ Optional or .Ar num arguments allow specifying volume for deletion. +.Pp +Additional options include: +.Bl -tag -width ".Fl f" +.It Fl f +Delete volume(s) even if it is still open. +.El .It Cm insert Insert specified provider(s) into specified array instead of the first missing or failed components. Modified: projects/graid/8/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.c Tue Feb 8 12:49:01 2011 (r218436) +++ projects/graid/8/sys/geom/raid/g_raid.c Tue Feb 8 12:51:54 2011 (r218437) @@ -133,6 +133,8 @@ g_raid_node_event2str(int event) { switch (event) { + case G_RAID_NODE_E_WAKE: + return ("WAKE"); case G_RAID_NODE_E_START: return ("START"); default: @@ -187,10 +189,12 @@ g_raid_subdisk_state2str(int state) return ("FAILED"); case G_RAID_SUBDISK_S_NEW: return ("NEW"); - case G_RAID_SUBDISK_S_STALE: - return ("STALE"); case G_RAID_SUBDISK_S_REBUILD: return ("REBUILD"); + case G_RAID_SUBDISK_S_UNINITIALIZED: + return ("UNINITIALIZED"); + case G_RAID_SUBDISK_S_STALE: + return ("STALE"); case G_RAID_SUBDISK_S_RESYNC: return ("RESYNC"); case G_RAID_SUBDISK_S_ACTIVE: @@ -323,7 +327,7 @@ g_raid_volume_str2level(const char *str, return (0); } -static const char * +const char * g_raid_get_diskname(struct g_raid_disk *disk) { @@ -332,15 +336,6 @@ g_raid_get_diskname(struct g_raid_disk * return (disk->d_consumer->provider->name); } -static const char * -g_raid_get_subdiskname(struct g_raid_subdisk *subdisk) -{ - - if (subdisk->sd_disk == NULL) - return ("[unknown]"); - return (g_raid_get_diskname(subdisk->sd_disk)); -} - void g_raid_report_disk_state(struct g_raid_disk *disk) { @@ -372,7 +367,7 @@ g_raid_report_disk_state(struct g_raid_d } len = sizeof(s); g_io_getattr("GEOM::setstate", disk->d_consumer, &len, &s); - G_RAID_DEBUG(2, "Disk %s state reported as %d.", + G_RAID_DEBUG1(2, disk->d_softc, "Disk %s state reported as %d.", g_raid_get_diskname(disk), s); } @@ -380,7 +375,7 @@ void g_raid_change_disk_state(struct g_raid_disk *disk, int state) { - G_RAID_DEBUG(1, "Disk %s state changed from %s to %s.", + G_RAID_DEBUG1(0, disk->d_softc, "Disk %s state changed from %s to %s.", g_raid_get_diskname(disk), g_raid_disk_state2str(disk->d_state), g_raid_disk_state2str(state)); @@ -392,8 +387,10 @@ void g_raid_change_subdisk_state(struct g_raid_subdisk *sd, int state) { - G_RAID_DEBUG(1, "Subdisk %s state changed from %s to %s.", - g_raid_get_subdiskname(sd), + G_RAID_DEBUG1(0, sd->sd_softc, + "Subdisk %s:%d-%s state changed from %s to %s.", + sd->sd_volume->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]", g_raid_subdisk_state2str(sd->sd_state), g_raid_subdisk_state2str(state)); sd->sd_state = state; @@ -405,7 +402,8 @@ void g_raid_change_volume_state(struct g_raid_volume *vol, int state) { - G_RAID_DEBUG(1, "Volume %s state changed from %s to %s.", + G_RAID_DEBUG1(0, vol->v_softc, + "Volume %s state changed from %s to %s.", vol->v_name, g_raid_volume_state2str(vol->v_state), g_raid_volume_state2str(state)); @@ -432,7 +430,6 @@ g_raid_event_send(void *arg, int event, int error; ep = malloc(sizeof(*ep), M_RAID, M_WAITOK); - G_RAID_DEBUG(4, "%s: Sending event %p.", __func__, ep); if ((flags & G_RAID_EVENT_VOLUME) != 0) { sc = ((struct g_raid_volume *)arg)->v_softc; } else if ((flags & G_RAID_EVENT_DISK) != 0) { @@ -446,7 +443,7 @@ g_raid_event_send(void *arg, int event, ep->e_event = event; ep->e_flags = flags; ep->e_error = 0; - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc); + G_RAID_DEBUG1(4, sc, "Sending event %p. Waking up %p.", ep, sc); mtx_lock(&sc->sc_queue_mtx); TAILQ_INSERT_TAIL(&sc->sc_events, ep, e_next); mtx_unlock(&sc->sc_queue_mtx); @@ -456,7 +453,7 @@ g_raid_event_send(void *arg, int event, return (0); sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(4, "%s: Sleeping %p.", __func__, ep); + G_RAID_DEBUG1(4, sc, "Sleeping on %p.", ep); sx_xunlock(&sc->sc_lock); while ((ep->e_flags & G_RAID_EVENT_DONE) == 0) { mtx_lock(&sc->sc_queue_mtx); @@ -561,6 +558,30 @@ g_raid_nsubdisks(struct g_raid_volume *v return (n); } +/* + * Return the first subdisk in given state. + * If state is equal to -1, then the first connected disks. + */ +struct g_raid_subdisk * +g_raid_get_subdisk(struct g_raid_volume *vol, int state) +{ + struct g_raid_subdisk *sd; + struct g_raid_softc *sc; + u_int i; + + sc = vol->v_softc; + sx_assert(&sc->sc_lock, SX_LOCKED); + + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if ((state == -1 && + sd->sd_state != G_RAID_SUBDISK_S_NONE) || + sd->sd_state == state) + return (sd); + } + return (NULL); +} + static u_int g_raid_nrequests(struct g_raid_softc *sc, struct g_consumer *cp) { @@ -576,18 +597,32 @@ g_raid_nrequests(struct g_raid_softc *sc return (nreqs); } +u_int +g_raid_nopens(struct g_raid_softc *sc) +{ + struct g_raid_volume *vol; + u_int opens; + + opens = 0; + TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { + if (vol->v_provider_open != 0) + opens++; + } + return (opens); +} + static int g_raid_consumer_is_busy(struct g_raid_softc *sc, struct g_consumer *cp) { if (cp->index > 0) { - G_RAID_DEBUG(2, + G_RAID_DEBUG1(2, sc, "I/O requests for %s exist, can't destroy it now.", cp->provider->name); return (1); } if (g_raid_nrequests(sc, cp) > 0) { - G_RAID_DEBUG(2, + G_RAID_DEBUG1(2, sc, "I/O requests for %s in queue, can't destroy it now.", cp->provider->name); return (1); @@ -625,8 +660,6 @@ g_raid_kill_consumer(struct g_raid_softc if ((pp->geom->flags & G_GEOM_WITHER) == 0) retaste_wait = 1; } - G_RAID_DEBUG(2, "Access %s r%dw%de%d = %d", pp->name, -cp->acr, - -cp->acw, -cp->ace, 0); if (cp->acr > 0 || cp->acw > 0 || cp->ace > 0) g_access(cp, -cp->acr, -cp->acw, -cp->ace); if (retaste_wait) { @@ -684,8 +717,8 @@ g_raid_clean(struct g_raid_volume *vol, return (timeout); } vol->v_dirty = 0; - G_RAID_DEBUG(1, "Volume %s (node %s) marked as clean.", - vol->v_name, sc->sc_name); + G_RAID_DEBUG1(1, sc, "Volume %s marked as clean.", + vol->v_name); g_raid_write_metadata(sc, vol, NULL, NULL); return (0); } @@ -702,8 +735,8 @@ g_raid_dirty(struct g_raid_volume *vol) // if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) // return; vol->v_dirty = 1; - G_RAID_DEBUG(1, "Volume %s (node %s) marked as dirty.", - vol->v_name, sc->sc_name); + G_RAID_DEBUG1(1, sc, "Volume %s marked as dirty.", + vol->v_name); g_raid_write_metadata(sc, vol, NULL, NULL); } @@ -736,7 +769,7 @@ g_raid_tr_kerneldump_common(struct g_rai g_raid_start(&bp); while (!(bp.bio_flags & BIO_DONE)) { - G_RAID_DEBUG(4, "Poll..."); + G_RAID_DEBUG1(4, sc, "Poll..."); g_raid_poll(sc); DELAY(10); } @@ -752,14 +785,11 @@ g_raid_dump(void *arg, int error; vol = (struct g_raid_volume *)arg; - G_RAID_DEBUG(3, "Dumping at off %llu len %llu.", + G_RAID_DEBUG1(3, vol->v_softc, "Dumping at off %llu len %llu.", (long long unsigned)offset, (long long unsigned)length); error = G_RAID_TR_KERNELDUMP(vol->v_tr, virtual, physical, offset, length); - - G_RAID_DEBUG(3, "Dumping at off %llu len %llu done: %d.", - (long long unsigned)offset, (long long unsigned)length, error); return (error); } @@ -823,7 +853,7 @@ g_raid_start(struct bio *bp) bioq_disksort(&sc->sc_queue, bp); mtx_unlock(&sc->sc_queue_mtx); if (!dumping) { - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc); + G_RAID_DEBUG1(4, sc, "Waking up %p.", sc); wakeup(sc); } } @@ -933,13 +963,13 @@ g_raid_finish_with_locked_ranges(struct } if (lp->l_pending) { vol->v_pending_lock = 1; - G_RAID_DEBUG(4, + G_RAID_DEBUG1(4, vol->v_softc, "Deferred lock(%jd, %jd) has %d pending", (intmax_t)off, (intmax_t)(off + len), lp->l_pending); continue; } - G_RAID_DEBUG(4, + G_RAID_DEBUG1(4, vol->v_softc, "Deferred lock of %jd to %jd completed", (intmax_t)off, (intmax_t)(off + len)); G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg); @@ -996,11 +1026,11 @@ g_raid_lock_range(struct g_raid_volume * */ if (lp->l_pending > 0) { vol->v_pending_lock = 1; - G_RAID_DEBUG(4, "Locking range %jd to %jd deferred %d pend", + G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd deferred %d pend", (intmax_t)off, (intmax_t)(off+len), lp->l_pending); return (EBUSY); } - G_RAID_DEBUG(4, "Locking range %jd to %jd", + G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd", (intmax_t)off, (intmax_t)(off+len)); G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg); return (0); @@ -1024,7 +1054,7 @@ g_raid_unlock_range(struct g_raid_volume * when the worker thread runs. * XXX */ - G_RAID_DEBUG(4, "Unlocked %jd to %jd", + G_RAID_DEBUG1(4, sc, "Unlocked %jd to %jd", (intmax_t)lp->l_offset, (intmax_t)(lp->l_offset+lp->l_length)); mtx_lock(&sc->sc_queue_mtx); @@ -1136,8 +1166,7 @@ g_raid_handle_event(struct g_raid_softc g_raid_event_free(ep); } else { ep->e_flags |= G_RAID_EVENT_DONE; - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, - ep); + G_RAID_DEBUG1(4, sc, "Waking up %p.", ep); mtx_lock(&sc->sc_queue_mtx); wakeup(ep); mtx_unlock(&sc->sc_queue_mtx); @@ -1248,30 +1277,6 @@ out: sx_xunlock(&sc->sc_lock); } -#if 0 -static void -g_raid_update_idle(struct g_raid_softc *sc, struct g_raid_disk *disk) -{ - - sx_assert(&sc->sc_lock, SX_LOCKED); - - if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) - return; -#if 0 - if (!sc->sc_idle && (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) == 0) { - G_RAID_DEBUG(1, "Disk %s (device %s) marked as dirty.", - g_raid_get_diskname(disk), sc->sc_name); - disk->d_flags |= G_RAID_DISK_FLAG_DIRTY; - } else if (sc->sc_idle && - (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) != 0) { - G_RAID_DEBUG(1, "Disk %s (device %s) marked as clean.", - g_raid_get_diskname(disk), sc->sc_name); - disk->d_flags &= ~G_RAID_DISK_FLAG_DIRTY; - } -#endif -} -#endif - static void g_raid_launch_provider(struct g_raid_volume *vol) { @@ -1308,7 +1313,8 @@ g_raid_launch_provider(struct g_raid_vol vol->v_provider = pp; g_error_provider(pp, 0); g_topology_unlock(); - G_RAID_DEBUG(0, "Volume %s launched.", pp->name); + G_RAID_DEBUG1(0, sc, "Provider %s for volume %s created.", + pp->name, vol->v_name); } static void @@ -1333,8 +1339,8 @@ g_raid_destroy_provider(struct g_raid_vo g_io_deliver(bp, ENXIO); } mtx_unlock(&sc->sc_queue_mtx); - G_RAID_DEBUG(0, "Node %s: provider %s destroyed.", sc->sc_name, - pp->name); + G_RAID_DEBUG1(0, sc, "Provider %s for volume %s destroyed.", + pp->name, vol->v_name); g_wither_provider(pp, ENXIO); g_topology_unlock(); vol->v_provider = NULL; @@ -1351,7 +1357,7 @@ g_raid_update_volume(struct g_raid_volum sc = vol->v_softc; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for volume %s.", + G_RAID_DEBUG1(2, sc, "Event %s for volume %s.", g_raid_volume_event2str(event), vol->v_name); switch (event) { @@ -1372,7 +1378,7 @@ g_raid_update_volume(struct g_raid_volum /* Manage root mount release. */ if (vol->v_starting) { vol->v_starting = 0; - G_RAID_DEBUG(1, "root_mount_rel %p", vol->v_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_rel %p", vol->v_rootmount); root_mount_rel(vol->v_rootmount); vol->v_rootmount = NULL; } @@ -1394,9 +1400,10 @@ g_raid_update_subdisk(struct g_raid_subd vol = sd->sd_volume; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(3, "Event %s for subdisk %s.", + G_RAID_DEBUG1(2, sc, "Event %s for subdisk %s:%d-%s.", g_raid_subdisk_event2str(event), - g_raid_get_subdiskname(sd)); + vol->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]"); if (vol->v_tr) G_RAID_TR_EVENT(vol->v_tr, sd, event); @@ -1414,7 +1421,7 @@ g_raid_update_disk(struct g_raid_disk *d sc = disk->d_softc; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for disk %s.", + G_RAID_DEBUG1(2, sc, "Event %s for disk %s.", g_raid_disk_event2str(event), g_raid_get_diskname(disk)); @@ -1431,9 +1438,11 @@ g_raid_update_node(struct g_raid_softc * { sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for node %s.", - g_raid_node_event2str(event), sc->sc_name); + G_RAID_DEBUG1(2, sc, "Event %s for the array.", + g_raid_node_event2str(event)); + if (event == G_RAID_NODE_E_WAKE) + return (0); if (sc->sc_md) G_RAID_MD_EVENT(sc->sc_md, NULL, event); return (0); @@ -1442,19 +1451,19 @@ g_raid_update_node(struct g_raid_softc * static int g_raid_access(struct g_provider *pp, int acr, int acw, int ace) { - struct g_raid_volume *vol, *vol1; + struct g_raid_volume *vol; struct g_raid_softc *sc; int dcr, dcw, dce, opens, error = 0; g_topology_assert(); - G_RAID_DEBUG(2, "Access request for %s: r%dw%de%d.", pp->name, acr, - acw, ace); - sc = pp->geom->softc; vol = pp->private; KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name)); KASSERT(vol != NULL, ("NULL volume (provider=%s).", pp->name)); + G_RAID_DEBUG1(2, sc, "Access request for %s: r%dw%de%d.", pp->name, + acr, acw, ace); + dcr = pp->acr + acr; dcw = pp->acw + acw; dce = pp->ace + ace; @@ -1473,14 +1482,11 @@ g_raid_access(struct g_provider *pp, int if (sc->sc_stopping == G_RAID_DESTROY_DELAYED && vol->v_provider_open == 0) { /* Count open volumes. */ - opens = 0; - TAILQ_FOREACH(vol1, &sc->sc_volumes, v_next) { - if (vol1->v_provider_open != 0) - opens++; - } + opens = g_raid_nopens(sc); if (opens == 0) { sc->sc_stopping = G_RAID_DESTROY_HARD; - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + /* Wake up worker to make it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } } /* Handle open volume destruction. */ @@ -1501,7 +1507,7 @@ g_raid_create_node(struct g_class *mp, int error; g_topology_assert(); - G_RAID_DEBUG(1, "Creating node %s.", name); + G_RAID_DEBUG(1, "Creating array %s.", name); gp = g_new_geomf(mp, "%s", name); sc = malloc(sizeof(*sc), M_RAID, M_WAITOK | M_ZERO); @@ -1523,7 +1529,7 @@ g_raid_create_node(struct g_class *mp, error = kproc_create(g_raid_worker, sc, &sc->sc_worker, 0, 0, "g_raid %s", name); if (error != 0) { - G_RAID_DEBUG(1, "Cannot create kernel thread for %s.", name); + G_RAID_DEBUG(0, "Cannot create kernel thread for %s.", name); mtx_destroy(&sc->sc_queue_mtx); sx_destroy(&sc->sc_lock); g_destroy_geom(sc->sc_geom); @@ -1531,7 +1537,7 @@ g_raid_create_node(struct g_class *mp, return (NULL); } - G_RAID_DEBUG(1, "Node %s created.", name); + G_RAID_DEBUG1(0, sc, "Array %s created.", name); return (sc); } @@ -1541,7 +1547,7 @@ g_raid_create_volume(struct g_raid_softc struct g_raid_volume *vol, *vol1; int i; - G_RAID_DEBUG(1, "Creating volume %s.", name); + G_RAID_DEBUG1(1, sc, "Creating volume %s.", name); vol = malloc(sizeof(*vol), M_RAID, M_WAITOK | M_ZERO); vol->v_softc = sc; strlcpy(vol->v_name, name, G_RAID_MAX_VOLUMENAME); @@ -1572,7 +1578,7 @@ g_raid_create_volume(struct g_raid_softc /* Delay root mounting. */ vol->v_rootmount = root_mount_hold("GRAID"); - G_RAID_DEBUG(1, "root_mount_hold %p", vol->v_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_hold %p", vol->v_rootmount); vol->v_starting = 1; TAILQ_INSERT_TAIL(&sc->sc_volumes, vol, v_next); return (vol); @@ -1583,7 +1589,7 @@ g_raid_create_disk(struct g_raid_softc * { struct g_raid_disk *disk; - G_RAID_DEBUG(1, "Creating disk."); + G_RAID_DEBUG1(1, sc, "Creating disk."); disk = malloc(sizeof(*disk), M_RAID, M_WAITOK | M_ZERO); disk->d_softc = sc; disk->d_state = G_RAID_DISK_S_NONE; @@ -1598,9 +1604,11 @@ int g_raid_start_volume(struct g_raid_vo struct g_raid_tr_object *obj; int status; - G_RAID_DEBUG(2, "Starting volume %s.", vol->v_name); + G_RAID_DEBUG1(2, vol->v_softc, "Starting volume %s.", vol->v_name); LIST_FOREACH(class, &g_raid_tr_classes, trc_list) { - G_RAID_DEBUG(2, "Tasting %s for %s transformation.", vol->v_name, class->name); + G_RAID_DEBUG1(2, vol->v_softc, + "Tasting volume %s for %s transformation.", + vol->v_name, class->name); obj = (void *)kobj_create((kobj_class_t)class, M_RAID, M_WAITOK); obj->tro_class = class; @@ -1611,7 +1619,8 @@ int g_raid_start_volume(struct g_raid_vo kobj_delete((kobj_t)obj, M_RAID); } if (class == NULL) { - G_RAID_DEBUG(1, "No transformation module found for %s.", + G_RAID_DEBUG1(0, vol->v_softc, + "No transformation module found for %s.", vol->v_name); vol->v_tr = NULL; g_raid_change_volume_state(vol, G_RAID_VOLUME_S_UNSUPPORTED); @@ -1619,7 +1628,8 @@ int g_raid_start_volume(struct g_raid_vo G_RAID_EVENT_VOLUME); return (-1); } - G_RAID_DEBUG(2, "Transformation module %s chosen for %s.", + G_RAID_DEBUG1(2, vol->v_softc, + "Transformation module %s chosen for %s.", class->name, vol->v_name); vol->v_tr = obj; return (0); @@ -1651,14 +1661,14 @@ g_raid_destroy_node(struct g_raid_softc sc->sc_md = NULL; } if (sc->sc_geom != NULL) { - G_RAID_DEBUG(1, "Destroying node %s.", sc->sc_name); + G_RAID_DEBUG1(0, sc, "Array %s destroyed.", sc->sc_name); g_topology_lock(); sc->sc_geom->softc = NULL; g_wither_geom(sc->sc_geom, ENXIO); g_topology_unlock(); sc->sc_geom = NULL; } else - G_RAID_DEBUG(1, "Destroying node."); + G_RAID_DEBUG(1, "Array destroyed."); if (worker) { mtx_destroy(&sc->sc_queue_mtx); sx_xunlock(&sc->sc_lock); @@ -1670,7 +1680,7 @@ g_raid_destroy_node(struct g_raid_softc kproc_exit(0); } else { /* Wake up worker to make it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } return (0); } @@ -1683,7 +1693,7 @@ g_raid_destroy_volume(struct g_raid_volu int i; sc = vol->v_softc; - G_RAID_DEBUG(2, "Destroying volume %s.", vol->v_name); + G_RAID_DEBUG1(2, sc, "Destroying volume %s.", vol->v_name); vol->v_stopping = 1; if (vol->v_state != G_RAID_VOLUME_S_STOPPED) { if (vol->v_tr) { @@ -1696,13 +1706,13 @@ g_raid_destroy_volume(struct g_raid_volu return (EBUSY); if (vol->v_provider != NULL) return (EBUSY); + if (vol->v_provider_open != 0) + return (EBUSY); if (vol->v_tr) { G_RAID_TR_FREE(vol->v_tr); kobj_delete((kobj_t)vol->v_tr, M_RAID); vol->v_tr = NULL; } - if (vol->v_provider_open != 0) - return (EBUSY); if (vol->v_rootmount) root_mount_rel(vol->v_rootmount); g_topology_lock(); @@ -1715,10 +1725,12 @@ g_raid_destroy_volume(struct g_raid_volu continue; TAILQ_REMOVE(&disk->d_subdisks, &vol->v_subdisks[i], sd_next); } - G_RAID_DEBUG(2, "Volume %s destroyed.", vol->v_name); + G_RAID_DEBUG1(2, sc, "Volume %s destroyed.", vol->v_name); free(vol, M_RAID); - if (sc->sc_stopping == G_RAID_DESTROY_HARD) - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + if (sc->sc_stopping == G_RAID_DESTROY_HARD) { + /* Wake up worker to let it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); + } return (0); } @@ -1729,7 +1741,7 @@ g_raid_destroy_disk(struct g_raid_disk * struct g_raid_subdisk *sd, *tmp; sc = disk->d_softc; - G_RAID_DEBUG(2, "Destroying disk."); + G_RAID_DEBUG1(2, sc, "Destroying disk."); if (disk->d_consumer) { g_topology_lock(); g_raid_kill_consumer(sc, disk->d_consumer); @@ -1752,7 +1764,6 @@ g_raid_destroy_disk(struct g_raid_disk * int g_raid_destroy(struct g_raid_softc *sc, int how) { - struct g_raid_volume *vol; int opens; g_topology_assert_not(); @@ -1761,37 +1772,32 @@ g_raid_destroy(struct g_raid_softc *sc, sx_assert(&sc->sc_lock, SX_XLOCKED); /* Count open volumes. */ - opens = 0; - TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { - if (vol->v_provider_open != 0) - opens++; - } + opens = g_raid_nopens(sc); /* React on some opened volumes. */ if (opens > 0) { switch (how) { case G_RAID_DESTROY_SOFT: - G_RAID_DEBUG(1, - "%d volumes of %s are still open.", - opens, sc->sc_name); + G_RAID_DEBUG1(1, sc, + "%d volumes are still open.", + opens); return (EBUSY); case G_RAID_DESTROY_DELAYED: - G_RAID_DEBUG(1, - "Node %s will be destroyed on last close.", - sc->sc_name); + G_RAID_DEBUG1(1, sc, + "Array will be destroyed on last close."); sc->sc_stopping = G_RAID_DESTROY_DELAYED; return (EBUSY); case G_RAID_DESTROY_HARD: - G_RAID_DEBUG(1, - "%d volumes of %s are still open.", - opens, sc->sc_name); + G_RAID_DEBUG1(1, sc, + "%d volumes are still open.", + opens); } } /* Mark node for destruction. */ sc->sc_stopping = G_RAID_DESTROY_HARD; /* Wake up worker to let it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); /* Sleep until node destroyed. */ sx_sleep(&sc->sc_stopping, &sc->sc_lock, PRIBIO | PDROP, "r:destroy", 0); @@ -1817,7 +1823,7 @@ g_raid_taste(struct g_class *mp, struct g_topology_assert(); g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); - G_RAID_DEBUG(2, "Tasting %s.", pp->name); + G_RAID_DEBUG(2, "Tasting provider %s.", pp->name); gp = g_new_geomf(mp, "mirror:taste"); /* @@ -1829,7 +1835,8 @@ g_raid_taste(struct g_class *mp, struct geom = NULL; LIST_FOREACH(class, &g_raid_md_classes, mdc_list) { - G_RAID_DEBUG(2, "Tasting %s for %s metadata.", pp->name, class->name); + G_RAID_DEBUG(2, "Tasting provider %s for %s metadata.", + pp->name, class->name); obj = (void *)kobj_create((kobj_class_t)class, M_RAID, M_WAITOK); obj->mdo_class = class; @@ -1843,7 +1850,7 @@ g_raid_taste(struct g_class *mp, struct g_detach(cp); g_destroy_consumer(cp); g_destroy_geom(gp); - G_RAID_DEBUG(2, "Tasting %s done.", pp->name); + G_RAID_DEBUG(2, "Tasting provider %s done.", pp->name); return (geom); } @@ -1854,13 +1861,13 @@ g_raid_create_node_format(const char *fo struct g_raid_md_object *obj; int status; - G_RAID_DEBUG(2, "Creating node for %s metadata.", format); + G_RAID_DEBUG(2, "Creating array for %s metadata.", format); LIST_FOREACH(class, &g_raid_md_classes, mdc_list) { if (strcasecmp(class->name, format) == 0) break; } if (class == NULL) { - G_RAID_DEBUG(2, "Creating node for %s metadata.", format); + G_RAID_DEBUG(1, "No support for %s metadata.", format); return (G_RAID_MD_TASTE_FAIL); } obj = (void *)kobj_create((kobj_class_t)class, M_RAID, @@ -1894,6 +1901,8 @@ void g_raid_write_metadata(struct g_raid struct g_raid_subdisk *sd, struct g_raid_disk *disk) { + if (sc->sc_stopping == G_RAID_DESTROY_HARD) + return; if (sc->sc_md) G_RAID_MD_WRITE(sc->sc_md, vol, sd, disk); } Modified: projects/graid/8/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.h Tue Feb 8 12:49:01 2011 (r218436) +++ projects/graid/8/sys/geom/raid/g_raid.h Tue Feb 8 12:51:54 2011 (r218437) @@ -64,6 +64,17 @@ extern struct g_class g_raid_class; } \ } \ } while (0) +#define G_RAID_DEBUG1(lvl, sc, fmt, ...) do { \ + if (g_raid_debug >= (lvl)) { \ + if (g_raid_debug > 0) { \ + printf("GEOM_RAID[%u]: %s: " fmt "\n", \ + lvl, (sc)->sc_name, ## __VA_ARGS__); \ + } else { \ + printf("GEOM_RAID: %s: " fmt "\n", \ + (sc)->sc_name, ## __VA_ARGS__); \ + } \ + } \ +} while (0) #define G_RAID_LOGREQ(lvl, bp, fmt, ...) do { \ if (g_raid_debug >= (lvl)) { \ if (g_raid_debug > 0) { \ @@ -240,6 +251,7 @@ struct g_raid_volume { LIST_ENTRY(g_raid_volume) v_global_next; /* Global list entry. */ }; +#define G_RAID_NODE_E_WAKE 0x00 #define G_RAID_NODE_E_START 0x01 struct g_raid_softc { @@ -327,6 +339,7 @@ int g_raid_create_node_format(const char struct g_raid_volume * g_raid_create_volume(struct g_raid_softc *sc, const char *name); struct g_raid_disk * g_raid_create_disk(struct g_raid_softc *sc); +const char * g_raid_get_diskname(struct g_raid_disk *disk); int g_raid_start_volume(struct g_raid_volume *vol); @@ -356,6 +369,9 @@ int g_raid_tr_kerneldump_common(struct g u_int g_raid_ndisks(struct g_raid_softc *sc, int state); u_int g_raid_nsubdisks(struct g_raid_volume *vol, int state); +u_int g_raid_nopens(struct g_raid_softc *sc); +struct g_raid_subdisk * g_raid_get_subdisk(struct g_raid_volume *vol, + int state); #define G_RAID_DESTROY_SOFT 0 #define G_RAID_DESTROY_DELAYED 1 #define G_RAID_DESTROY_HARD 2 Modified: projects/graid/8/sys/geom/raid/g_raid_ctl.c ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid_ctl.c Tue Feb 8 12:49:01 2011 (r218436) +++ projects/graid/8/sys/geom/raid/g_raid_ctl.c Tue Feb 8 12:51:54 2011 (r218437) @@ -90,7 +90,7 @@ g_raid_ctl_label(struct gctl_req *req, s } crstatus = g_raid_create_node_format(format, &geom); if (crstatus == G_RAID_MD_TASTE_FAIL) { - gctl_error(req, "Failed to create node with format '%s'.", + gctl_error(req, "Failed to create array with format '%s'.", format); return; } @@ -132,12 +132,12 @@ g_raid_ctl_stop(struct gctl_req *req, st } nodename = gctl_get_asciiparam(req, "arg0"); if (nodename == NULL) { - gctl_error(req, "No node name recieved."); + gctl_error(req, "No array name recieved."); return; } sc = g_raid_find_node(mp, nodename); if (sc == NULL) { - gctl_error(req, "Node '%s' not found.", nodename); + gctl_error(req, "Array '%s' not found.", nodename); return; } force = gctl_get_paraml(req, "force", sizeof(*force)); @@ -172,12 +172,12 @@ g_raid_ctl_other(struct gctl_req *req, s } nodename = gctl_get_asciiparam(req, "arg0"); if (nodename == NULL) { - gctl_error(req, "No node name recieved."); + gctl_error(req, "No array name recieved."); return; } sc = g_raid_find_node(mp, nodename); if (sc == NULL) { - gctl_error(req, "Node '%s' not found.", nodename); + gctl_error(req, "Array '%s' not found.", nodename); return; } g_topology_unlock(); Modified: projects/graid/8/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/8/sys/geom/raid/md_intel.c Tue Feb 8 12:49:01 2011 (r218436) +++ projects/graid/8/sys/geom/raid/md_intel.c Tue Feb 8 12:51:54 2011 (r218437) @@ -74,6 +74,19 @@ struct intel_raid_vol { uint8_t name[16]; u_int64_t total_sectors __packed; uint32_t state; +#define INTEL_ST_BOOTABLE 0x00000001 +#define INTEL_ST_BOOT_DEVICE 0x00000002 +#define INTEL_ST_READ_COALESCING 0x00000004 +#define INTEL_ST_WRITE_COALESCING 0x00000008 +#define INTEL_ST_LAST_SHUTDOWN_DIRTY 0x00000010 +#define INTEL_ST_HIDDEN_AT_BOOT 0x00000020 +#define INTEL_ST_CURRENTLY_HIDDEN 0x00000040 +#define INTEL_ST_VERIFY_AND_FIX 0x00000080 +#define INTEL_ST_MAP_STATE_UNINIT 0x00000100 +#define INTEL_ST_NO_AUTO_RECOVERY 0x00000200 +#define INTEL_ST_CLONE_N_GO 0x00000400 +#define INTEL_ST_CLONE_MAN_SYNC 0x00000800 +#define INTEL_ST_CNG_MASTER_DISK_NUM 0x00001000 uint32_t reserved; uint8_t migr_priority; uint8_t num_sub_vols; @@ -330,8 +343,10 @@ intel_meta_read(struct g_consumer *cp) { struct g_provider *pp; struct intel_raid_conf *meta; + struct intel_raid_vol *mvol; + struct intel_raid_map *mmap; char *buf; - int error, i, left; + int error, i, j, k, left, size; uint32_t checksum, *ptr; pp = cp->provider; @@ -352,14 +367,15 @@ intel_meta_read(struct g_consumer *cp) g_free(buf); return (NULL); } - if (meta->config_size > 65536) { - G_RAID_DEBUG(1, "Intel metadata size looks too big: %d", + if (meta->config_size > 65536 || + meta->config_size < sizeof(struct intel_raid_conf)) { + G_RAID_DEBUG(1, "Intel metadata size looks wrong: %d", meta->config_size); g_free(buf); return (NULL); } meta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK); - memcpy(meta, buf, pp->sectorsize); + memcpy(meta, buf, min(meta->config_size, pp->sectorsize)); g_free(buf); /* Read all the rest, if needed. */ @@ -392,6 +408,68 @@ intel_meta_read(struct g_consumer *cp) return (NULL); } + /* Validate metadata size. */ + size = sizeof(struct intel_raid_conf) + + sizeof(struct intel_raid_disk) * (meta->total_disks - 1) + + sizeof(struct intel_raid_vol) * meta->total_volumes; + if (size > meta->config_size) { +badsize: + G_RAID_DEBUG(1, "Intel metadata size incorrect %d < %d", + meta->config_size, size); + free(meta, M_MD_INTEL); + return (NULL); + } + for (i = 0; i < meta->total_volumes; i++) { + mvol = intel_get_volume(meta, i); + mmap = intel_get_map(mvol, 0); + size += 4 * (mmap->total_disks - 1); + if (size > meta->config_size) + goto badsize; + if (mvol->migr_state) { + size += sizeof(struct intel_raid_map); + if (size > meta->config_size) + goto badsize; + mmap = intel_get_map(mvol, 1); + size += 4 * (mmap->total_disks - 1); + if (size > meta->config_size) + goto badsize; + } + } + + /* Validate disk indexes. */ + for (i = 0; i < meta->total_volumes; i++) { + mvol = intel_get_volume(meta, i); + for (j = 0; j < (mvol->migr_state ? 2 : 1); j++) { + mmap = intel_get_map(mvol, j); + for (k = 0; k < mmap->total_disks; k++) { + if ((mmap->disk_idx[k] & INTEL_DI_IDX) > + meta->total_disks) { + G_RAID_DEBUG(1, "Intel metadata disk" + " index %d too big (>%d)", + mmap->disk_idx[k] & INTEL_DI_IDX, + meta->total_disks); + free(meta, M_MD_INTEL); + return (NULL); + } + } + } + } + + /* Validate migration types. */ + for (i = 0; i < meta->total_volumes; i++) { + mvol = intel_get_volume(meta, i); + if (mvol->migr_state && + mvol->migr_type != INTEL_MT_INIT && + mvol->migr_type != INTEL_MT_REBUILD && + mvol->migr_type != INTEL_MT_VERIFY && + mvol->migr_type != INTEL_MT_REPAIR) { + G_RAID_DEBUG(1, "Intel metadata has unsupported" + " migration type %d", mvol->migr_type); + free(meta, M_MD_INTEL); + return (NULL); + } + } + return (meta); } @@ -525,7 +603,7 @@ g_raid_md_intel_start_disk(struct g_raid /* Find disk position in metadata by it's serial. */ disk_pos = intel_meta_find_disk(meta, pd->pd_disk_meta.serial); if (disk_pos < 0) { - G_RAID_DEBUG(1, "Unknown, probably new or stale disk"); + G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk"); /* Failed stale disk is useless for us. */ if (pd->pd_disk_meta.flags & INTEL_F_FAILED) { g_raid_change_disk_state(disk, G_RAID_DISK_S_STALE_FAILED); @@ -546,7 +624,7 @@ g_raid_md_intel_start_disk(struct g_raid TAILQ_FOREACH(sd, &tmpdisk->d_subdisks, sd_next) { if (sd->sd_offset + sd->sd_size + 4096 > (off_t)pd->pd_disk_meta.sectors * 512) { - G_RAID_DEBUG(1, + G_RAID_DEBUG1(1, sc, "Disk too small (%llu < %llu)", ((unsigned long long) pd->pd_disk_meta.sectors) * 512, @@ -586,7 +664,7 @@ nofit: if (olddisk == NULL) panic("No disk at position %d!", disk_pos); if (olddisk->d_state != G_RAID_DISK_S_OFFLINE) { - G_RAID_DEBUG(1, "More then one disk for pos %d", *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 13:04:51 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A7E101065675; Tue, 8 Feb 2011 13:04:51 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 961038FC12; Tue, 8 Feb 2011 13:04:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18D4phi046799; Tue, 8 Feb 2011 13:04:51 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18D4pMi046791; Tue, 8 Feb 2011 13:04:51 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081304.p18D4pMi046791@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 13:04:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218439 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac sbin/geom/class/raid share/misc sys/geom/raid tools/tools/nanobsd usr.sbin usr.sbin/bs... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 13:04:51 -0000 Author: mav Date: Tue Feb 8 13:04:51 2011 New Revision: 218439 URL: http://svn.freebsd.org/changeset/base/218439 Log: MFH r218321, r218322, r218336, r218364, r218367, r218380, r218381, r218394, r218399, r218401, r218404, r218405, r218406, r218407, r218408, r218418, r218435. Modified: projects/graid/7/sbin/geom/class/raid/geom_raid.c projects/graid/7/sbin/geom/class/raid/graid.8 projects/graid/7/sys/geom/raid/g_raid.c projects/graid/7/sys/geom/raid/g_raid.h projects/graid/7/sys/geom/raid/g_raid_ctl.c projects/graid/7/sys/geom/raid/md_intel.c projects/graid/7/sys/geom/raid/tr_raid0.c projects/graid/7/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/7/ (props changed) projects/graid/7/COPYRIGHT (props changed) projects/graid/7/Makefile (props changed) projects/graid/7/Makefile.inc1 (props changed) projects/graid/7/ObsoleteFiles.inc (props changed) projects/graid/7/UPDATING (props changed) projects/graid/7/bin/ (props changed) projects/graid/7/bin/chflags/ (props changed) projects/graid/7/bin/chio/ (props changed) projects/graid/7/bin/cp/ (props changed) projects/graid/7/bin/csh/ (props changed) projects/graid/7/bin/dd/ (props changed) projects/graid/7/bin/df/ (props changed) projects/graid/7/bin/echo/ (props changed) projects/graid/7/bin/expr/ (props changed) projects/graid/7/bin/kill/ (props changed) projects/graid/7/bin/ln/ (props changed) projects/graid/7/bin/ls/ (props changed) projects/graid/7/bin/pax/ (props changed) projects/graid/7/bin/ps/ (props changed) projects/graid/7/bin/rm/ (props changed) projects/graid/7/bin/sh/ (props changed) projects/graid/7/bin/test/ (props changed) projects/graid/7/cddl/contrib/opensolaris/ (props changed) projects/graid/7/cddl/lib/libzpool/ (props changed) projects/graid/7/contrib/bind9/ (props changed) projects/graid/7/contrib/binutils/ (props changed) projects/graid/7/contrib/bsnmp/ (props changed) projects/graid/7/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/7/contrib/cpio/ (props changed) projects/graid/7/contrib/csup/ (props changed) projects/graid/7/contrib/expat/ (props changed) projects/graid/7/contrib/gcc/ (props changed) projects/graid/7/contrib/gdb/ (props changed) projects/graid/7/contrib/gdtoa/ (props changed) projects/graid/7/contrib/groff/ (props changed) projects/graid/7/contrib/ipfilter/ (props changed) projects/graid/7/contrib/less/ (props changed) projects/graid/7/contrib/libpcap/ (props changed) projects/graid/7/contrib/ncurses/ (props changed) projects/graid/7/contrib/netcat/ (props changed) projects/graid/7/contrib/ntp/ (props changed) projects/graid/7/contrib/nvi/ (props changed) projects/graid/7/contrib/pf/ (props changed) projects/graid/7/contrib/sendmail/ (props changed) projects/graid/7/contrib/smbfs/ (props changed) projects/graid/7/contrib/tcp_wrappers/ (props changed) projects/graid/7/contrib/tcsh/ (props changed) projects/graid/7/contrib/telnet/ (props changed) projects/graid/7/contrib/top/ (props changed) projects/graid/7/contrib/traceroute/ (props changed) projects/graid/7/contrib/wpa_supplicant/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.conf (props changed) projects/graid/7/crypto/openssh/ (props changed) projects/graid/7/crypto/openssl/ (props changed) projects/graid/7/etc/ (props changed) projects/graid/7/games/factor/ (props changed) projects/graid/7/games/fortune/ (props changed) projects/graid/7/games/grdc/ (props changed) projects/graid/7/gnu/ (props changed) projects/graid/7/gnu/lib/libstdc++/ (props changed) projects/graid/7/gnu/usr.bin/ (props changed) projects/graid/7/gnu/usr.bin/cc/ (props changed) projects/graid/7/gnu/usr.bin/cpio/ (props changed) projects/graid/7/gnu/usr.bin/cvs/ (props changed) projects/graid/7/gnu/usr.bin/gdb/ (props changed) projects/graid/7/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/7/gnu/usr.bin/grep/ (props changed) projects/graid/7/gnu/usr.bin/groff/ (props changed) projects/graid/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/graid/7/gnu/usr.bin/man/ (props changed) projects/graid/7/gnu/usr.bin/sort/ (props changed) projects/graid/7/include/ (props changed) projects/graid/7/kerberos5/ (props changed) projects/graid/7/lib/ (props changed) projects/graid/7/lib/bind/ (props changed) projects/graid/7/lib/csu/ (props changed) projects/graid/7/lib/libarchive/ (props changed) projects/graid/7/lib/libbluetooth/ (props changed) projects/graid/7/lib/libc/ (props changed) projects/graid/7/lib/libc/stdtime/ (props changed) projects/graid/7/lib/libc_r/ (props changed) projects/graid/7/lib/libcam/ (props changed) projects/graid/7/lib/libdisk/ (props changed) projects/graid/7/lib/libdwarf/ (props changed) projects/graid/7/lib/libelf/ (props changed) projects/graid/7/lib/libexpat/ (props changed) projects/graid/7/lib/libfetch/ (props changed) projects/graid/7/lib/libftpio/ (props changed) projects/graid/7/lib/libgeom/ (props changed) projects/graid/7/lib/libgssapi/ (props changed) projects/graid/7/lib/libkse/ (props changed) projects/graid/7/lib/libkvm/ (props changed) projects/graid/7/lib/libmagic/ (props changed) projects/graid/7/lib/libmemstat/ (props changed) projects/graid/7/lib/libpmc/ (props changed) projects/graid/7/lib/libradius/ (props changed) projects/graid/7/lib/libsm/ (props changed) projects/graid/7/lib/libstand/ (props changed) projects/graid/7/lib/libthr/ (props changed) projects/graid/7/lib/libthread_db/ (props changed) projects/graid/7/lib/libufs/ (props changed) projects/graid/7/lib/libutil/ (props changed) projects/graid/7/lib/msun/ (props changed) projects/graid/7/libexec/ (props changed) projects/graid/7/libexec/ftpd/ (props changed) projects/graid/7/libexec/rpc.rquotad/ (props changed) projects/graid/7/libexec/rpc.rstatd/ (props changed) projects/graid/7/libexec/rtld-elf/ (props changed) projects/graid/7/libexec/tftpd/ (props changed) projects/graid/7/release/ (props changed) projects/graid/7/release/doc/ (props changed) projects/graid/7/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/7/release/picobsd/tinyware/login/ (props changed) projects/graid/7/rescue/ (props changed) projects/graid/7/sbin/ (props changed) projects/graid/7/sbin/atacontrol/ (props changed) projects/graid/7/sbin/bsdlabel/ (props changed) projects/graid/7/sbin/clri/ (props changed) projects/graid/7/sbin/ddb/ (props changed) projects/graid/7/sbin/devd/ (props changed) projects/graid/7/sbin/devfs/ (props changed) projects/graid/7/sbin/dhclient/ (props changed) projects/graid/7/sbin/dumpfs/ (props changed) projects/graid/7/sbin/fdisk/ (props changed) projects/graid/7/sbin/fdisk_pc98/ (props changed) projects/graid/7/sbin/fsck/ (props changed) projects/graid/7/sbin/fsck_ffs/ (props changed) projects/graid/7/sbin/fsck_msdosfs/ (props changed) projects/graid/7/sbin/geom/ (props changed) projects/graid/7/sbin/geom/class/label/ (props changed) projects/graid/7/sbin/geom/class/part/ (props changed) projects/graid/7/sbin/geom/class/stripe/ (props changed) projects/graid/7/sbin/geom/misc/ (props changed) projects/graid/7/sbin/growfs/ (props changed) projects/graid/7/sbin/ifconfig/ (props changed) projects/graid/7/sbin/init/ (props changed) projects/graid/7/sbin/ipf/ (props changed) projects/graid/7/sbin/ipfw/ (props changed) projects/graid/7/sbin/md5/ (props changed) projects/graid/7/sbin/mdconfig/ (props changed) projects/graid/7/sbin/mksnap_ffs/ (props changed) projects/graid/7/sbin/mount/ (props changed) projects/graid/7/sbin/mount_msdosfs/ (props changed) projects/graid/7/sbin/natd/ (props changed) projects/graid/7/sbin/newfs/ (props changed) projects/graid/7/sbin/newfs_msdos/ (props changed) projects/graid/7/sbin/ping6/ (props changed) projects/graid/7/sbin/reboot/ (props changed) projects/graid/7/sbin/restore/ (props changed) projects/graid/7/sbin/route/ (props changed) projects/graid/7/sbin/savecore/ (props changed) projects/graid/7/sbin/sconfig/ (props changed) projects/graid/7/sbin/shutdown/ (props changed) projects/graid/7/sbin/sysctl/ (props changed) projects/graid/7/sbin/tunefs/ (props changed) projects/graid/7/secure/lib/libcrypto/ (props changed) projects/graid/7/secure/lib/libssh/ (props changed) projects/graid/7/secure/lib/libssl/ (props changed) projects/graid/7/secure/libexec/sftp-server/ (props changed) projects/graid/7/secure/usr.bin/bdes/ (props changed) projects/graid/7/secure/usr.bin/openssl/ (props changed) projects/graid/7/secure/usr.bin/ssh/ (props changed) projects/graid/7/secure/usr.sbin/sshd/ (props changed) projects/graid/7/share/ (props changed) projects/graid/7/share/colldef/ (props changed) projects/graid/7/share/dict/ (props changed) projects/graid/7/share/doc/bind9/ (props changed) projects/graid/7/share/doc/papers/jail/ (props changed) projects/graid/7/share/doc/smm/01.setup/ (props changed) projects/graid/7/share/examples/ (props changed) projects/graid/7/share/man/ (props changed) projects/graid/7/share/man/man1/ (props changed) projects/graid/7/share/man/man3/ (props changed) projects/graid/7/share/man/man4/ (props changed) projects/graid/7/share/man/man5/ (props changed) projects/graid/7/share/man/man7/ (props changed) projects/graid/7/share/man/man8/ (props changed) projects/graid/7/share/man/man9/ (props changed) projects/graid/7/share/misc/ (props changed) projects/graid/7/share/misc/iso639 (props changed) projects/graid/7/share/misc/pci_vendors (props changed) projects/graid/7/share/mk/ (props changed) projects/graid/7/share/mklocale/ (props changed) projects/graid/7/share/monetdef/ (props changed) projects/graid/7/share/msgdef/ (props changed) projects/graid/7/share/numericdef/ (props changed) projects/graid/7/share/sendmail/ (props changed) projects/graid/7/share/syscons/ (props changed) projects/graid/7/share/syscons/keymaps/ (props changed) projects/graid/7/share/termcap/ (props changed) projects/graid/7/share/timedef/ (props changed) projects/graid/7/share/zoneinfo/ (props changed) projects/graid/7/sys/ (props changed) projects/graid/7/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/7/sys/contrib/dev/acpica/ (props changed) projects/graid/7/sys/contrib/pf/ (props changed) projects/graid/7/tools/ (props changed) projects/graid/7/tools/build/ (props changed) projects/graid/7/tools/build/options/ (props changed) projects/graid/7/tools/debugscripts/ (props changed) projects/graid/7/tools/regression/acct/ (props changed) projects/graid/7/tools/regression/atm/ (props changed) projects/graid/7/tools/regression/bin/ (props changed) projects/graid/7/tools/regression/bin/date/ (props changed) projects/graid/7/tools/regression/bin/sh/ (props changed) projects/graid/7/tools/regression/file/ (props changed) projects/graid/7/tools/regression/file/flock/ (props changed) projects/graid/7/tools/regression/lib/libc/ (props changed) projects/graid/7/tools/regression/usr.bin/ (props changed) projects/graid/7/tools/regression/usr.bin/jot/ (props changed) projects/graid/7/tools/regression/usr.bin/tr/ (props changed) projects/graid/7/tools/sched/ (props changed) projects/graid/7/tools/test/ (props changed) projects/graid/7/tools/tools/ (props changed) projects/graid/7/tools/tools/aac/ (props changed) projects/graid/7/tools/tools/crypto/ (props changed) projects/graid/7/tools/tools/editing/ (props changed) projects/graid/7/tools/tools/nanobsd/ (props changed) projects/graid/7/tools/tools/nanobsd/FlashDevice.sub (props changed) projects/graid/7/tools/tools/nanobsd/nanobsd.sh (props changed) projects/graid/7/tools/tools/netrate/ (props changed) projects/graid/7/tools/tools/umastat/ (props changed) projects/graid/7/tools/tools/usb/ (props changed) projects/graid/7/usr.bin/ (props changed) projects/graid/7/usr.bin/basename/ (props changed) projects/graid/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) projects/graid/7/usr.bin/calendar/ (props changed) projects/graid/7/usr.bin/catman/ (props changed) projects/graid/7/usr.bin/cksum/ (props changed) projects/graid/7/usr.bin/comm/ (props changed) projects/graid/7/usr.bin/cpuset/ (props changed) projects/graid/7/usr.bin/csup/ (props changed) projects/graid/7/usr.bin/dirname/ (props changed) projects/graid/7/usr.bin/du/ (props changed) projects/graid/7/usr.bin/fetch/ (props changed) projects/graid/7/usr.bin/file/ (props changed) projects/graid/7/usr.bin/find/ (props changed) projects/graid/7/usr.bin/finger/ (props changed) projects/graid/7/usr.bin/fold/ (props changed) projects/graid/7/usr.bin/fstat/ (props changed) projects/graid/7/usr.bin/gcore/ (props changed) projects/graid/7/usr.bin/gprof/ (props changed) projects/graid/7/usr.bin/gzip/ (props changed) projects/graid/7/usr.bin/hexdump/ (props changed) projects/graid/7/usr.bin/id/ (props changed) projects/graid/7/usr.bin/indent/ (props changed) projects/graid/7/usr.bin/ipcrm/ (props changed) projects/graid/7/usr.bin/ipcs/ (props changed) projects/graid/7/usr.bin/jot/ (props changed) projects/graid/7/usr.bin/kdump/ (props changed) projects/graid/7/usr.bin/ktrace/ (props changed) projects/graid/7/usr.bin/ldd/ (props changed) projects/graid/7/usr.bin/less/ (props changed) projects/graid/7/usr.bin/locate/ (props changed) projects/graid/7/usr.bin/lockf/ (props changed) projects/graid/7/usr.bin/logger/ (props changed) projects/graid/7/usr.bin/make/ (props changed) projects/graid/7/usr.bin/ncal/ (props changed) projects/graid/7/usr.bin/netstat/ (props changed) projects/graid/7/usr.bin/newgrp/ (props changed) projects/graid/7/usr.bin/nsupdate/ (props changed) projects/graid/7/usr.bin/pkill/ (props changed) projects/graid/7/usr.bin/procstat/ (props changed) projects/graid/7/usr.bin/quota/ (props changed) projects/graid/7/usr.bin/rpcgen/ (props changed) projects/graid/7/usr.bin/ruptime/ (props changed) projects/graid/7/usr.bin/script/ (props changed) projects/graid/7/usr.bin/sed/ (props changed) projects/graid/7/usr.bin/shar/ (props changed) projects/graid/7/usr.bin/sockstat/ (props changed) projects/graid/7/usr.bin/stat/ (props changed) projects/graid/7/usr.bin/su/ (props changed) projects/graid/7/usr.bin/systat/ (props changed) projects/graid/7/usr.bin/tail/ (props changed) projects/graid/7/usr.bin/tar/ (props changed) projects/graid/7/usr.bin/tftp/ (props changed) projects/graid/7/usr.bin/tip/ (props changed) projects/graid/7/usr.bin/top/ (props changed) projects/graid/7/usr.bin/truncate/ (props changed) projects/graid/7/usr.bin/truss/ (props changed) projects/graid/7/usr.bin/uname/ (props changed) projects/graid/7/usr.bin/unifdef/ (props changed) projects/graid/7/usr.bin/units/ (props changed) projects/graid/7/usr.bin/uudecode/ (props changed) projects/graid/7/usr.bin/vmstat/ (props changed) projects/graid/7/usr.bin/w/ (props changed) projects/graid/7/usr.bin/wc/ (props changed) projects/graid/7/usr.bin/whereis/ (props changed) projects/graid/7/usr.bin/whois/ (props changed) projects/graid/7/usr.bin/window/ (props changed) projects/graid/7/usr.bin/xargs/ (props changed) projects/graid/7/usr.bin/ypcat/ (props changed) projects/graid/7/usr.bin/ypmatch/ (props changed) projects/graid/7/usr.bin/ypwhich/ (props changed) projects/graid/7/usr.sbin/ (props changed) projects/graid/7/usr.sbin/Makefile (props changed) projects/graid/7/usr.sbin/acpi/ (props changed) projects/graid/7/usr.sbin/adduser/ (props changed) projects/graid/7/usr.sbin/arp/ (props changed) projects/graid/7/usr.sbin/bluetooth/ (props changed) projects/graid/7/usr.sbin/bluetooth/btpand/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcsecd/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcseriald/ (props changed) projects/graid/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) projects/graid/7/usr.sbin/bluetooth/sdpd/ (props changed) projects/graid/7/usr.sbin/boot0cfg/ (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/graid/7/usr.sbin/burncd/ (props changed) projects/graid/7/usr.sbin/cdcontrol/ (props changed) projects/graid/7/usr.sbin/chown/ (props changed) projects/graid/7/usr.sbin/chroot/ (props changed) projects/graid/7/usr.sbin/config/ (props changed) projects/graid/7/usr.sbin/config/SMM.doc/ (props changed) projects/graid/7/usr.sbin/cpucontrol/ (props changed) projects/graid/7/usr.sbin/crashinfo/ (props changed) projects/graid/7/usr.sbin/cron/ (props changed) projects/graid/7/usr.sbin/cron/cron/ (props changed) projects/graid/7/usr.sbin/crunch/ (props changed) projects/graid/7/usr.sbin/cxgbtool/ (props changed) projects/graid/7/usr.sbin/eeprom/ (props changed) projects/graid/7/usr.sbin/extattr/ (props changed) projects/graid/7/usr.sbin/faithd/ (props changed) projects/graid/7/usr.sbin/fdcontrol/ (props changed) projects/graid/7/usr.sbin/fdformat/ (props changed) projects/graid/7/usr.sbin/fdread/ (props changed) projects/graid/7/usr.sbin/fdwrite/ (props changed) projects/graid/7/usr.sbin/fifolog/ (props changed) projects/graid/7/usr.sbin/freebsd-update/ (props changed) projects/graid/7/usr.sbin/fwcontrol/ (props changed) projects/graid/7/usr.sbin/gstat/ (props changed) projects/graid/7/usr.sbin/iostat/ (props changed) projects/graid/7/usr.sbin/jail/ (props changed) projects/graid/7/usr.sbin/jexec/ (props changed) projects/graid/7/usr.sbin/jls/ (props changed) projects/graid/7/usr.sbin/lpr/ (props changed) projects/graid/7/usr.sbin/mailwrapper/ (props changed) projects/graid/7/usr.sbin/makefs/ (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/7/usr.sbin/makefs/getid.c (props changed) projects/graid/7/usr.sbin/mergemaster/ (props changed) projects/graid/7/usr.sbin/mfiutil/ (props changed) projects/graid/7/usr.sbin/mountd/ (props changed) projects/graid/7/usr.sbin/mptutil/ (props changed) projects/graid/7/usr.sbin/mtree/ (props changed) projects/graid/7/usr.sbin/ndiscvt/ (props changed) projects/graid/7/usr.sbin/ndp/ (props changed) projects/graid/7/usr.sbin/newsyslog/ (props changed) projects/graid/7/usr.sbin/nscd/ (props changed) projects/graid/7/usr.sbin/ntp/ (props changed) projects/graid/7/usr.sbin/pciconf/ (props changed) projects/graid/7/usr.sbin/pkg_install/ (props changed) projects/graid/7/usr.sbin/pmccontrol/ (props changed) projects/graid/7/usr.sbin/pmcstat/ (props changed) projects/graid/7/usr.sbin/portsnap/ (props changed) projects/graid/7/usr.sbin/powerd/ (props changed) projects/graid/7/usr.sbin/ppp/ (props changed) projects/graid/7/usr.sbin/pstat/ (props changed) projects/graid/7/usr.sbin/pw/ (props changed) projects/graid/7/usr.sbin/pwd_mkdb/ (props changed) projects/graid/7/usr.sbin/rpc.lockd/ (props changed) projects/graid/7/usr.sbin/rpc.statd/ (props changed) projects/graid/7/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/7/usr.sbin/rtadvd/ (props changed) projects/graid/7/usr.sbin/rtsold/ (props changed) projects/graid/7/usr.sbin/sade/ (props changed) projects/graid/7/usr.sbin/service/ (props changed) projects/graid/7/usr.sbin/setfib/ (props changed) projects/graid/7/usr.sbin/sysinstall/ (props changed) projects/graid/7/usr.sbin/syslogd/ (props changed) projects/graid/7/usr.sbin/traceroute/ (props changed) projects/graid/7/usr.sbin/traceroute6/ (props changed) projects/graid/7/usr.sbin/tzsetup/ (props changed) projects/graid/7/usr.sbin/ugidfw/ (props changed) projects/graid/7/usr.sbin/wpa/wpa_supplicant/ (props changed) projects/graid/7/usr.sbin/ypserv/ (props changed) projects/graid/7/usr.sbin/zic/ (props changed) Modified: projects/graid/7/sbin/geom/class/raid/geom_raid.c ============================================================================== --- projects/graid/7/sbin/geom/class/raid/geom_raid.c Tue Feb 8 13:02:25 2011 (r218438) +++ projects/graid/7/sbin/geom/class/raid/geom_raid.c Tue Feb 8 13:04:51 2011 (r218439) @@ -63,8 +63,12 @@ struct g_command class_commands[] = { }, NULL, "[-S size] [-s stripsize] name label level" }, - { "delete", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, - "[-v] name [label|num]" + { "delete", G_FLAG_VERBOSE, NULL, + { + { 'f', "force", NULL, G_TYPE_BOOL }, + G_OPT_SENTINEL + }, + NULL, "[-fv] name [label|num]" }, { "insert", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, "[-v] name prov ..." Modified: projects/graid/7/sbin/geom/class/raid/graid.8 ============================================================================== --- projects/graid/7/sbin/geom/class/raid/graid.8 Tue Feb 8 13:02:25 2011 (r218438) +++ projects/graid/7/sbin/geom/class/raid/graid.8 Tue Feb 8 13:04:51 2011 (r218439) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 3, 2011 +.Dd February 5, 2011 .Dt GRAID 8 .Os .Sh NAME @@ -48,6 +48,7 @@ .Ar level .Nm .Cm delete +.Op Fl f .Ar name .Op Ar label | Ar num .Nm @@ -142,6 +143,12 @@ Optional or .Ar num arguments allow specifying volume for deletion. +.Pp +Additional options include: +.Bl -tag -width ".Fl f" +.It Fl f +Delete volume(s) even if it is still open. +.El .It Cm insert Insert specified provider(s) into specified array instead of the first missing or failed components. Modified: projects/graid/7/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 13:02:25 2011 (r218438) +++ projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 13:04:51 2011 (r218439) @@ -133,6 +133,8 @@ g_raid_node_event2str(int event) { switch (event) { + case G_RAID_NODE_E_WAKE: + return ("WAKE"); case G_RAID_NODE_E_START: return ("START"); default: @@ -187,10 +189,12 @@ g_raid_subdisk_state2str(int state) return ("FAILED"); case G_RAID_SUBDISK_S_NEW: return ("NEW"); - case G_RAID_SUBDISK_S_STALE: - return ("STALE"); case G_RAID_SUBDISK_S_REBUILD: return ("REBUILD"); + case G_RAID_SUBDISK_S_UNINITIALIZED: + return ("UNINITIALIZED"); + case G_RAID_SUBDISK_S_STALE: + return ("STALE"); case G_RAID_SUBDISK_S_RESYNC: return ("RESYNC"); case G_RAID_SUBDISK_S_ACTIVE: @@ -323,7 +327,7 @@ g_raid_volume_str2level(const char *str, return (0); } -static const char * +const char * g_raid_get_diskname(struct g_raid_disk *disk) { @@ -332,15 +336,6 @@ g_raid_get_diskname(struct g_raid_disk * return (disk->d_consumer->provider->name); } -static const char * -g_raid_get_subdiskname(struct g_raid_subdisk *subdisk) -{ - - if (subdisk->sd_disk == NULL) - return ("[unknown]"); - return (g_raid_get_diskname(subdisk->sd_disk)); -} - void g_raid_report_disk_state(struct g_raid_disk *disk) { @@ -372,7 +367,7 @@ g_raid_report_disk_state(struct g_raid_d } len = sizeof(s); g_io_getattr("GEOM::setstate", disk->d_consumer, &len, &s); - G_RAID_DEBUG(2, "Disk %s state reported as %d.", + G_RAID_DEBUG1(2, disk->d_softc, "Disk %s state reported as %d.", g_raid_get_diskname(disk), s); } @@ -380,7 +375,7 @@ void g_raid_change_disk_state(struct g_raid_disk *disk, int state) { - G_RAID_DEBUG(1, "Disk %s state changed from %s to %s.", + G_RAID_DEBUG1(0, disk->d_softc, "Disk %s state changed from %s to %s.", g_raid_get_diskname(disk), g_raid_disk_state2str(disk->d_state), g_raid_disk_state2str(state)); @@ -392,8 +387,10 @@ void g_raid_change_subdisk_state(struct g_raid_subdisk *sd, int state) { - G_RAID_DEBUG(1, "Subdisk %s state changed from %s to %s.", - g_raid_get_subdiskname(sd), + G_RAID_DEBUG1(0, sd->sd_softc, + "Subdisk %s:%d-%s state changed from %s to %s.", + sd->sd_volume->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]", g_raid_subdisk_state2str(sd->sd_state), g_raid_subdisk_state2str(state)); sd->sd_state = state; @@ -405,7 +402,8 @@ void g_raid_change_volume_state(struct g_raid_volume *vol, int state) { - G_RAID_DEBUG(1, "Volume %s state changed from %s to %s.", + G_RAID_DEBUG1(0, vol->v_softc, + "Volume %s state changed from %s to %s.", vol->v_name, g_raid_volume_state2str(vol->v_state), g_raid_volume_state2str(state)); @@ -432,7 +430,6 @@ g_raid_event_send(void *arg, int event, int error; ep = malloc(sizeof(*ep), M_RAID, M_WAITOK); - G_RAID_DEBUG(4, "%s: Sending event %p.", __func__, ep); if ((flags & G_RAID_EVENT_VOLUME) != 0) { sc = ((struct g_raid_volume *)arg)->v_softc; } else if ((flags & G_RAID_EVENT_DISK) != 0) { @@ -446,7 +443,7 @@ g_raid_event_send(void *arg, int event, ep->e_event = event; ep->e_flags = flags; ep->e_error = 0; - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc); + G_RAID_DEBUG1(4, sc, "Sending event %p. Waking up %p.", ep, sc); mtx_lock(&sc->sc_queue_mtx); TAILQ_INSERT_TAIL(&sc->sc_events, ep, e_next); mtx_unlock(&sc->sc_queue_mtx); @@ -456,7 +453,7 @@ g_raid_event_send(void *arg, int event, return (0); sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(4, "%s: Sleeping %p.", __func__, ep); + G_RAID_DEBUG1(4, sc, "Sleeping on %p.", ep); sx_xunlock(&sc->sc_lock); while ((ep->e_flags & G_RAID_EVENT_DONE) == 0) { mtx_lock(&sc->sc_queue_mtx); @@ -561,6 +558,30 @@ g_raid_nsubdisks(struct g_raid_volume *v return (n); } +/* + * Return the first subdisk in given state. + * If state is equal to -1, then the first connected disks. + */ +struct g_raid_subdisk * +g_raid_get_subdisk(struct g_raid_volume *vol, int state) +{ + struct g_raid_subdisk *sd; + struct g_raid_softc *sc; + u_int i; + + sc = vol->v_softc; + sx_assert(&sc->sc_lock, SX_LOCKED); + + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if ((state == -1 && + sd->sd_state != G_RAID_SUBDISK_S_NONE) || + sd->sd_state == state) + return (sd); + } + return (NULL); +} + static u_int g_raid_nrequests(struct g_raid_softc *sc, struct g_consumer *cp) { @@ -576,18 +597,32 @@ g_raid_nrequests(struct g_raid_softc *sc return (nreqs); } +u_int +g_raid_nopens(struct g_raid_softc *sc) +{ + struct g_raid_volume *vol; + u_int opens; + + opens = 0; + TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { + if (vol->v_provider_open != 0) + opens++; + } + return (opens); +} + static int g_raid_consumer_is_busy(struct g_raid_softc *sc, struct g_consumer *cp) { if (cp->index > 0) { - G_RAID_DEBUG(2, + G_RAID_DEBUG1(2, sc, "I/O requests for %s exist, can't destroy it now.", cp->provider->name); return (1); } if (g_raid_nrequests(sc, cp) > 0) { - G_RAID_DEBUG(2, + G_RAID_DEBUG1(2, sc, "I/O requests for %s in queue, can't destroy it now.", cp->provider->name); return (1); @@ -625,8 +660,6 @@ g_raid_kill_consumer(struct g_raid_softc if ((pp->geom->flags & G_GEOM_WITHER) == 0) retaste_wait = 1; } - G_RAID_DEBUG(2, "Access %s r%dw%de%d = %d", pp->name, -cp->acr, - -cp->acw, -cp->ace, 0); if (cp->acr > 0 || cp->acw > 0 || cp->ace > 0) g_access(cp, -cp->acr, -cp->acw, -cp->ace); if (retaste_wait) { @@ -684,8 +717,8 @@ g_raid_clean(struct g_raid_volume *vol, return (timeout); } vol->v_dirty = 0; - G_RAID_DEBUG(1, "Volume %s (node %s) marked as clean.", - vol->v_name, sc->sc_name); + G_RAID_DEBUG1(1, sc, "Volume %s marked as clean.", + vol->v_name); g_raid_write_metadata(sc, vol, NULL, NULL); return (0); } @@ -702,8 +735,8 @@ g_raid_dirty(struct g_raid_volume *vol) // if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) // return; vol->v_dirty = 1; - G_RAID_DEBUG(1, "Volume %s (node %s) marked as dirty.", - vol->v_name, sc->sc_name); + G_RAID_DEBUG1(1, sc, "Volume %s marked as dirty.", + vol->v_name); g_raid_write_metadata(sc, vol, NULL, NULL); } @@ -736,7 +769,7 @@ g_raid_tr_kerneldump_common(struct g_rai g_raid_start(&bp); while (!(bp.bio_flags & BIO_DONE)) { - G_RAID_DEBUG(4, "Poll..."); + G_RAID_DEBUG1(4, sc, "Poll..."); g_raid_poll(sc); DELAY(10); } @@ -752,14 +785,11 @@ g_raid_dump(void *arg, int error; vol = (struct g_raid_volume *)arg; - G_RAID_DEBUG(3, "Dumping at off %llu len %llu.", + G_RAID_DEBUG1(3, vol->v_softc, "Dumping at off %llu len %llu.", (long long unsigned)offset, (long long unsigned)length); error = G_RAID_TR_KERNELDUMP(vol->v_tr, virtual, physical, offset, length); - - G_RAID_DEBUG(3, "Dumping at off %llu len %llu done: %d.", - (long long unsigned)offset, (long long unsigned)length, error); return (error); } @@ -822,7 +852,7 @@ g_raid_start(struct bio *bp) bioq_disksort(&sc->sc_queue, bp); mtx_unlock(&sc->sc_queue_mtx); if (!dumping) { - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc); + G_RAID_DEBUG1(4, sc, "Waking up %p.", sc); wakeup(sc); } } @@ -932,13 +962,13 @@ g_raid_finish_with_locked_ranges(struct } if (lp->l_pending) { vol->v_pending_lock = 1; - G_RAID_DEBUG(4, + G_RAID_DEBUG1(4, vol->v_softc, "Deferred lock(%jd, %jd) has %d pending", (intmax_t)off, (intmax_t)(off + len), lp->l_pending); continue; } - G_RAID_DEBUG(4, + G_RAID_DEBUG1(4, vol->v_softc, "Deferred lock of %jd to %jd completed", (intmax_t)off, (intmax_t)(off + len)); G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg); @@ -995,11 +1025,11 @@ g_raid_lock_range(struct g_raid_volume * */ if (lp->l_pending > 0) { vol->v_pending_lock = 1; - G_RAID_DEBUG(4, "Locking range %jd to %jd deferred %d pend", + G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd deferred %d pend", (intmax_t)off, (intmax_t)(off+len), lp->l_pending); return (EBUSY); } - G_RAID_DEBUG(4, "Locking range %jd to %jd", + G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd", (intmax_t)off, (intmax_t)(off+len)); G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg); return (0); @@ -1023,7 +1053,7 @@ g_raid_unlock_range(struct g_raid_volume * when the worker thread runs. * XXX */ - G_RAID_DEBUG(4, "Unlocked %jd to %jd", + G_RAID_DEBUG1(4, sc, "Unlocked %jd to %jd", (intmax_t)lp->l_offset, (intmax_t)(lp->l_offset+lp->l_length)); mtx_lock(&sc->sc_queue_mtx); @@ -1135,8 +1165,7 @@ g_raid_handle_event(struct g_raid_softc g_raid_event_free(ep); } else { ep->e_flags |= G_RAID_EVENT_DONE; - G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, - ep); + G_RAID_DEBUG1(4, sc, "Waking up %p.", ep); mtx_lock(&sc->sc_queue_mtx); wakeup(ep); mtx_unlock(&sc->sc_queue_mtx); @@ -1247,30 +1276,6 @@ out: sx_xunlock(&sc->sc_lock); } -#if 0 -static void -g_raid_update_idle(struct g_raid_softc *sc, struct g_raid_disk *disk) -{ - - sx_assert(&sc->sc_lock, SX_LOCKED); - - if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) - return; -#if 0 - if (!sc->sc_idle && (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) == 0) { - G_RAID_DEBUG(1, "Disk %s (device %s) marked as dirty.", - g_raid_get_diskname(disk), sc->sc_name); - disk->d_flags |= G_RAID_DISK_FLAG_DIRTY; - } else if (sc->sc_idle && - (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) != 0) { - G_RAID_DEBUG(1, "Disk %s (device %s) marked as clean.", - g_raid_get_diskname(disk), sc->sc_name); - disk->d_flags &= ~G_RAID_DISK_FLAG_DIRTY; - } -#endif -} -#endif - static void g_raid_launch_provider(struct g_raid_volume *vol) { @@ -1307,7 +1312,8 @@ g_raid_launch_provider(struct g_raid_vol vol->v_provider = pp; g_error_provider(pp, 0); g_topology_unlock(); - G_RAID_DEBUG(0, "Volume %s launched.", pp->name); + G_RAID_DEBUG1(0, sc, "Provider %s for volume %s created.", + pp->name, vol->v_name); } static void @@ -1332,8 +1338,8 @@ g_raid_destroy_provider(struct g_raid_vo g_io_deliver(bp, ENXIO); } mtx_unlock(&sc->sc_queue_mtx); - G_RAID_DEBUG(0, "Node %s: provider %s destroyed.", sc->sc_name, - pp->name); + G_RAID_DEBUG1(0, sc, "Provider %s for volume %s destroyed.", + pp->name, vol->v_name); g_wither_provider(pp, ENXIO); g_topology_unlock(); vol->v_provider = NULL; @@ -1350,7 +1356,7 @@ g_raid_update_volume(struct g_raid_volum sc = vol->v_softc; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for volume %s.", + G_RAID_DEBUG1(2, sc, "Event %s for volume %s.", g_raid_volume_event2str(event), vol->v_name); switch (event) { @@ -1371,7 +1377,7 @@ g_raid_update_volume(struct g_raid_volum /* Manage root mount release. */ if (vol->v_starting) { vol->v_starting = 0; - G_RAID_DEBUG(1, "root_mount_rel %p", vol->v_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_rel %p", vol->v_rootmount); root_mount_rel(vol->v_rootmount); vol->v_rootmount = NULL; } @@ -1393,9 +1399,10 @@ g_raid_update_subdisk(struct g_raid_subd vol = sd->sd_volume; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(3, "Event %s for subdisk %s.", + G_RAID_DEBUG1(2, sc, "Event %s for subdisk %s:%d-%s.", g_raid_subdisk_event2str(event), - g_raid_get_subdiskname(sd)); + vol->v_name, sd->sd_pos, + sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]"); if (vol->v_tr) G_RAID_TR_EVENT(vol->v_tr, sd, event); @@ -1413,7 +1420,7 @@ g_raid_update_disk(struct g_raid_disk *d sc = disk->d_softc; sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for disk %s.", + G_RAID_DEBUG1(2, sc, "Event %s for disk %s.", g_raid_disk_event2str(event), g_raid_get_diskname(disk)); @@ -1430,9 +1437,11 @@ g_raid_update_node(struct g_raid_softc * { sx_assert(&sc->sc_lock, SX_XLOCKED); - G_RAID_DEBUG(2, "Event %s for node %s.", - g_raid_node_event2str(event), sc->sc_name); + G_RAID_DEBUG1(2, sc, "Event %s for the array.", + g_raid_node_event2str(event)); + if (event == G_RAID_NODE_E_WAKE) + return (0); if (sc->sc_md) G_RAID_MD_EVENT(sc->sc_md, NULL, event); return (0); @@ -1441,19 +1450,19 @@ g_raid_update_node(struct g_raid_softc * static int g_raid_access(struct g_provider *pp, int acr, int acw, int ace) { - struct g_raid_volume *vol, *vol1; + struct g_raid_volume *vol; struct g_raid_softc *sc; int dcr, dcw, dce, opens, error = 0; g_topology_assert(); - G_RAID_DEBUG(2, "Access request for %s: r%dw%de%d.", pp->name, acr, - acw, ace); - sc = pp->geom->softc; vol = pp->private; KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name)); KASSERT(vol != NULL, ("NULL volume (provider=%s).", pp->name)); + G_RAID_DEBUG1(2, sc, "Access request for %s: r%dw%de%d.", pp->name, + acr, acw, ace); + dcr = pp->acr + acr; dcw = pp->acw + acw; dce = pp->ace + ace; @@ -1472,14 +1481,11 @@ g_raid_access(struct g_provider *pp, int if (sc->sc_stopping == G_RAID_DESTROY_DELAYED && vol->v_provider_open == 0) { /* Count open volumes. */ - opens = 0; - TAILQ_FOREACH(vol1, &sc->sc_volumes, v_next) { - if (vol1->v_provider_open != 0) - opens++; - } + opens = g_raid_nopens(sc); if (opens == 0) { sc->sc_stopping = G_RAID_DESTROY_HARD; - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + /* Wake up worker to make it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } } /* Handle open volume destruction. */ @@ -1500,7 +1506,7 @@ g_raid_create_node(struct g_class *mp, int error; g_topology_assert(); - G_RAID_DEBUG(1, "Creating node %s.", name); + G_RAID_DEBUG(1, "Creating array %s.", name); gp = g_new_geomf(mp, "%s", name); sc = malloc(sizeof(*sc), M_RAID, M_WAITOK | M_ZERO); @@ -1522,7 +1528,7 @@ g_raid_create_node(struct g_class *mp, error = kthread_create(g_raid_worker, sc, &sc->sc_worker, 0, 0, "g_raid %s", name); if (error != 0) { - G_RAID_DEBUG(1, "Cannot create kernel thread for %s.", name); + G_RAID_DEBUG(0, "Cannot create kernel thread for %s.", name); mtx_destroy(&sc->sc_queue_mtx); sx_destroy(&sc->sc_lock); g_destroy_geom(sc->sc_geom); @@ -1530,7 +1536,7 @@ g_raid_create_node(struct g_class *mp, return (NULL); } - G_RAID_DEBUG(1, "Node %s created.", name); + G_RAID_DEBUG1(0, sc, "Array %s created.", name); return (sc); } @@ -1540,7 +1546,7 @@ g_raid_create_volume(struct g_raid_softc struct g_raid_volume *vol, *vol1; int i; - G_RAID_DEBUG(1, "Creating volume %s.", name); + G_RAID_DEBUG1(1, sc, "Creating volume %s.", name); vol = malloc(sizeof(*vol), M_RAID, M_WAITOK | M_ZERO); vol->v_softc = sc; strlcpy(vol->v_name, name, G_RAID_MAX_VOLUMENAME); @@ -1571,7 +1577,7 @@ g_raid_create_volume(struct g_raid_softc /* Delay root mounting. */ vol->v_rootmount = root_mount_hold("GRAID"); - G_RAID_DEBUG(1, "root_mount_hold %p", vol->v_rootmount); + G_RAID_DEBUG1(1, sc, "root_mount_hold %p", vol->v_rootmount); vol->v_starting = 1; TAILQ_INSERT_TAIL(&sc->sc_volumes, vol, v_next); return (vol); @@ -1582,7 +1588,7 @@ g_raid_create_disk(struct g_raid_softc * { struct g_raid_disk *disk; - G_RAID_DEBUG(1, "Creating disk."); + G_RAID_DEBUG1(1, sc, "Creating disk."); disk = malloc(sizeof(*disk), M_RAID, M_WAITOK | M_ZERO); disk->d_softc = sc; disk->d_state = G_RAID_DISK_S_NONE; @@ -1597,9 +1603,11 @@ int g_raid_start_volume(struct g_raid_vo struct g_raid_tr_object *obj; int status; - G_RAID_DEBUG(2, "Starting volume %s.", vol->v_name); + G_RAID_DEBUG1(2, vol->v_softc, "Starting volume %s.", vol->v_name); LIST_FOREACH(class, &g_raid_tr_classes, trc_list) { - G_RAID_DEBUG(2, "Tasting %s for %s transformation.", vol->v_name, class->name); + G_RAID_DEBUG1(2, vol->v_softc, + "Tasting volume %s for %s transformation.", + vol->v_name, class->name); obj = (void *)kobj_create((kobj_class_t)class, M_RAID, M_WAITOK); obj->tro_class = class; @@ -1610,7 +1618,8 @@ int g_raid_start_volume(struct g_raid_vo kobj_delete((kobj_t)obj, M_RAID); } if (class == NULL) { - G_RAID_DEBUG(1, "No transformation module found for %s.", + G_RAID_DEBUG1(0, vol->v_softc, + "No transformation module found for %s.", vol->v_name); vol->v_tr = NULL; g_raid_change_volume_state(vol, G_RAID_VOLUME_S_UNSUPPORTED); @@ -1618,7 +1627,8 @@ int g_raid_start_volume(struct g_raid_vo G_RAID_EVENT_VOLUME); return (-1); } - G_RAID_DEBUG(2, "Transformation module %s chosen for %s.", + G_RAID_DEBUG1(2, vol->v_softc, + "Transformation module %s chosen for %s.", class->name, vol->v_name); vol->v_tr = obj; return (0); @@ -1650,14 +1660,14 @@ g_raid_destroy_node(struct g_raid_softc sc->sc_md = NULL; } if (sc->sc_geom != NULL) { - G_RAID_DEBUG(1, "Destroying node %s.", sc->sc_name); + G_RAID_DEBUG1(0, sc, "Array %s destroyed.", sc->sc_name); g_topology_lock(); sc->sc_geom->softc = NULL; g_wither_geom(sc->sc_geom, ENXIO); g_topology_unlock(); sc->sc_geom = NULL; } else - G_RAID_DEBUG(1, "Destroying node."); + G_RAID_DEBUG(1, "Array destroyed."); if (worker) { mtx_destroy(&sc->sc_queue_mtx); sx_xunlock(&sc->sc_lock); @@ -1669,7 +1679,7 @@ g_raid_destroy_node(struct g_raid_softc kthread_exit(0); } else { /* Wake up worker to make it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } return (0); } @@ -1682,7 +1692,7 @@ g_raid_destroy_volume(struct g_raid_volu int i; sc = vol->v_softc; - G_RAID_DEBUG(2, "Destroying volume %s.", vol->v_name); + G_RAID_DEBUG1(2, sc, "Destroying volume %s.", vol->v_name); vol->v_stopping = 1; if (vol->v_state != G_RAID_VOLUME_S_STOPPED) { if (vol->v_tr) { @@ -1695,13 +1705,13 @@ g_raid_destroy_volume(struct g_raid_volu return (EBUSY); if (vol->v_provider != NULL) return (EBUSY); + if (vol->v_provider_open != 0) + return (EBUSY); if (vol->v_tr) { G_RAID_TR_FREE(vol->v_tr); kobj_delete((kobj_t)vol->v_tr, M_RAID); vol->v_tr = NULL; } - if (vol->v_provider_open != 0) - return (EBUSY); if (vol->v_rootmount) root_mount_rel(vol->v_rootmount); g_topology_lock(); @@ -1714,10 +1724,12 @@ g_raid_destroy_volume(struct g_raid_volu continue; TAILQ_REMOVE(&disk->d_subdisks, &vol->v_subdisks[i], sd_next); } - G_RAID_DEBUG(2, "Volume %s destroyed.", vol->v_name); + G_RAID_DEBUG1(2, sc, "Volume %s destroyed.", vol->v_name); free(vol, M_RAID); - if (sc->sc_stopping == G_RAID_DESTROY_HARD) - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + if (sc->sc_stopping == G_RAID_DESTROY_HARD) { + /* Wake up worker to let it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); + } return (0); } @@ -1728,7 +1740,7 @@ g_raid_destroy_disk(struct g_raid_disk * struct g_raid_subdisk *sd, *tmp; sc = disk->d_softc; - G_RAID_DEBUG(2, "Destroying disk."); + G_RAID_DEBUG1(2, sc, "Destroying disk."); if (disk->d_consumer) { g_topology_lock(); g_raid_kill_consumer(sc, disk->d_consumer); @@ -1751,7 +1763,6 @@ g_raid_destroy_disk(struct g_raid_disk * int g_raid_destroy(struct g_raid_softc *sc, int how) { - struct g_raid_volume *vol; int opens; g_topology_assert_not(); @@ -1760,37 +1771,32 @@ g_raid_destroy(struct g_raid_softc *sc, sx_assert(&sc->sc_lock, SX_XLOCKED); /* Count open volumes. */ - opens = 0; - TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { - if (vol->v_provider_open != 0) - opens++; - } + opens = g_raid_nopens(sc); /* React on some opened volumes. */ if (opens > 0) { switch (how) { case G_RAID_DESTROY_SOFT: - G_RAID_DEBUG(1, - "%d volumes of %s are still open.", - opens, sc->sc_name); + G_RAID_DEBUG1(1, sc, + "%d volumes are still open.", + opens); return (EBUSY); case G_RAID_DESTROY_DELAYED: - G_RAID_DEBUG(1, - "Node %s will be destroyed on last close.", - sc->sc_name); + G_RAID_DEBUG1(1, sc, + "Array will be destroyed on last close."); sc->sc_stopping = G_RAID_DESTROY_DELAYED; return (EBUSY); case G_RAID_DESTROY_HARD: - G_RAID_DEBUG(1, - "%d volumes of %s are still open.", - opens, sc->sc_name); + G_RAID_DEBUG1(1, sc, + "%d volumes are still open.", + opens); } } /* Mark node for destruction. */ sc->sc_stopping = G_RAID_DESTROY_HARD; /* Wake up worker to let it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); /* Sleep until node destroyed. */ sx_sleep(&sc->sc_stopping, &sc->sc_lock, PRIBIO | PDROP, "r:destroy", 0); @@ -1816,7 +1822,7 @@ g_raid_taste(struct g_class *mp, struct g_topology_assert(); g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); - G_RAID_DEBUG(2, "Tasting %s.", pp->name); + G_RAID_DEBUG(2, "Tasting provider %s.", pp->name); gp = g_new_geomf(mp, "mirror:taste"); /* @@ -1828,7 +1834,8 @@ g_raid_taste(struct g_class *mp, struct geom = NULL; LIST_FOREACH(class, &g_raid_md_classes, mdc_list) { - G_RAID_DEBUG(2, "Tasting %s for %s metadata.", pp->name, class->name); + G_RAID_DEBUG(2, "Tasting provider %s for %s metadata.", + pp->name, class->name); obj = (void *)kobj_create((kobj_class_t)class, M_RAID, M_WAITOK); obj->mdo_class = class; @@ -1842,7 +1849,7 @@ g_raid_taste(struct g_class *mp, struct g_detach(cp); g_destroy_consumer(cp); g_destroy_geom(gp); - G_RAID_DEBUG(2, "Tasting %s done.", pp->name); + G_RAID_DEBUG(2, "Tasting provider %s done.", pp->name); return (geom); } @@ -1853,13 +1860,13 @@ g_raid_create_node_format(const char *fo struct g_raid_md_object *obj; int status; - G_RAID_DEBUG(2, "Creating node for %s metadata.", format); + G_RAID_DEBUG(2, "Creating array for %s metadata.", format); LIST_FOREACH(class, &g_raid_md_classes, mdc_list) { if (strcasecmp(class->name, format) == 0) break; } if (class == NULL) { - G_RAID_DEBUG(2, "Creating node for %s metadata.", format); + G_RAID_DEBUG(1, "No support for %s metadata.", format); return (G_RAID_MD_TASTE_FAIL); } obj = (void *)kobj_create((kobj_class_t)class, M_RAID, @@ -1893,6 +1900,8 @@ void g_raid_write_metadata(struct g_raid struct g_raid_subdisk *sd, struct g_raid_disk *disk) { + if (sc->sc_stopping == G_RAID_DESTROY_HARD) + return; if (sc->sc_md) G_RAID_MD_WRITE(sc->sc_md, vol, sd, disk); } Modified: projects/graid/7/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.h Tue Feb 8 13:02:25 2011 (r218438) +++ projects/graid/7/sys/geom/raid/g_raid.h Tue Feb 8 13:04:51 2011 (r218439) @@ -64,6 +64,17 @@ extern struct g_class g_raid_class; } \ } \ } while (0) +#define G_RAID_DEBUG1(lvl, sc, fmt, ...) do { \ + if (g_raid_debug >= (lvl)) { \ + if (g_raid_debug > 0) { \ + printf("GEOM_RAID[%u]: %s: " fmt "\n", \ + lvl, (sc)->sc_name, ## __VA_ARGS__); \ + } else { \ + printf("GEOM_RAID: %s: " fmt "\n", \ + (sc)->sc_name, ## __VA_ARGS__); \ + } \ + } \ +} while (0) #define G_RAID_LOGREQ(lvl, bp, fmt, ...) do { \ if (g_raid_debug >= (lvl)) { \ if (g_raid_debug > 0) { \ @@ -240,6 +251,7 @@ struct g_raid_volume { LIST_ENTRY(g_raid_volume) v_global_next; /* Global list entry. */ }; +#define G_RAID_NODE_E_WAKE 0x00 #define G_RAID_NODE_E_START 0x01 struct g_raid_softc { @@ -327,6 +339,7 @@ int g_raid_create_node_format(const char struct g_raid_volume * g_raid_create_volume(struct g_raid_softc *sc, const char *name); struct g_raid_disk * g_raid_create_disk(struct g_raid_softc *sc); +const char * g_raid_get_diskname(struct g_raid_disk *disk); int g_raid_start_volume(struct g_raid_volume *vol); @@ -356,6 +369,9 @@ int g_raid_tr_kerneldump_common(struct g u_int g_raid_ndisks(struct g_raid_softc *sc, int state); u_int g_raid_nsubdisks(struct g_raid_volume *vol, int state); +u_int g_raid_nopens(struct g_raid_softc *sc); +struct g_raid_subdisk * g_raid_get_subdisk(struct g_raid_volume *vol, + int state); #define G_RAID_DESTROY_SOFT 0 #define G_RAID_DESTROY_DELAYED 1 #define G_RAID_DESTROY_HARD 2 Modified: projects/graid/7/sys/geom/raid/g_raid_ctl.c ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid_ctl.c Tue Feb 8 13:02:25 2011 (r218438) +++ projects/graid/7/sys/geom/raid/g_raid_ctl.c Tue Feb 8 13:04:51 2011 (r218439) @@ -90,7 +90,7 @@ g_raid_ctl_label(struct gctl_req *req, s } crstatus = g_raid_create_node_format(format, &geom); if (crstatus == G_RAID_MD_TASTE_FAIL) { - gctl_error(req, "Failed to create node with format '%s'.", + gctl_error(req, "Failed to create array with format '%s'.", format); return; } @@ -132,12 +132,12 @@ g_raid_ctl_stop(struct gctl_req *req, st } nodename = gctl_get_asciiparam(req, "arg0"); if (nodename == NULL) { - gctl_error(req, "No node name recieved."); + gctl_error(req, "No array name recieved."); return; } sc = g_raid_find_node(mp, nodename); if (sc == NULL) { - gctl_error(req, "Node '%s' not found.", nodename); + gctl_error(req, "Array '%s' not found.", nodename); return; } force = gctl_get_paraml(req, "force", sizeof(*force)); @@ -172,12 +172,12 @@ g_raid_ctl_other(struct gctl_req *req, s } nodename = gctl_get_asciiparam(req, "arg0"); if (nodename == NULL) { - gctl_error(req, "No node name recieved."); + gctl_error(req, "No array name recieved."); return; } sc = g_raid_find_node(mp, nodename); if (sc == NULL) { - gctl_error(req, "Node '%s' not found.", nodename); + gctl_error(req, "Array '%s' not found.", nodename); return; } g_topology_unlock(); Modified: projects/graid/7/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/7/sys/geom/raid/md_intel.c Tue Feb 8 13:02:25 2011 (r218438) +++ projects/graid/7/sys/geom/raid/md_intel.c Tue Feb 8 13:04:51 2011 (r218439) @@ -74,6 +74,19 @@ struct intel_raid_vol { uint8_t name[16]; u_int64_t total_sectors __packed; uint32_t state; +#define INTEL_ST_BOOTABLE 0x00000001 +#define INTEL_ST_BOOT_DEVICE 0x00000002 +#define INTEL_ST_READ_COALESCING 0x00000004 +#define INTEL_ST_WRITE_COALESCING 0x00000008 +#define INTEL_ST_LAST_SHUTDOWN_DIRTY 0x00000010 +#define INTEL_ST_HIDDEN_AT_BOOT 0x00000020 +#define INTEL_ST_CURRENTLY_HIDDEN 0x00000040 +#define INTEL_ST_VERIFY_AND_FIX 0x00000080 +#define INTEL_ST_MAP_STATE_UNINIT 0x00000100 +#define INTEL_ST_NO_AUTO_RECOVERY 0x00000200 +#define INTEL_ST_CLONE_N_GO 0x00000400 +#define INTEL_ST_CLONE_MAN_SYNC 0x00000800 +#define INTEL_ST_CNG_MASTER_DISK_NUM 0x00001000 uint32_t reserved; uint8_t migr_priority; uint8_t num_sub_vols; @@ -330,8 +343,10 @@ intel_meta_read(struct g_consumer *cp) { struct g_provider *pp; struct intel_raid_conf *meta; + struct intel_raid_vol *mvol; + struct intel_raid_map *mmap; char *buf; - int error, i, left; + int error, i, j, k, left, size; uint32_t checksum, *ptr; pp = cp->provider; @@ -352,14 +367,15 @@ intel_meta_read(struct g_consumer *cp) g_free(buf); return (NULL); } - if (meta->config_size > 65536) { - G_RAID_DEBUG(1, "Intel metadata size looks too big: %d", + if (meta->config_size > 65536 || + meta->config_size < sizeof(struct intel_raid_conf)) { + G_RAID_DEBUG(1, "Intel metadata size looks wrong: %d", meta->config_size); g_free(buf); return (NULL); } meta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK); - memcpy(meta, buf, pp->sectorsize); + memcpy(meta, buf, min(meta->config_size, pp->sectorsize)); g_free(buf); /* Read all the rest, if needed. */ @@ -392,6 +408,68 @@ intel_meta_read(struct g_consumer *cp) return (NULL); } + /* Validate metadata size. */ + size = sizeof(struct intel_raid_conf) + + sizeof(struct intel_raid_disk) * (meta->total_disks - 1) + + sizeof(struct intel_raid_vol) * meta->total_volumes; + if (size > meta->config_size) { +badsize: + G_RAID_DEBUG(1, "Intel metadata size incorrect %d < %d", + meta->config_size, size); + free(meta, M_MD_INTEL); + return (NULL); + } + for (i = 0; i < meta->total_volumes; i++) { + mvol = intel_get_volume(meta, i); + mmap = intel_get_map(mvol, 0); + size += 4 * (mmap->total_disks - 1); + if (size > meta->config_size) + goto badsize; + if (mvol->migr_state) { + size += sizeof(struct intel_raid_map); + if (size > meta->config_size) + goto badsize; + mmap = intel_get_map(mvol, 1); + size += 4 * (mmap->total_disks - 1); + if (size > meta->config_size) + goto badsize; + } + } + + /* Validate disk indexes. */ + for (i = 0; i < meta->total_volumes; i++) { + mvol = intel_get_volume(meta, i); + for (j = 0; j < (mvol->migr_state ? 2 : 1); j++) { + mmap = intel_get_map(mvol, j); + for (k = 0; k < mmap->total_disks; k++) { + if ((mmap->disk_idx[k] & INTEL_DI_IDX) > + meta->total_disks) { + G_RAID_DEBUG(1, "Intel metadata disk" + " index %d too big (>%d)", + mmap->disk_idx[k] & INTEL_DI_IDX, + meta->total_disks); + free(meta, M_MD_INTEL); + return (NULL); + } + } + } + } + + /* Validate migration types. */ + for (i = 0; i < meta->total_volumes; i++) { + mvol = intel_get_volume(meta, i); + if (mvol->migr_state && + mvol->migr_type != INTEL_MT_INIT && + mvol->migr_type != INTEL_MT_REBUILD && + mvol->migr_type != INTEL_MT_VERIFY && + mvol->migr_type != INTEL_MT_REPAIR) { + G_RAID_DEBUG(1, "Intel metadata has unsupported" + " migration type %d", mvol->migr_type); + free(meta, M_MD_INTEL); + return (NULL); + } + } + return (meta); } @@ -525,7 +603,7 @@ g_raid_md_intel_start_disk(struct g_raid /* Find disk position in metadata by it's serial. */ disk_pos = intel_meta_find_disk(meta, pd->pd_disk_meta.serial); if (disk_pos < 0) { - G_RAID_DEBUG(1, "Unknown, probably new or stale disk"); + G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk"); /* Failed stale disk is useless for us. */ if (pd->pd_disk_meta.flags & INTEL_F_FAILED) { g_raid_change_disk_state(disk, G_RAID_DISK_S_STALE_FAILED); @@ -546,7 +624,7 @@ g_raid_md_intel_start_disk(struct g_raid TAILQ_FOREACH(sd, &tmpdisk->d_subdisks, sd_next) { if (sd->sd_offset + sd->sd_size + 4096 > (off_t)pd->pd_disk_meta.sectors * 512) { - G_RAID_DEBUG(1, + G_RAID_DEBUG1(1, sc, "Disk too small (%llu < %llu)", ((unsigned long long) pd->pd_disk_meta.sectors) * 512, @@ -586,7 +664,7 @@ nofit: if (olddisk == NULL) panic("No disk at position %d!", disk_pos); if (olddisk->d_state != G_RAID_DISK_S_OFFLINE) { - G_RAID_DEBUG(1, "More then one disk for pos %d", *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 13:24:59 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C3B551065673; Tue, 8 Feb 2011 13:24:59 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B54558FC20; Tue, 8 Feb 2011 13:24:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18DOxei047256; Tue, 8 Feb 2011 13:24:59 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18DOxEb047254; Tue, 8 Feb 2011 13:24:59 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081324.p18DOxEb047254@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 13:24:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218440 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 13:24:59 -0000 Author: mav Date: Tue Feb 8 13:24:59 2011 New Revision: 218440 URL: http://svn.freebsd.org/changeset/base/218440 Log: Do not try to read freshly allocated memory. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Tue Feb 8 13:04:51 2011 (r218439) +++ projects/graid/head/sys/geom/raid/md_intel.c Tue Feb 8 13:24:59 2011 (r218440) @@ -374,8 +374,9 @@ intel_meta_read(struct g_consumer *cp) g_free(buf); return (NULL); } - meta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK); - memcpy(meta, buf, min(meta->config_size, pp->sectorsize)); + size = meta->config_size; + meta = malloc(size, M_MD_INTEL, M_WAITOK); + memcpy(meta, buf, min(size, pp->sectorsize)); g_free(buf); /* Read all the rest, if needed. */ From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 14:24:39 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 592741065673; Tue, 8 Feb 2011 14:24:39 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 47AAA8FC25; Tue, 8 Feb 2011 14:24:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18EOdbK049724; Tue, 8 Feb 2011 14:24:39 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18EOdDx049722; Tue, 8 Feb 2011 14:24:39 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081424.p18EOdDx049722@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 14:24:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218442 - in projects/graid/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib lib/liblzma lib/librtld_db lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/sched ... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 14:24:39 -0000 Author: mav Date: Tue Feb 8 14:24:38 2011 New Revision: 218442 URL: http://svn.freebsd.org/changeset/base/218442 Log: MFH r218440 Modified: projects/graid/8/sys/geom/raid/md_intel.c Directory Properties: projects/graid/8/ (props changed) projects/graid/8/COPYRIGHT (props changed) projects/graid/8/LOCKS (props changed) projects/graid/8/MAINTAINERS (props changed) projects/graid/8/Makefile (props changed) projects/graid/8/Makefile.inc1 (props changed) projects/graid/8/ObsoleteFiles.inc (props changed) projects/graid/8/README (props changed) projects/graid/8/UPDATING (props changed) projects/graid/8/bin/ (props changed) projects/graid/8/bin/chio/ (props changed) projects/graid/8/bin/chmod/ (props changed) projects/graid/8/bin/cp/ (props changed) projects/graid/8/bin/csh/ (props changed) projects/graid/8/bin/date/ (props changed) projects/graid/8/bin/echo/ (props changed) projects/graid/8/bin/expr/ (props changed) projects/graid/8/bin/getfacl/ (props changed) projects/graid/8/bin/kill/ (props changed) projects/graid/8/bin/ln/ (props changed) projects/graid/8/bin/ls/ (props changed) projects/graid/8/bin/mv/ (props changed) projects/graid/8/bin/pax/ (props changed) projects/graid/8/bin/pkill/ (props changed) projects/graid/8/bin/ps/ (props changed) projects/graid/8/bin/pwait/ (props changed) projects/graid/8/bin/setfacl/ (props changed) projects/graid/8/bin/sh/ (props changed) projects/graid/8/bin/sleep/ (props changed) projects/graid/8/bin/test/ (props changed) projects/graid/8/cddl/ (props changed) projects/graid/8/cddl/compat/opensolaris/ (props changed) projects/graid/8/cddl/contrib/opensolaris/ (props changed) projects/graid/8/cddl/lib/ (props changed) projects/graid/8/cddl/lib/libnvpair/ (props changed) projects/graid/8/cddl/lib/libzpool/ (props changed) projects/graid/8/cddl/usr.bin/ (props changed) projects/graid/8/cddl/usr.sbin/ (props changed) projects/graid/8/contrib/ (props changed) projects/graid/8/contrib/amd/ (props changed) projects/graid/8/contrib/bc/ (props changed) projects/graid/8/contrib/bind9/ (props changed) projects/graid/8/contrib/binutils/ (props changed) projects/graid/8/contrib/bsnmp/ (props changed) projects/graid/8/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/8/contrib/bzip2/ (props changed) projects/graid/8/contrib/com_err/ (props changed) projects/graid/8/contrib/csup/ (props changed) projects/graid/8/contrib/cvs/ (props changed) projects/graid/8/contrib/diff/ (props changed) projects/graid/8/contrib/ee/ (props changed) projects/graid/8/contrib/expat/ (props changed) projects/graid/8/contrib/file/ (props changed) projects/graid/8/contrib/gcc/ (props changed) projects/graid/8/contrib/gcclibs/ (props changed) projects/graid/8/contrib/gdb/ (props changed) projects/graid/8/contrib/gdtoa/ (props changed) projects/graid/8/contrib/gnu-sort/ (props changed) projects/graid/8/contrib/gperf/ (props changed) projects/graid/8/contrib/groff/ (props changed) projects/graid/8/contrib/ipfilter/ (props changed) projects/graid/8/contrib/less/ (props changed) projects/graid/8/contrib/libbegemot/ (props changed) projects/graid/8/contrib/libf2c/ (props changed) projects/graid/8/contrib/libobjc/ (props changed) projects/graid/8/contrib/libpcap/ (props changed) projects/graid/8/contrib/libreadline/ (props changed) projects/graid/8/contrib/libstdc++/ (props changed) projects/graid/8/contrib/lukemftp/ (props changed) projects/graid/8/contrib/lukemftpd/ (props changed) projects/graid/8/contrib/ncurses/ (props changed) projects/graid/8/contrib/netcat/ (props changed) projects/graid/8/contrib/ngatm/ (props changed) projects/graid/8/contrib/ntp/ (props changed) projects/graid/8/contrib/nvi/ (props changed) projects/graid/8/contrib/one-true-awk/ (props changed) projects/graid/8/contrib/openbsm/ (props changed) projects/graid/8/contrib/openpam/ (props changed) projects/graid/8/contrib/opie/ (props changed) projects/graid/8/contrib/pam_modules/ (props changed) projects/graid/8/contrib/pf/ (props changed) projects/graid/8/contrib/pnpinfo/ (props changed) projects/graid/8/contrib/sendmail/ (props changed) projects/graid/8/contrib/smbfs/ (props changed) projects/graid/8/contrib/tcp_wrappers/ (props changed) projects/graid/8/contrib/tcpdump/ (props changed) projects/graid/8/contrib/tcsh/ (props changed) projects/graid/8/contrib/telnet/ (props changed) projects/graid/8/contrib/texinfo/ (props changed) projects/graid/8/contrib/top/ (props changed) projects/graid/8/contrib/top/install-sh (props changed) projects/graid/8/contrib/traceroute/ (props changed) projects/graid/8/contrib/wpa/ (props changed) projects/graid/8/contrib/xz/ (props changed) projects/graid/8/contrib/xz/AUTHORS (props changed) projects/graid/8/contrib/xz/COPYING (props changed) projects/graid/8/contrib/xz/ChangeLog (props changed) projects/graid/8/contrib/xz/FREEBSD-Xlist (props changed) projects/graid/8/contrib/xz/FREEBSD-upgrade (props changed) projects/graid/8/contrib/xz/README (props changed) projects/graid/8/contrib/xz/THANKS (props changed) projects/graid/8/contrib/xz/TODO (props changed) projects/graid/8/contrib/xz/po/ (props changed) projects/graid/8/contrib/xz/src/ (props changed) projects/graid/8/crypto/ (props changed) projects/graid/8/crypto/heimdal/ (props changed) projects/graid/8/crypto/openssh/ (props changed) projects/graid/8/crypto/openssl/ (props changed) projects/graid/8/etc/ (props changed) projects/graid/8/games/ (props changed) projects/graid/8/games/factor/ (props changed) projects/graid/8/games/fortune/ (props changed) projects/graid/8/games/grdc/ (props changed) projects/graid/8/games/pom/ (props changed) projects/graid/8/gnu/ (props changed) projects/graid/8/gnu/lib/csu/ (props changed) projects/graid/8/gnu/lib/libgcc/ (props changed) projects/graid/8/gnu/lib/libstdc++/ (props changed) projects/graid/8/gnu/usr.bin/ (props changed) projects/graid/8/gnu/usr.bin/Makefile (props changed) projects/graid/8/gnu/usr.bin/dialog/ (props changed) projects/graid/8/gnu/usr.bin/gdb/ (props changed) projects/graid/8/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/8/gnu/usr.bin/groff/ (props changed) projects/graid/8/gnu/usr.bin/patch/ (props changed) projects/graid/8/include/ (props changed) projects/graid/8/kerberos5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_krb5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_spnego/ (props changed) projects/graid/8/kerberos5/usr.bin/kdestroy/ (props changed) projects/graid/8/kerberos5/usr.bin/kpasswd/ (props changed) projects/graid/8/lib/ (props changed) projects/graid/8/lib/Makefile (props changed) projects/graid/8/lib/Makefile.inc (props changed) projects/graid/8/lib/bind/ (props changed) projects/graid/8/lib/csu/ (props changed) projects/graid/8/lib/libalias/ (props changed) projects/graid/8/lib/libarchive/ (props changed) projects/graid/8/lib/libauditd/ (props changed) projects/graid/8/lib/libautofs/ (props changed) projects/graid/8/lib/libbegemot/ (props changed) projects/graid/8/lib/libbluetooth/ (props changed) projects/graid/8/lib/libbsm/ (props changed) projects/graid/8/lib/libbsnmp/ (props changed) projects/graid/8/lib/libbz2/ (props changed) projects/graid/8/lib/libc/ (props changed) projects/graid/8/lib/libc/stdtime/ (props changed) projects/graid/8/lib/libc_r/ (props changed) projects/graid/8/lib/libcalendar/ (props changed) projects/graid/8/lib/libcam/ (props changed) projects/graid/8/lib/libcom_err/ (props changed) projects/graid/8/lib/libcompat/ (props changed) projects/graid/8/lib/libcrypt/ (props changed) projects/graid/8/lib/libdevinfo/ (props changed) projects/graid/8/lib/libdevstat/ (props changed) projects/graid/8/lib/libdisk/ (props changed) projects/graid/8/lib/libdwarf/ (props changed) projects/graid/8/lib/libedit/ (props changed) projects/graid/8/lib/libelf/ (props changed) projects/graid/8/lib/libexpat/ (props changed) projects/graid/8/lib/libfetch/ (props changed) projects/graid/8/lib/libftpio/ (props changed) projects/graid/8/lib/libgeom/ (props changed) projects/graid/8/lib/libgpib/ (props changed) projects/graid/8/lib/libgssapi/ (props changed) projects/graid/8/lib/libipsec/ (props changed) projects/graid/8/lib/libipx/ (props changed) projects/graid/8/lib/libjail/ (props changed) projects/graid/8/lib/libkiconv/ (props changed) projects/graid/8/lib/libkse/ (props changed) projects/graid/8/lib/libkvm/ (props changed) projects/graid/8/lib/liblzma/ (props changed) projects/graid/8/lib/liblzma/Makefile (props changed) projects/graid/8/lib/liblzma/Symbol.map (props changed) projects/graid/8/lib/liblzma/Versions.def (props changed) projects/graid/8/lib/liblzma/config.h (props changed) projects/graid/8/lib/libmagic/ (props changed) projects/graid/8/lib/libmd/ (props changed) projects/graid/8/lib/libmemstat/ (props changed) projects/graid/8/lib/libmilter/ (props changed) projects/graid/8/lib/libmp/ (props changed) projects/graid/8/lib/libncp/ (props changed) projects/graid/8/lib/libnetgraph/ (props changed) projects/graid/8/lib/libngatm/ (props changed) projects/graid/8/lib/libopie/ (props changed) projects/graid/8/lib/libpam/ (props changed) projects/graid/8/lib/libpcap/ (props changed) projects/graid/8/lib/libpmc/ (props changed) projects/graid/8/lib/libproc/ (props changed) projects/graid/8/lib/libradius/ (props changed) projects/graid/8/lib/librpcsec_gss/ (props changed) projects/graid/8/lib/librpcsvc/ (props changed) projects/graid/8/lib/librt/ (props changed) projects/graid/8/lib/librtld_db/ (props changed) projects/graid/8/lib/librtld_db/Makefile (props changed) projects/graid/8/lib/librtld_db/librtld_db.3 (props changed) projects/graid/8/lib/librtld_db/rtld_db.c (props changed) projects/graid/8/lib/librtld_db/rtld_db.h (props changed) projects/graid/8/lib/libsbuf/ (props changed) projects/graid/8/lib/libsdp/ (props changed) projects/graid/8/lib/libsm/ (props changed) projects/graid/8/lib/libsmb/ (props changed) projects/graid/8/lib/libsmdb/ (props changed) projects/graid/8/lib/libsmutil/ (props changed) projects/graid/8/lib/libstand/ (props changed) projects/graid/8/lib/libtacplus/ (props changed) projects/graid/8/lib/libtelnet/ (props changed) projects/graid/8/lib/libthr/ (props changed) projects/graid/8/lib/libthread_db/ (props changed) projects/graid/8/lib/libufs/ (props changed) projects/graid/8/lib/libugidfw/ (props changed) projects/graid/8/lib/libusb/ (props changed) projects/graid/8/lib/libusb/usb.h (props changed) projects/graid/8/lib/libusbhid/ (props changed) projects/graid/8/lib/libutil/ (props changed) projects/graid/8/lib/libvgl/ (props changed) projects/graid/8/lib/libwrap/ (props changed) projects/graid/8/lib/liby/ (props changed) projects/graid/8/lib/libypclnt/ (props changed) projects/graid/8/lib/libz/ (props changed) projects/graid/8/lib/libz/contrib/ (props changed) projects/graid/8/lib/msun/ (props changed) projects/graid/8/lib/ncurses/ (props changed) projects/graid/8/libexec/ (props changed) projects/graid/8/libexec/ftpd/ (props changed) projects/graid/8/libexec/rtld-elf/ (props changed) projects/graid/8/libexec/tftpd/ (props changed) projects/graid/8/release/ (props changed) projects/graid/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/8/release/picobsd/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed) projects/graid/8/release/picobsd/qemu/ (props changed) projects/graid/8/release/picobsd/tinyware/login/ (props changed) projects/graid/8/release/powerpc/ (props changed) projects/graid/8/rescue/ (props changed) projects/graid/8/sbin/ (props changed) projects/graid/8/sbin/atacontrol/ (props changed) projects/graid/8/sbin/bsdlabel/ (props changed) projects/graid/8/sbin/camcontrol/ (props changed) projects/graid/8/sbin/ddb/ (props changed) projects/graid/8/sbin/devd/ (props changed) projects/graid/8/sbin/devfs/ (props changed) projects/graid/8/sbin/dhclient/ (props changed) projects/graid/8/sbin/dump/ (props changed) projects/graid/8/sbin/dumpfs/ (props changed) projects/graid/8/sbin/fdisk/ (props changed) projects/graid/8/sbin/fsck/ (props changed) projects/graid/8/sbin/fsck_ffs/ (props changed) projects/graid/8/sbin/fsck_msdosfs/ (props changed) projects/graid/8/sbin/fsirand/ (props changed) projects/graid/8/sbin/geom/ (props changed) projects/graid/8/sbin/geom/class/multipath/ (props changed) projects/graid/8/sbin/geom/class/part/ (props changed) projects/graid/8/sbin/geom/class/sched/gsched.8 (props changed) projects/graid/8/sbin/geom/class/stripe/ (props changed) projects/graid/8/sbin/ggate/ (props changed) projects/graid/8/sbin/growfs/ (props changed) projects/graid/8/sbin/hastctl/ (props changed) projects/graid/8/sbin/hastd/ (props changed) projects/graid/8/sbin/ifconfig/ (props changed) projects/graid/8/sbin/ipfw/ (props changed) projects/graid/8/sbin/iscontrol/ (props changed) projects/graid/8/sbin/kldload/ (props changed) projects/graid/8/sbin/kldstat/ (props changed) projects/graid/8/sbin/mdconfig/ (props changed) projects/graid/8/sbin/mksnap_ffs/ (props changed) projects/graid/8/sbin/mount/ (props changed) projects/graid/8/sbin/mount_cd9660/ (props changed) projects/graid/8/sbin/mount_msdosfs/ (props changed) projects/graid/8/sbin/mount_nfs/ (props changed) projects/graid/8/sbin/natd/ (props changed) projects/graid/8/sbin/newfs/ (props changed) projects/graid/8/sbin/newfs_msdos/ (props changed) projects/graid/8/sbin/ping6/ (props changed) projects/graid/8/sbin/reboot/ (props changed) projects/graid/8/sbin/restore/ (props changed) projects/graid/8/sbin/route/ (props changed) projects/graid/8/sbin/routed/ (props changed) projects/graid/8/sbin/setkey/ (props changed) projects/graid/8/sbin/spppcontrol/ (props changed) projects/graid/8/sbin/sysctl/ (props changed) projects/graid/8/sbin/tunefs/ (props changed) projects/graid/8/sbin/umount/ (props changed) projects/graid/8/secure/ (props changed) projects/graid/8/secure/lib/libcrypto/ (props changed) projects/graid/8/secure/lib/libssl/ (props changed) projects/graid/8/secure/usr.bin/bdes/ (props changed) projects/graid/8/secure/usr.bin/openssl/ (props changed) projects/graid/8/share/ (props changed) projects/graid/8/share/dict/ (props changed) projects/graid/8/share/doc/papers/jail/ (props changed) projects/graid/8/share/doc/smm/01.setup/ (props changed) projects/graid/8/share/examples/ (props changed) projects/graid/8/share/examples/etc/ (props changed) projects/graid/8/share/examples/kld/syscall/ (props changed) projects/graid/8/share/man/ (props changed) projects/graid/8/share/man/man1/ (props changed) projects/graid/8/share/man/man3/ (props changed) projects/graid/8/share/man/man4/ (props changed) projects/graid/8/share/man/man5/ (props changed) projects/graid/8/share/man/man7/ (props changed) projects/graid/8/share/man/man8/ (props changed) projects/graid/8/share/man/man9/ (props changed) projects/graid/8/share/misc/ (props changed) projects/graid/8/share/mk/ (props changed) projects/graid/8/share/syscons/ (props changed) projects/graid/8/share/termcap/ (props changed) projects/graid/8/share/timedef/ (props changed) projects/graid/8/share/zoneinfo/ (props changed) projects/graid/8/sys/ (props changed) projects/graid/8/sys/amd64/include/xen/ (props changed) projects/graid/8/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/8/sys/contrib/dev/acpica/ (props changed) projects/graid/8/sys/contrib/pf/ (props changed) projects/graid/8/tools/ (props changed) projects/graid/8/tools/build/mk/ (props changed) projects/graid/8/tools/build/options/ (props changed) projects/graid/8/tools/debugscripts/ (props changed) projects/graid/8/tools/kerneldoc/subsys/ (props changed) projects/graid/8/tools/regression/acct/ (props changed) projects/graid/8/tools/regression/acltools/ (props changed) projects/graid/8/tools/regression/aio/aiotest/ (props changed) projects/graid/8/tools/regression/bin/ (props changed) projects/graid/8/tools/regression/bin/date/ (props changed) projects/graid/8/tools/regression/bin/sh/ (props changed) projects/graid/8/tools/regression/fifo/ (props changed) projects/graid/8/tools/regression/geom/ (props changed) projects/graid/8/tools/regression/lib/libc/ (props changed) projects/graid/8/tools/regression/lib/msun/test-conj.t (props changed) projects/graid/8/tools/regression/mqueue/mqtest1/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest2/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest3/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest4/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest5/ (props changed) projects/graid/8/tools/regression/netinet/ (props changed) projects/graid/8/tools/regression/poll/ (props changed) projects/graid/8/tools/regression/posixsem/ (props changed) projects/graid/8/tools/regression/priv/ (props changed) projects/graid/8/tools/regression/sockets/unix_gc/ (props changed) projects/graid/8/tools/regression/usr.bin/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/sed/ (props changed) projects/graid/8/tools/regression/usr.bin/tr/ (props changed) projects/graid/8/tools/test/ (props changed) projects/graid/8/tools/tools/ (props changed) projects/graid/8/tools/tools/ath/ (props changed) projects/graid/8/tools/tools/ath/common/dumpregs.h (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/graid/8/tools/tools/mctest/ (props changed) projects/graid/8/tools/tools/nanobsd/ (props changed) projects/graid/8/tools/tools/netrate/ (props changed) projects/graid/8/tools/tools/netrate/tcpp/ (props changed) projects/graid/8/tools/tools/termcap/termcap.pl (props changed) projects/graid/8/tools/tools/umastat/ (props changed) projects/graid/8/tools/tools/vimage/ (props changed) projects/graid/8/usr.bin/ (props changed) projects/graid/8/usr.bin/apply/ (props changed) projects/graid/8/usr.bin/ar/ (props changed) projects/graid/8/usr.bin/awk/ (props changed) projects/graid/8/usr.bin/biff/ (props changed) projects/graid/8/usr.bin/c89/ (props changed) projects/graid/8/usr.bin/c99/ (props changed) projects/graid/8/usr.bin/calendar/ (props changed) projects/graid/8/usr.bin/catman/ (props changed) projects/graid/8/usr.bin/chpass/Makefile (props changed) projects/graid/8/usr.bin/column/ (props changed) projects/graid/8/usr.bin/comm/ (props changed) projects/graid/8/usr.bin/cpio/ (props changed) projects/graid/8/usr.bin/csup/ (props changed) projects/graid/8/usr.bin/du/ (props changed) projects/graid/8/usr.bin/ee/ (props changed) projects/graid/8/usr.bin/enigma/ (props changed) projects/graid/8/usr.bin/fetch/ (props changed) projects/graid/8/usr.bin/find/ (props changed) projects/graid/8/usr.bin/finger/ (props changed) projects/graid/8/usr.bin/fold/ (props changed) projects/graid/8/usr.bin/fstat/ (props changed) projects/graid/8/usr.bin/gcore/ (props changed) projects/graid/8/usr.bin/getopt/ (props changed) projects/graid/8/usr.bin/gzip/ (props changed) projects/graid/8/usr.bin/hexdump/ (props changed) projects/graid/8/usr.bin/indent/ (props changed) projects/graid/8/usr.bin/jot/ (props changed) projects/graid/8/usr.bin/kdump/ (props changed) projects/graid/8/usr.bin/killall/ (props changed) projects/graid/8/usr.bin/ktrace/ (props changed) projects/graid/8/usr.bin/ldd/ (props changed) projects/graid/8/usr.bin/lex/ (props changed) projects/graid/8/usr.bin/locale/ (props changed) projects/graid/8/usr.bin/locate/ (props changed) projects/graid/8/usr.bin/lockf/ (props changed) projects/graid/8/usr.bin/look/ (props changed) projects/graid/8/usr.bin/mail/ (props changed) projects/graid/8/usr.bin/make/ (props changed) projects/graid/8/usr.bin/makewhatis/ (props changed) projects/graid/8/usr.bin/minigzip/ (props changed) projects/graid/8/usr.bin/ncal/ (props changed) projects/graid/8/usr.bin/netstat/ (props changed) projects/graid/8/usr.bin/pathchk/ (props changed) projects/graid/8/usr.bin/perror/ (props changed) projects/graid/8/usr.bin/procstat/ (props changed) projects/graid/8/usr.bin/rpcgen/ (props changed) projects/graid/8/usr.bin/ruptime/ (props changed) projects/graid/8/usr.bin/script/ (props changed) projects/graid/8/usr.bin/sed/ (props changed) projects/graid/8/usr.bin/sockstat/ (props changed) projects/graid/8/usr.bin/split/ (props changed) projects/graid/8/usr.bin/stat/ (props changed) projects/graid/8/usr.bin/systat/ (props changed) projects/graid/8/usr.bin/tar/ (props changed) projects/graid/8/usr.bin/tftp/ (props changed) projects/graid/8/usr.bin/top/ (props changed) projects/graid/8/usr.bin/touch/ (props changed) projects/graid/8/usr.bin/tr/ (props changed) projects/graid/8/usr.bin/truss/ (props changed) projects/graid/8/usr.bin/uname/ (props changed) projects/graid/8/usr.bin/unifdef/ (props changed) projects/graid/8/usr.bin/uniq/ (props changed) projects/graid/8/usr.bin/unzip/ (props changed) projects/graid/8/usr.bin/uudecode/ (props changed) projects/graid/8/usr.bin/vmstat/ (props changed) projects/graid/8/usr.bin/w/ (props changed) projects/graid/8/usr.bin/whois/ (props changed) projects/graid/8/usr.bin/xinstall/ (props changed) projects/graid/8/usr.bin/xlint/ (props changed) projects/graid/8/usr.bin/xz/ (props changed) projects/graid/8/usr.bin/yacc/ (props changed) projects/graid/8/usr.sbin/ (props changed) projects/graid/8/usr.sbin/IPXrouted/ (props changed) projects/graid/8/usr.sbin/Makefile (props changed) projects/graid/8/usr.sbin/Makefile.inc (props changed) projects/graid/8/usr.sbin/ac/ (props changed) projects/graid/8/usr.sbin/accton/ (props changed) projects/graid/8/usr.sbin/acpi/ (props changed) projects/graid/8/usr.sbin/adduser/ (props changed) projects/graid/8/usr.sbin/amd/ (props changed) projects/graid/8/usr.sbin/ancontrol/ (props changed) projects/graid/8/usr.sbin/apm/ (props changed) projects/graid/8/usr.sbin/apmd/ (props changed) projects/graid/8/usr.sbin/arp/ (props changed) projects/graid/8/usr.sbin/asf/ (props changed) projects/graid/8/usr.sbin/audit/ (props changed) projects/graid/8/usr.sbin/auditd/ (props changed) projects/graid/8/usr.sbin/auditreduce/ (props changed) projects/graid/8/usr.sbin/authpf/ (props changed) projects/graid/8/usr.sbin/bluetooth/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidcontrol/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidd/ (props changed) projects/graid/8/usr.sbin/boot0cfg/ (props changed) projects/graid/8/usr.sbin/boot98cfg/ (props changed) projects/graid/8/usr.sbin/bootparamd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/8/usr.sbin/btxld/ (props changed) projects/graid/8/usr.sbin/burncd/ (props changed) projects/graid/8/usr.sbin/cdcontrol/ (props changed) projects/graid/8/usr.sbin/chkgrp/ (props changed) projects/graid/8/usr.sbin/chown/ (props changed) projects/graid/8/usr.sbin/chroot/ (props changed) projects/graid/8/usr.sbin/ckdist/ (props changed) projects/graid/8/usr.sbin/clear_locks/ (props changed) projects/graid/8/usr.sbin/config/ (props changed) projects/graid/8/usr.sbin/config/SMM.doc/ (props changed) projects/graid/8/usr.sbin/cpucontrol/ (props changed) projects/graid/8/usr.sbin/crashinfo/ (props changed) projects/graid/8/usr.sbin/cron/ (props changed) projects/graid/8/usr.sbin/crunch/ (props changed) projects/graid/8/usr.sbin/crunch/examples/ (props changed) projects/graid/8/usr.sbin/ctm/ (props changed) projects/graid/8/usr.sbin/cxgbtool/ (props changed) projects/graid/8/usr.sbin/daemon/ (props changed) projects/graid/8/usr.sbin/dconschat/ (props changed) projects/graid/8/usr.sbin/devinfo/ (props changed) projects/graid/8/usr.sbin/digictl/ (props changed) projects/graid/8/usr.sbin/diskinfo/ (props changed) projects/graid/8/usr.sbin/dnssec-dsfromkey/ (props changed) projects/graid/8/usr.sbin/dnssec-keyfromlabel/ (props changed) projects/graid/8/usr.sbin/dnssec-keygen/ (props changed) projects/graid/8/usr.sbin/dnssec-signzone/ (props changed) projects/graid/8/usr.sbin/dumpcis/ (props changed) projects/graid/8/usr.sbin/dumpcis/cardinfo.h (props changed) projects/graid/8/usr.sbin/dumpcis/cis.h (props changed) projects/graid/8/usr.sbin/editmap/ (props changed) projects/graid/8/usr.sbin/edquota/ (props changed) projects/graid/8/usr.sbin/eeprom/ (props changed) projects/graid/8/usr.sbin/extattr/ (props changed) projects/graid/8/usr.sbin/extattrctl/ (props changed) projects/graid/8/usr.sbin/faithd/ (props changed) projects/graid/8/usr.sbin/fdcontrol/ (props changed) projects/graid/8/usr.sbin/fdformat/ (props changed) projects/graid/8/usr.sbin/fdread/ (props changed) projects/graid/8/usr.sbin/fdwrite/ (props changed) projects/graid/8/usr.sbin/fifolog/ (props changed) projects/graid/8/usr.sbin/flowctl/ (props changed) projects/graid/8/usr.sbin/freebsd-update/ (props changed) projects/graid/8/usr.sbin/ftp-proxy/ (props changed) projects/graid/8/usr.sbin/fwcontrol/ (props changed) projects/graid/8/usr.sbin/getfmac/ (props changed) projects/graid/8/usr.sbin/getpmac/ (props changed) projects/graid/8/usr.sbin/gssd/ (props changed) projects/graid/8/usr.sbin/gstat/ (props changed) projects/graid/8/usr.sbin/i2c/ (props changed) projects/graid/8/usr.sbin/ifmcstat/ (props changed) projects/graid/8/usr.sbin/inetd/ (props changed) projects/graid/8/usr.sbin/iostat/ (props changed) projects/graid/8/usr.sbin/ip6addrctl/ (props changed) projects/graid/8/usr.sbin/ipfwpcap/ (props changed) projects/graid/8/usr.sbin/jail/ (props changed) projects/graid/8/usr.sbin/jexec/ (props changed) projects/graid/8/usr.sbin/jls/ (props changed) projects/graid/8/usr.sbin/kbdcontrol/ (props changed) projects/graid/8/usr.sbin/kbdmap/ (props changed) projects/graid/8/usr.sbin/kernbb/ (props changed) projects/graid/8/usr.sbin/keyserv/ (props changed) projects/graid/8/usr.sbin/kgmon/ (props changed) projects/graid/8/usr.sbin/kgzip/ (props changed) projects/graid/8/usr.sbin/kldxref/ (props changed) projects/graid/8/usr.sbin/lastlogin/ (props changed) projects/graid/8/usr.sbin/lmcconfig/ (props changed) projects/graid/8/usr.sbin/lpr/ (props changed) projects/graid/8/usr.sbin/lptcontrol/ (props changed) projects/graid/8/usr.sbin/mailstats/ (props changed) projects/graid/8/usr.sbin/mailwrapper/ (props changed) projects/graid/8/usr.sbin/makefs/ (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/8/usr.sbin/makefs/getid.c (props changed) projects/graid/8/usr.sbin/makemap/ (props changed) projects/graid/8/usr.sbin/manctl/ (props changed) projects/graid/8/usr.sbin/memcontrol/ (props changed) projects/graid/8/usr.sbin/mergemaster/ (props changed) projects/graid/8/usr.sbin/mfiutil/ (props changed) projects/graid/8/usr.sbin/mixer/ (props changed) projects/graid/8/usr.sbin/mld6query/ (props changed) projects/graid/8/usr.sbin/mlxcontrol/ (props changed) projects/graid/8/usr.sbin/mount_nwfs/ (props changed) projects/graid/8/usr.sbin/mount_portalfs/ (props changed) projects/graid/8/usr.sbin/mount_smbfs/ (props changed) projects/graid/8/usr.sbin/mountd/ (props changed) projects/graid/8/usr.sbin/moused/ (props changed) projects/graid/8/usr.sbin/mptable/ (props changed) projects/graid/8/usr.sbin/mptutil/ (props changed) projects/graid/8/usr.sbin/mtest/ (props changed) projects/graid/8/usr.sbin/mtree/ (props changed) projects/graid/8/usr.sbin/named/ (props changed) projects/graid/8/usr.sbin/named-checkconf/ (props changed) projects/graid/8/usr.sbin/named-checkzone/ (props changed) projects/graid/8/usr.sbin/named.reload/ (props changed) projects/graid/8/usr.sbin/ndiscvt/ (props changed) projects/graid/8/usr.sbin/ndp/ (props changed) projects/graid/8/usr.sbin/newsyslog/ (props changed) projects/graid/8/usr.sbin/nfscbd/ (props changed) projects/graid/8/usr.sbin/nfsd/ (props changed) projects/graid/8/usr.sbin/nfsdumpstate/ (props changed) projects/graid/8/usr.sbin/nfsrevoke/ (props changed) projects/graid/8/usr.sbin/nfsuserd/ (props changed) projects/graid/8/usr.sbin/ngctl/ (props changed) projects/graid/8/usr.sbin/nghook/ (props changed) projects/graid/8/usr.sbin/nologin/ (props changed) projects/graid/8/usr.sbin/nscd/ (props changed) projects/graid/8/usr.sbin/ntp/ (props changed) projects/graid/8/usr.sbin/nvram/ (props changed) projects/graid/8/usr.sbin/ofwdump/ (props changed) projects/graid/8/usr.sbin/pciconf/ (props changed) projects/graid/8/usr.sbin/periodic/ (props changed) projects/graid/8/usr.sbin/pkg_install/ (props changed) projects/graid/8/usr.sbin/pmcannotate/ (props changed) projects/graid/8/usr.sbin/pmccontrol/ (props changed) projects/graid/8/usr.sbin/pmcstat/ (props changed) projects/graid/8/usr.sbin/pnpinfo/ (props changed) projects/graid/8/usr.sbin/portsnap/ (props changed) projects/graid/8/usr.sbin/powerd/ (props changed) projects/graid/8/usr.sbin/ppp/ (props changed) projects/graid/8/usr.sbin/pppctl/ (props changed) projects/graid/8/usr.sbin/praliases/ (props changed) projects/graid/8/usr.sbin/praudit/ (props changed) projects/graid/8/usr.sbin/procctl/ (props changed) projects/graid/8/usr.sbin/pstat/ (props changed) projects/graid/8/usr.sbin/pw/ (props changed) projects/graid/8/usr.sbin/pwd_mkdb/ (props changed) projects/graid/8/usr.sbin/quot/ (props changed) projects/graid/8/usr.sbin/quotaon/ (props changed) projects/graid/8/usr.sbin/rarpd/ (props changed) projects/graid/8/usr.sbin/repquota/ (props changed) projects/graid/8/usr.sbin/rip6query/ (props changed) projects/graid/8/usr.sbin/rmt/ (props changed) projects/graid/8/usr.sbin/rndc/ (props changed) projects/graid/8/usr.sbin/rndc-confgen/ (props changed) projects/graid/8/usr.sbin/route6d/ (props changed) projects/graid/8/usr.sbin/rpc.lockd/ (props changed) projects/graid/8/usr.sbin/rpc.statd/ (props changed) projects/graid/8/usr.sbin/rpc.umntall/ (props changed) projects/graid/8/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/8/usr.sbin/rpc.ypupdated/ (props changed) projects/graid/8/usr.sbin/rpc.ypxfrd/ (props changed) projects/graid/8/usr.sbin/rpcbind/ (props changed) projects/graid/8/usr.sbin/rrenumd/ (props changed) projects/graid/8/usr.sbin/rtadvd/ (props changed) projects/graid/8/usr.sbin/rtprio/ (props changed) projects/graid/8/usr.sbin/rtsold/ (props changed) projects/graid/8/usr.sbin/rwhod/ (props changed) projects/graid/8/usr.sbin/sa/ (props changed) projects/graid/8/usr.sbin/sade/ (props changed) projects/graid/8/usr.sbin/sendmail/ (props changed) projects/graid/8/usr.sbin/service/ (props changed) projects/graid/8/usr.sbin/service/Makefile (props changed) projects/graid/8/usr.sbin/service/service.8 (props changed) projects/graid/8/usr.sbin/service/service.sh (props changed) projects/graid/8/usr.sbin/services_mkdb/ (props changed) projects/graid/8/usr.sbin/services_mkdb/Makefile (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.8 (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.c (props changed) projects/graid/8/usr.sbin/services_mkdb/uniq.c (props changed) projects/graid/8/usr.sbin/setfib/ (props changed) projects/graid/8/usr.sbin/setfmac/ (props changed) projects/graid/8/usr.sbin/setpmac/ (props changed) projects/graid/8/usr.sbin/sicontrol/ (props changed) projects/graid/8/usr.sbin/smbmsg/ (props changed) projects/graid/8/usr.sbin/snapinfo/ (props changed) projects/graid/8/usr.sbin/spkrtest/ (props changed) projects/graid/8/usr.sbin/spray/ (props changed) projects/graid/8/usr.sbin/sysinstall/ (props changed) projects/graid/8/usr.sbin/syslogd/ (props changed) projects/graid/8/usr.sbin/tcpdchk/ (props changed) projects/graid/8/usr.sbin/tcpdmatch/ (props changed) projects/graid/8/usr.sbin/tcpdrop/ (props changed) projects/graid/8/usr.sbin/tcpdump/ (props changed) projects/graid/8/usr.sbin/timed/ (props changed) projects/graid/8/usr.sbin/traceroute/ (props changed) projects/graid/8/usr.sbin/traceroute6/ (props changed) projects/graid/8/usr.sbin/trpt/ (props changed) projects/graid/8/usr.sbin/tzsetup/ (props changed) projects/graid/8/usr.sbin/uathload/ (props changed) projects/graid/8/usr.sbin/ugidfw/ (props changed) projects/graid/8/usr.sbin/uhsoctl/ (props changed) projects/graid/8/usr.sbin/usbconfig/ (props changed) projects/graid/8/usr.sbin/usbdevs/ (props changed) projects/graid/8/usr.sbin/vidcontrol/ (props changed) projects/graid/8/usr.sbin/vipw/ (props changed) projects/graid/8/usr.sbin/wake/ (props changed) projects/graid/8/usr.sbin/watch/ (props changed) projects/graid/8/usr.sbin/watchdogd/ (props changed) projects/graid/8/usr.sbin/wlandebug/ (props changed) projects/graid/8/usr.sbin/wlconfig/ (props changed) projects/graid/8/usr.sbin/wpa/ (props changed) projects/graid/8/usr.sbin/yp_mkdb/ (props changed) projects/graid/8/usr.sbin/ypbind/ (props changed) projects/graid/8/usr.sbin/yppoll/ (props changed) projects/graid/8/usr.sbin/yppush/ (props changed) projects/graid/8/usr.sbin/ypserv/ (props changed) projects/graid/8/usr.sbin/ypset/ (props changed) projects/graid/8/usr.sbin/zic/ (props changed) projects/graid/8/usr.sbin/zzz/ (props changed) Modified: projects/graid/8/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/8/sys/geom/raid/md_intel.c Tue Feb 8 14:15:46 2011 (r218441) +++ projects/graid/8/sys/geom/raid/md_intel.c Tue Feb 8 14:24:38 2011 (r218442) @@ -374,8 +374,9 @@ intel_meta_read(struct g_consumer *cp) g_free(buf); return (NULL); } - meta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK); - memcpy(meta, buf, min(meta->config_size, pp->sectorsize)); + size = meta->config_size; + meta = malloc(size, M_MD_INTEL, M_WAITOK); + memcpy(meta, buf, min(size, pp->sectorsize)); g_free(buf); /* Read all the rest, if needed. */ From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 14:26:15 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14605106566C; Tue, 8 Feb 2011 14:26:15 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 030B08FC1D; Tue, 8 Feb 2011 14:26:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18EQFTp049886; Tue, 8 Feb 2011 14:26:15 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18EQEWu049884; Tue, 8 Feb 2011 14:26:14 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081426.p18EQEWu049884@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 14:26:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218443 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac share/misc sys/geom/raid tools/tools/nanobsd usr.sbin usr.sbin/bsnmpd/modules/snmp_hos... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 14:26:15 -0000 Author: mav Date: Tue Feb 8 14:26:14 2011 New Revision: 218443 URL: http://svn.freebsd.org/changeset/base/218443 Log: MFH r218440 Modified: projects/graid/7/sys/geom/raid/md_intel.c Directory Properties: projects/graid/7/ (props changed) projects/graid/7/COPYRIGHT (props changed) projects/graid/7/Makefile (props changed) projects/graid/7/Makefile.inc1 (props changed) projects/graid/7/ObsoleteFiles.inc (props changed) projects/graid/7/UPDATING (props changed) projects/graid/7/bin/ (props changed) projects/graid/7/bin/chflags/ (props changed) projects/graid/7/bin/chio/ (props changed) projects/graid/7/bin/cp/ (props changed) projects/graid/7/bin/csh/ (props changed) projects/graid/7/bin/dd/ (props changed) projects/graid/7/bin/df/ (props changed) projects/graid/7/bin/echo/ (props changed) projects/graid/7/bin/expr/ (props changed) projects/graid/7/bin/kill/ (props changed) projects/graid/7/bin/ln/ (props changed) projects/graid/7/bin/ls/ (props changed) projects/graid/7/bin/pax/ (props changed) projects/graid/7/bin/ps/ (props changed) projects/graid/7/bin/rm/ (props changed) projects/graid/7/bin/sh/ (props changed) projects/graid/7/bin/test/ (props changed) projects/graid/7/cddl/contrib/opensolaris/ (props changed) projects/graid/7/cddl/lib/libzpool/ (props changed) projects/graid/7/contrib/bind9/ (props changed) projects/graid/7/contrib/binutils/ (props changed) projects/graid/7/contrib/bsnmp/ (props changed) projects/graid/7/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/7/contrib/cpio/ (props changed) projects/graid/7/contrib/csup/ (props changed) projects/graid/7/contrib/expat/ (props changed) projects/graid/7/contrib/gcc/ (props changed) projects/graid/7/contrib/gdb/ (props changed) projects/graid/7/contrib/gdtoa/ (props changed) projects/graid/7/contrib/groff/ (props changed) projects/graid/7/contrib/ipfilter/ (props changed) projects/graid/7/contrib/less/ (props changed) projects/graid/7/contrib/libpcap/ (props changed) projects/graid/7/contrib/ncurses/ (props changed) projects/graid/7/contrib/netcat/ (props changed) projects/graid/7/contrib/ntp/ (props changed) projects/graid/7/contrib/nvi/ (props changed) projects/graid/7/contrib/pf/ (props changed) projects/graid/7/contrib/sendmail/ (props changed) projects/graid/7/contrib/smbfs/ (props changed) projects/graid/7/contrib/tcp_wrappers/ (props changed) projects/graid/7/contrib/tcsh/ (props changed) projects/graid/7/contrib/telnet/ (props changed) projects/graid/7/contrib/top/ (props changed) projects/graid/7/contrib/traceroute/ (props changed) projects/graid/7/contrib/wpa_supplicant/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.conf (props changed) projects/graid/7/crypto/openssh/ (props changed) projects/graid/7/crypto/openssl/ (props changed) projects/graid/7/etc/ (props changed) projects/graid/7/games/factor/ (props changed) projects/graid/7/games/fortune/ (props changed) projects/graid/7/games/grdc/ (props changed) projects/graid/7/gnu/ (props changed) projects/graid/7/gnu/lib/libstdc++/ (props changed) projects/graid/7/gnu/usr.bin/ (props changed) projects/graid/7/gnu/usr.bin/cc/ (props changed) projects/graid/7/gnu/usr.bin/cpio/ (props changed) projects/graid/7/gnu/usr.bin/cvs/ (props changed) projects/graid/7/gnu/usr.bin/gdb/ (props changed) projects/graid/7/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/7/gnu/usr.bin/grep/ (props changed) projects/graid/7/gnu/usr.bin/groff/ (props changed) projects/graid/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/graid/7/gnu/usr.bin/man/ (props changed) projects/graid/7/gnu/usr.bin/sort/ (props changed) projects/graid/7/include/ (props changed) projects/graid/7/kerberos5/ (props changed) projects/graid/7/lib/ (props changed) projects/graid/7/lib/bind/ (props changed) projects/graid/7/lib/csu/ (props changed) projects/graid/7/lib/libarchive/ (props changed) projects/graid/7/lib/libbluetooth/ (props changed) projects/graid/7/lib/libc/ (props changed) projects/graid/7/lib/libc/stdtime/ (props changed) projects/graid/7/lib/libc_r/ (props changed) projects/graid/7/lib/libcam/ (props changed) projects/graid/7/lib/libdisk/ (props changed) projects/graid/7/lib/libdwarf/ (props changed) projects/graid/7/lib/libelf/ (props changed) projects/graid/7/lib/libexpat/ (props changed) projects/graid/7/lib/libfetch/ (props changed) projects/graid/7/lib/libftpio/ (props changed) projects/graid/7/lib/libgeom/ (props changed) projects/graid/7/lib/libgssapi/ (props changed) projects/graid/7/lib/libkse/ (props changed) projects/graid/7/lib/libkvm/ (props changed) projects/graid/7/lib/libmagic/ (props changed) projects/graid/7/lib/libmemstat/ (props changed) projects/graid/7/lib/libpmc/ (props changed) projects/graid/7/lib/libradius/ (props changed) projects/graid/7/lib/libsm/ (props changed) projects/graid/7/lib/libstand/ (props changed) projects/graid/7/lib/libthr/ (props changed) projects/graid/7/lib/libthread_db/ (props changed) projects/graid/7/lib/libufs/ (props changed) projects/graid/7/lib/libutil/ (props changed) projects/graid/7/lib/msun/ (props changed) projects/graid/7/libexec/ (props changed) projects/graid/7/libexec/ftpd/ (props changed) projects/graid/7/libexec/rpc.rquotad/ (props changed) projects/graid/7/libexec/rpc.rstatd/ (props changed) projects/graid/7/libexec/rtld-elf/ (props changed) projects/graid/7/libexec/tftpd/ (props changed) projects/graid/7/release/ (props changed) projects/graid/7/release/doc/ (props changed) projects/graid/7/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/7/release/picobsd/tinyware/login/ (props changed) projects/graid/7/rescue/ (props changed) projects/graid/7/sbin/ (props changed) projects/graid/7/sbin/atacontrol/ (props changed) projects/graid/7/sbin/bsdlabel/ (props changed) projects/graid/7/sbin/clri/ (props changed) projects/graid/7/sbin/ddb/ (props changed) projects/graid/7/sbin/devd/ (props changed) projects/graid/7/sbin/devfs/ (props changed) projects/graid/7/sbin/dhclient/ (props changed) projects/graid/7/sbin/dumpfs/ (props changed) projects/graid/7/sbin/fdisk/ (props changed) projects/graid/7/sbin/fdisk_pc98/ (props changed) projects/graid/7/sbin/fsck/ (props changed) projects/graid/7/sbin/fsck_ffs/ (props changed) projects/graid/7/sbin/fsck_msdosfs/ (props changed) projects/graid/7/sbin/geom/ (props changed) projects/graid/7/sbin/geom/class/label/ (props changed) projects/graid/7/sbin/geom/class/part/ (props changed) projects/graid/7/sbin/geom/class/stripe/ (props changed) projects/graid/7/sbin/geom/misc/ (props changed) projects/graid/7/sbin/growfs/ (props changed) projects/graid/7/sbin/ifconfig/ (props changed) projects/graid/7/sbin/init/ (props changed) projects/graid/7/sbin/ipf/ (props changed) projects/graid/7/sbin/ipfw/ (props changed) projects/graid/7/sbin/md5/ (props changed) projects/graid/7/sbin/mdconfig/ (props changed) projects/graid/7/sbin/mksnap_ffs/ (props changed) projects/graid/7/sbin/mount/ (props changed) projects/graid/7/sbin/mount_msdosfs/ (props changed) projects/graid/7/sbin/natd/ (props changed) projects/graid/7/sbin/newfs/ (props changed) projects/graid/7/sbin/newfs_msdos/ (props changed) projects/graid/7/sbin/ping6/ (props changed) projects/graid/7/sbin/reboot/ (props changed) projects/graid/7/sbin/restore/ (props changed) projects/graid/7/sbin/route/ (props changed) projects/graid/7/sbin/savecore/ (props changed) projects/graid/7/sbin/sconfig/ (props changed) projects/graid/7/sbin/shutdown/ (props changed) projects/graid/7/sbin/sysctl/ (props changed) projects/graid/7/sbin/tunefs/ (props changed) projects/graid/7/secure/lib/libcrypto/ (props changed) projects/graid/7/secure/lib/libssh/ (props changed) projects/graid/7/secure/lib/libssl/ (props changed) projects/graid/7/secure/libexec/sftp-server/ (props changed) projects/graid/7/secure/usr.bin/bdes/ (props changed) projects/graid/7/secure/usr.bin/openssl/ (props changed) projects/graid/7/secure/usr.bin/ssh/ (props changed) projects/graid/7/secure/usr.sbin/sshd/ (props changed) projects/graid/7/share/ (props changed) projects/graid/7/share/colldef/ (props changed) projects/graid/7/share/dict/ (props changed) projects/graid/7/share/doc/bind9/ (props changed) projects/graid/7/share/doc/papers/jail/ (props changed) projects/graid/7/share/doc/smm/01.setup/ (props changed) projects/graid/7/share/examples/ (props changed) projects/graid/7/share/man/ (props changed) projects/graid/7/share/man/man1/ (props changed) projects/graid/7/share/man/man3/ (props changed) projects/graid/7/share/man/man4/ (props changed) projects/graid/7/share/man/man5/ (props changed) projects/graid/7/share/man/man7/ (props changed) projects/graid/7/share/man/man8/ (props changed) projects/graid/7/share/man/man9/ (props changed) projects/graid/7/share/misc/ (props changed) projects/graid/7/share/misc/iso639 (props changed) projects/graid/7/share/misc/pci_vendors (props changed) projects/graid/7/share/mk/ (props changed) projects/graid/7/share/mklocale/ (props changed) projects/graid/7/share/monetdef/ (props changed) projects/graid/7/share/msgdef/ (props changed) projects/graid/7/share/numericdef/ (props changed) projects/graid/7/share/sendmail/ (props changed) projects/graid/7/share/syscons/ (props changed) projects/graid/7/share/syscons/keymaps/ (props changed) projects/graid/7/share/termcap/ (props changed) projects/graid/7/share/timedef/ (props changed) projects/graid/7/share/zoneinfo/ (props changed) projects/graid/7/sys/ (props changed) projects/graid/7/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/7/sys/contrib/dev/acpica/ (props changed) projects/graid/7/sys/contrib/pf/ (props changed) projects/graid/7/tools/ (props changed) projects/graid/7/tools/build/ (props changed) projects/graid/7/tools/build/options/ (props changed) projects/graid/7/tools/debugscripts/ (props changed) projects/graid/7/tools/regression/acct/ (props changed) projects/graid/7/tools/regression/atm/ (props changed) projects/graid/7/tools/regression/bin/ (props changed) projects/graid/7/tools/regression/bin/date/ (props changed) projects/graid/7/tools/regression/bin/sh/ (props changed) projects/graid/7/tools/regression/file/ (props changed) projects/graid/7/tools/regression/file/flock/ (props changed) projects/graid/7/tools/regression/lib/libc/ (props changed) projects/graid/7/tools/regression/usr.bin/ (props changed) projects/graid/7/tools/regression/usr.bin/jot/ (props changed) projects/graid/7/tools/regression/usr.bin/tr/ (props changed) projects/graid/7/tools/sched/ (props changed) projects/graid/7/tools/test/ (props changed) projects/graid/7/tools/tools/ (props changed) projects/graid/7/tools/tools/aac/ (props changed) projects/graid/7/tools/tools/crypto/ (props changed) projects/graid/7/tools/tools/editing/ (props changed) projects/graid/7/tools/tools/nanobsd/ (props changed) projects/graid/7/tools/tools/nanobsd/FlashDevice.sub (props changed) projects/graid/7/tools/tools/nanobsd/nanobsd.sh (props changed) projects/graid/7/tools/tools/netrate/ (props changed) projects/graid/7/tools/tools/umastat/ (props changed) projects/graid/7/tools/tools/usb/ (props changed) projects/graid/7/usr.bin/ (props changed) projects/graid/7/usr.bin/basename/ (props changed) projects/graid/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) projects/graid/7/usr.bin/calendar/ (props changed) projects/graid/7/usr.bin/catman/ (props changed) projects/graid/7/usr.bin/cksum/ (props changed) projects/graid/7/usr.bin/comm/ (props changed) projects/graid/7/usr.bin/cpuset/ (props changed) projects/graid/7/usr.bin/csup/ (props changed) projects/graid/7/usr.bin/dirname/ (props changed) projects/graid/7/usr.bin/du/ (props changed) projects/graid/7/usr.bin/fetch/ (props changed) projects/graid/7/usr.bin/file/ (props changed) projects/graid/7/usr.bin/find/ (props changed) projects/graid/7/usr.bin/finger/ (props changed) projects/graid/7/usr.bin/fold/ (props changed) projects/graid/7/usr.bin/fstat/ (props changed) projects/graid/7/usr.bin/gcore/ (props changed) projects/graid/7/usr.bin/gprof/ (props changed) projects/graid/7/usr.bin/gzip/ (props changed) projects/graid/7/usr.bin/hexdump/ (props changed) projects/graid/7/usr.bin/id/ (props changed) projects/graid/7/usr.bin/indent/ (props changed) projects/graid/7/usr.bin/ipcrm/ (props changed) projects/graid/7/usr.bin/ipcs/ (props changed) projects/graid/7/usr.bin/jot/ (props changed) projects/graid/7/usr.bin/kdump/ (props changed) projects/graid/7/usr.bin/ktrace/ (props changed) projects/graid/7/usr.bin/ldd/ (props changed) projects/graid/7/usr.bin/less/ (props changed) projects/graid/7/usr.bin/locate/ (props changed) projects/graid/7/usr.bin/lockf/ (props changed) projects/graid/7/usr.bin/logger/ (props changed) projects/graid/7/usr.bin/make/ (props changed) projects/graid/7/usr.bin/ncal/ (props changed) projects/graid/7/usr.bin/netstat/ (props changed) projects/graid/7/usr.bin/newgrp/ (props changed) projects/graid/7/usr.bin/nsupdate/ (props changed) projects/graid/7/usr.bin/pkill/ (props changed) projects/graid/7/usr.bin/procstat/ (props changed) projects/graid/7/usr.bin/quota/ (props changed) projects/graid/7/usr.bin/rpcgen/ (props changed) projects/graid/7/usr.bin/ruptime/ (props changed) projects/graid/7/usr.bin/script/ (props changed) projects/graid/7/usr.bin/sed/ (props changed) projects/graid/7/usr.bin/shar/ (props changed) projects/graid/7/usr.bin/sockstat/ (props changed) projects/graid/7/usr.bin/stat/ (props changed) projects/graid/7/usr.bin/su/ (props changed) projects/graid/7/usr.bin/systat/ (props changed) projects/graid/7/usr.bin/tail/ (props changed) projects/graid/7/usr.bin/tar/ (props changed) projects/graid/7/usr.bin/tftp/ (props changed) projects/graid/7/usr.bin/tip/ (props changed) projects/graid/7/usr.bin/top/ (props changed) projects/graid/7/usr.bin/truncate/ (props changed) projects/graid/7/usr.bin/truss/ (props changed) projects/graid/7/usr.bin/uname/ (props changed) projects/graid/7/usr.bin/unifdef/ (props changed) projects/graid/7/usr.bin/units/ (props changed) projects/graid/7/usr.bin/uudecode/ (props changed) projects/graid/7/usr.bin/vmstat/ (props changed) projects/graid/7/usr.bin/w/ (props changed) projects/graid/7/usr.bin/wc/ (props changed) projects/graid/7/usr.bin/whereis/ (props changed) projects/graid/7/usr.bin/whois/ (props changed) projects/graid/7/usr.bin/window/ (props changed) projects/graid/7/usr.bin/xargs/ (props changed) projects/graid/7/usr.bin/ypcat/ (props changed) projects/graid/7/usr.bin/ypmatch/ (props changed) projects/graid/7/usr.bin/ypwhich/ (props changed) projects/graid/7/usr.sbin/ (props changed) projects/graid/7/usr.sbin/Makefile (props changed) projects/graid/7/usr.sbin/acpi/ (props changed) projects/graid/7/usr.sbin/adduser/ (props changed) projects/graid/7/usr.sbin/arp/ (props changed) projects/graid/7/usr.sbin/bluetooth/ (props changed) projects/graid/7/usr.sbin/bluetooth/btpand/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcsecd/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcseriald/ (props changed) projects/graid/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) projects/graid/7/usr.sbin/bluetooth/sdpd/ (props changed) projects/graid/7/usr.sbin/boot0cfg/ (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/graid/7/usr.sbin/burncd/ (props changed) projects/graid/7/usr.sbin/cdcontrol/ (props changed) projects/graid/7/usr.sbin/chown/ (props changed) projects/graid/7/usr.sbin/chroot/ (props changed) projects/graid/7/usr.sbin/config/ (props changed) projects/graid/7/usr.sbin/config/SMM.doc/ (props changed) projects/graid/7/usr.sbin/cpucontrol/ (props changed) projects/graid/7/usr.sbin/crashinfo/ (props changed) projects/graid/7/usr.sbin/cron/ (props changed) projects/graid/7/usr.sbin/cron/cron/ (props changed) projects/graid/7/usr.sbin/crunch/ (props changed) projects/graid/7/usr.sbin/cxgbtool/ (props changed) projects/graid/7/usr.sbin/eeprom/ (props changed) projects/graid/7/usr.sbin/extattr/ (props changed) projects/graid/7/usr.sbin/faithd/ (props changed) projects/graid/7/usr.sbin/fdcontrol/ (props changed) projects/graid/7/usr.sbin/fdformat/ (props changed) projects/graid/7/usr.sbin/fdread/ (props changed) projects/graid/7/usr.sbin/fdwrite/ (props changed) projects/graid/7/usr.sbin/fifolog/ (props changed) projects/graid/7/usr.sbin/freebsd-update/ (props changed) projects/graid/7/usr.sbin/fwcontrol/ (props changed) projects/graid/7/usr.sbin/gstat/ (props changed) projects/graid/7/usr.sbin/iostat/ (props changed) projects/graid/7/usr.sbin/jail/ (props changed) projects/graid/7/usr.sbin/jexec/ (props changed) projects/graid/7/usr.sbin/jls/ (props changed) projects/graid/7/usr.sbin/lpr/ (props changed) projects/graid/7/usr.sbin/mailwrapper/ (props changed) projects/graid/7/usr.sbin/makefs/ (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/7/usr.sbin/makefs/getid.c (props changed) projects/graid/7/usr.sbin/mergemaster/ (props changed) projects/graid/7/usr.sbin/mfiutil/ (props changed) projects/graid/7/usr.sbin/mountd/ (props changed) projects/graid/7/usr.sbin/mptutil/ (props changed) projects/graid/7/usr.sbin/mtree/ (props changed) projects/graid/7/usr.sbin/ndiscvt/ (props changed) projects/graid/7/usr.sbin/ndp/ (props changed) projects/graid/7/usr.sbin/newsyslog/ (props changed) projects/graid/7/usr.sbin/nscd/ (props changed) projects/graid/7/usr.sbin/ntp/ (props changed) projects/graid/7/usr.sbin/pciconf/ (props changed) projects/graid/7/usr.sbin/pkg_install/ (props changed) projects/graid/7/usr.sbin/pmccontrol/ (props changed) projects/graid/7/usr.sbin/pmcstat/ (props changed) projects/graid/7/usr.sbin/portsnap/ (props changed) projects/graid/7/usr.sbin/powerd/ (props changed) projects/graid/7/usr.sbin/ppp/ (props changed) projects/graid/7/usr.sbin/pstat/ (props changed) projects/graid/7/usr.sbin/pw/ (props changed) projects/graid/7/usr.sbin/pwd_mkdb/ (props changed) projects/graid/7/usr.sbin/rpc.lockd/ (props changed) projects/graid/7/usr.sbin/rpc.statd/ (props changed) projects/graid/7/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/7/usr.sbin/rtadvd/ (props changed) projects/graid/7/usr.sbin/rtsold/ (props changed) projects/graid/7/usr.sbin/sade/ (props changed) projects/graid/7/usr.sbin/service/ (props changed) projects/graid/7/usr.sbin/setfib/ (props changed) projects/graid/7/usr.sbin/sysinstall/ (props changed) projects/graid/7/usr.sbin/syslogd/ (props changed) projects/graid/7/usr.sbin/traceroute/ (props changed) projects/graid/7/usr.sbin/traceroute6/ (props changed) projects/graid/7/usr.sbin/tzsetup/ (props changed) projects/graid/7/usr.sbin/ugidfw/ (props changed) projects/graid/7/usr.sbin/wpa/wpa_supplicant/ (props changed) projects/graid/7/usr.sbin/ypserv/ (props changed) projects/graid/7/usr.sbin/zic/ (props changed) Modified: projects/graid/7/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/7/sys/geom/raid/md_intel.c Tue Feb 8 14:24:38 2011 (r218442) +++ projects/graid/7/sys/geom/raid/md_intel.c Tue Feb 8 14:26:14 2011 (r218443) @@ -374,8 +374,9 @@ intel_meta_read(struct g_consumer *cp) g_free(buf); return (NULL); } - meta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK); - memcpy(meta, buf, min(meta->config_size, pp->sectorsize)); + size = meta->config_size; + meta = malloc(size, M_MD_INTEL, M_WAITOK); + memcpy(meta, buf, min(size, pp->sectorsize)); g_free(buf); /* Read all the rest, if needed. */ From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 15:57:05 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08C401065674; Tue, 8 Feb 2011 15:57:05 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ECD2B8FC17; Tue, 8 Feb 2011 15:57:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18Fv4JJ051954; Tue, 8 Feb 2011 15:57:04 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18Fv4XV051952; Tue, 8 Feb 2011 15:57:04 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081557.p18Fv4XV051952@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 15:57:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218446 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 15:57:05 -0000 Author: mav Date: Tue Feb 8 15:57:04 2011 New Revision: 218446 URL: http://svn.freebsd.org/changeset/base/218446 Log: Since last rebuild refactoring we should be able to support RAID1 configurations with more then two disks. When needed, rebuild runs sequentially for each disk, handling one disk at a time. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 15:05:47 2011 (r218445) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 15:57:04 2011 (r218446) @@ -151,8 +151,7 @@ g_raid_tr_taste_raid1(struct g_raid_tr_o trs = (struct g_raid_tr_raid1_object *)tr; if (tr->tro_volume->v_raid_level != G_RAID_VOLUME_RL_RAID1 || - tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE || - tr->tro_volume->v_disks_count != 2) + tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE) return (G_RAID_TR_TASTE_FAIL); trs->trso_starting = 1; return (G_RAID_TR_TASTE_SUCCEED); From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 19:28:14 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 49A38106564A; Tue, 8 Feb 2011 19:28:14 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1DDF18FC0C; Tue, 8 Feb 2011 19:28:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18JSElt057049; Tue, 8 Feb 2011 19:28:14 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18JSEar057047; Tue, 8 Feb 2011 19:28:14 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081928.p18JSEar057047@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 19:28:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218449 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 19:28:14 -0000 Author: mav Date: Tue Feb 8 19:28:13 2011 New Revision: 218449 URL: http://svn.freebsd.org/changeset/base/218449 Log: Make sure that the disk is present. Generally it is a task of transformation layers to not send requests to absent disks, but it is better to be safe and report non-fatal error then panic. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Tue Feb 8 18:31:28 2011 (r218448) +++ projects/graid/head/sys/geom/raid/g_raid.c Tue Feb 8 19:28:13 2011 (r218449) @@ -1072,11 +1072,35 @@ void g_raid_subdisk_iostart(struct g_raid_subdisk *sd, struct bio *bp) { struct g_consumer *cp; + struct g_raid_disk *disk; - cp = sd->sd_disk->d_consumer; - bp->bio_from = sd->sd_disk->d_consumer; - bp->bio_to = sd->sd_disk->d_consumer->provider; bp->bio_caller1 = sd; + + /* + * Make sure that the disk is present. Generally it is a task of + * transformation layers to not send requests to absent disks, but + * it is better to be safe and report situation then sorry. + */ + if (sd->sd_disk == NULL) { + G_RAID_LOGREQ(0, bp, "Warning! I/O request to an absent disk!"); +nodisk: + bp->bio_from = NULL; + bp->bio_to = NULL; + bp->bio_error = ENXIO; + g_raid_disk_done(bp); + return; + } + disk = sd->sd_disk; + if (disk->d_state != G_RAID_DISK_S_ACTIVE && + disk->d_state != G_RAID_DISK_S_FAILED) { + G_RAID_LOGREQ(0, bp, "Warning! I/O request to a disk in a " + "wrong state (%s)!", g_raid_disk_state2str(disk->d_state)); + goto nodisk; + } + + cp = disk->d_consumer; + bp->bio_from = cp; + bp->bio_to = cp->provider; cp->index++; if (dumping) { G_RAID_LOGREQ(3, bp, "Sending dumping request."); @@ -1113,8 +1137,10 @@ static void g_raid_disk_done(struct bio *bp) { struct g_raid_softc *sc; + struct g_raid_subdisk *sd; - sc = bp->bio_from->geom->softc; + sd = bp->bio_caller1; + sc = sd->sd_softc; mtx_lock(&sc->sc_queue_mtx); bioq_disksort(&sc->sc_queue, bp); mtx_unlock(&sc->sc_queue_mtx); @@ -1136,12 +1162,14 @@ g_raid_disk_done_request(struct bio *bp) sd = bp->bio_caller1; sc = sd->sd_softc; vol = sd->sd_volume; - bp->bio_from->index--; - disk = bp->bio_from->private; - if (disk == NULL) { - g_topology_lock(); - g_raid_kill_consumer(sc, bp->bio_from); - g_topology_unlock(); + if (bp->bio_from != NULL) { + bp->bio_from->index--; + disk = bp->bio_from->private; + if (disk == NULL) { + g_topology_lock(); + g_raid_kill_consumer(sc, bp->bio_from); + g_topology_unlock(); + } } bp->bio_offset -= sd->sd_offset; @@ -1225,8 +1253,8 @@ process: if (ep != NULL) g_raid_handle_event(sc, ep); if (bp != NULL) { - if (bp->bio_from == NULL || - bp->bio_from->geom != sc->sc_geom) + if (bp->bio_to != NULL && + bp->bio_to->geom == sc->sc_geom) g_raid_start_request(bp); else g_raid_disk_done_request(bp); From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 19:36:23 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D6189106566C; Tue, 8 Feb 2011 19:36:23 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C4F168FC1D; Tue, 8 Feb 2011 19:36:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18JaNpL057292; Tue, 8 Feb 2011 19:36:23 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18JaNdt057290; Tue, 8 Feb 2011 19:36:23 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081936.p18JaNdt057290@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 19:36:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218450 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 19:36:23 -0000 Author: mav Date: Tue Feb 8 19:36:23 2011 New Revision: 218450 URL: http://svn.freebsd.org/changeset/base/218450 Log: Do not try to fail disk on rebuild write error if rebuild was aborted. If disk disappeared/replaced during write operation then attempt to fail it may target the innocent new disk or even placeholder. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 19:28:13 2011 (r218449) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 19:36:23 2011 (r218450) @@ -683,7 +683,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ nsd = trs->trso_failed_sd; if (bp->bio_error != 0 || trs->trso_flags & TR_RAID1_F_ABORT) { - if (bp->bio_error != 0) { + if ((trs->trso_flags & + TR_RAID1_F_ABORT) == 0) { g_raid_fail_disk(sd->sd_softc, nsd, nsd->sd_disk); } From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 19:49:32 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7764B106564A; Tue, 8 Feb 2011 19:49:32 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2B4EA8FC1A; Tue, 8 Feb 2011 19:49:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18JnWcm057623; Tue, 8 Feb 2011 19:49:32 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18JnWan057620; Tue, 8 Feb 2011 19:49:32 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081949.p18JnWan057620@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 19:49:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218451 - in projects/graid/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib lib/liblzma lib/librtld_db lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/sched ... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 19:49:32 -0000 Author: mav Date: Tue Feb 8 19:49:31 2011 New Revision: 218451 URL: http://svn.freebsd.org/changeset/base/218451 Log: MFH r218446, r218449, r218450 Modified: projects/graid/8/sys/geom/raid/g_raid.c projects/graid/8/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/8/ (props changed) projects/graid/8/COPYRIGHT (props changed) projects/graid/8/LOCKS (props changed) projects/graid/8/MAINTAINERS (props changed) projects/graid/8/Makefile (props changed) projects/graid/8/Makefile.inc1 (props changed) projects/graid/8/ObsoleteFiles.inc (props changed) projects/graid/8/README (props changed) projects/graid/8/UPDATING (props changed) projects/graid/8/bin/ (props changed) projects/graid/8/bin/chio/ (props changed) projects/graid/8/bin/chmod/ (props changed) projects/graid/8/bin/cp/ (props changed) projects/graid/8/bin/csh/ (props changed) projects/graid/8/bin/date/ (props changed) projects/graid/8/bin/echo/ (props changed) projects/graid/8/bin/expr/ (props changed) projects/graid/8/bin/getfacl/ (props changed) projects/graid/8/bin/kill/ (props changed) projects/graid/8/bin/ln/ (props changed) projects/graid/8/bin/ls/ (props changed) projects/graid/8/bin/mv/ (props changed) projects/graid/8/bin/pax/ (props changed) projects/graid/8/bin/pkill/ (props changed) projects/graid/8/bin/ps/ (props changed) projects/graid/8/bin/pwait/ (props changed) projects/graid/8/bin/setfacl/ (props changed) projects/graid/8/bin/sh/ (props changed) projects/graid/8/bin/sleep/ (props changed) projects/graid/8/bin/test/ (props changed) projects/graid/8/cddl/ (props changed) projects/graid/8/cddl/compat/opensolaris/ (props changed) projects/graid/8/cddl/contrib/opensolaris/ (props changed) projects/graid/8/cddl/lib/ (props changed) projects/graid/8/cddl/lib/libnvpair/ (props changed) projects/graid/8/cddl/lib/libzpool/ (props changed) projects/graid/8/cddl/usr.bin/ (props changed) projects/graid/8/cddl/usr.sbin/ (props changed) projects/graid/8/contrib/ (props changed) projects/graid/8/contrib/amd/ (props changed) projects/graid/8/contrib/bc/ (props changed) projects/graid/8/contrib/bind9/ (props changed) projects/graid/8/contrib/binutils/ (props changed) projects/graid/8/contrib/bsnmp/ (props changed) projects/graid/8/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/8/contrib/bzip2/ (props changed) projects/graid/8/contrib/com_err/ (props changed) projects/graid/8/contrib/csup/ (props changed) projects/graid/8/contrib/cvs/ (props changed) projects/graid/8/contrib/diff/ (props changed) projects/graid/8/contrib/ee/ (props changed) projects/graid/8/contrib/expat/ (props changed) projects/graid/8/contrib/file/ (props changed) projects/graid/8/contrib/gcc/ (props changed) projects/graid/8/contrib/gcclibs/ (props changed) projects/graid/8/contrib/gdb/ (props changed) projects/graid/8/contrib/gdtoa/ (props changed) projects/graid/8/contrib/gnu-sort/ (props changed) projects/graid/8/contrib/gperf/ (props changed) projects/graid/8/contrib/groff/ (props changed) projects/graid/8/contrib/ipfilter/ (props changed) projects/graid/8/contrib/less/ (props changed) projects/graid/8/contrib/libbegemot/ (props changed) projects/graid/8/contrib/libf2c/ (props changed) projects/graid/8/contrib/libobjc/ (props changed) projects/graid/8/contrib/libpcap/ (props changed) projects/graid/8/contrib/libreadline/ (props changed) projects/graid/8/contrib/libstdc++/ (props changed) projects/graid/8/contrib/lukemftp/ (props changed) projects/graid/8/contrib/lukemftpd/ (props changed) projects/graid/8/contrib/ncurses/ (props changed) projects/graid/8/contrib/netcat/ (props changed) projects/graid/8/contrib/ngatm/ (props changed) projects/graid/8/contrib/ntp/ (props changed) projects/graid/8/contrib/nvi/ (props changed) projects/graid/8/contrib/one-true-awk/ (props changed) projects/graid/8/contrib/openbsm/ (props changed) projects/graid/8/contrib/openpam/ (props changed) projects/graid/8/contrib/opie/ (props changed) projects/graid/8/contrib/pam_modules/ (props changed) projects/graid/8/contrib/pf/ (props changed) projects/graid/8/contrib/pnpinfo/ (props changed) projects/graid/8/contrib/sendmail/ (props changed) projects/graid/8/contrib/smbfs/ (props changed) projects/graid/8/contrib/tcp_wrappers/ (props changed) projects/graid/8/contrib/tcpdump/ (props changed) projects/graid/8/contrib/tcsh/ (props changed) projects/graid/8/contrib/telnet/ (props changed) projects/graid/8/contrib/texinfo/ (props changed) projects/graid/8/contrib/top/ (props changed) projects/graid/8/contrib/top/install-sh (props changed) projects/graid/8/contrib/traceroute/ (props changed) projects/graid/8/contrib/wpa/ (props changed) projects/graid/8/contrib/xz/ (props changed) projects/graid/8/contrib/xz/AUTHORS (props changed) projects/graid/8/contrib/xz/COPYING (props changed) projects/graid/8/contrib/xz/ChangeLog (props changed) projects/graid/8/contrib/xz/FREEBSD-Xlist (props changed) projects/graid/8/contrib/xz/FREEBSD-upgrade (props changed) projects/graid/8/contrib/xz/README (props changed) projects/graid/8/contrib/xz/THANKS (props changed) projects/graid/8/contrib/xz/TODO (props changed) projects/graid/8/contrib/xz/po/ (props changed) projects/graid/8/contrib/xz/src/ (props changed) projects/graid/8/crypto/ (props changed) projects/graid/8/crypto/heimdal/ (props changed) projects/graid/8/crypto/openssh/ (props changed) projects/graid/8/crypto/openssl/ (props changed) projects/graid/8/etc/ (props changed) projects/graid/8/games/ (props changed) projects/graid/8/games/factor/ (props changed) projects/graid/8/games/fortune/ (props changed) projects/graid/8/games/grdc/ (props changed) projects/graid/8/games/pom/ (props changed) projects/graid/8/gnu/ (props changed) projects/graid/8/gnu/lib/csu/ (props changed) projects/graid/8/gnu/lib/libgcc/ (props changed) projects/graid/8/gnu/lib/libstdc++/ (props changed) projects/graid/8/gnu/usr.bin/ (props changed) projects/graid/8/gnu/usr.bin/Makefile (props changed) projects/graid/8/gnu/usr.bin/dialog/ (props changed) projects/graid/8/gnu/usr.bin/gdb/ (props changed) projects/graid/8/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/8/gnu/usr.bin/groff/ (props changed) projects/graid/8/gnu/usr.bin/patch/ (props changed) projects/graid/8/include/ (props changed) projects/graid/8/kerberos5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_krb5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_spnego/ (props changed) projects/graid/8/kerberos5/usr.bin/kdestroy/ (props changed) projects/graid/8/kerberos5/usr.bin/kpasswd/ (props changed) projects/graid/8/lib/ (props changed) projects/graid/8/lib/Makefile (props changed) projects/graid/8/lib/Makefile.inc (props changed) projects/graid/8/lib/bind/ (props changed) projects/graid/8/lib/csu/ (props changed) projects/graid/8/lib/libalias/ (props changed) projects/graid/8/lib/libarchive/ (props changed) projects/graid/8/lib/libauditd/ (props changed) projects/graid/8/lib/libautofs/ (props changed) projects/graid/8/lib/libbegemot/ (props changed) projects/graid/8/lib/libbluetooth/ (props changed) projects/graid/8/lib/libbsm/ (props changed) projects/graid/8/lib/libbsnmp/ (props changed) projects/graid/8/lib/libbz2/ (props changed) projects/graid/8/lib/libc/ (props changed) projects/graid/8/lib/libc/stdtime/ (props changed) projects/graid/8/lib/libc_r/ (props changed) projects/graid/8/lib/libcalendar/ (props changed) projects/graid/8/lib/libcam/ (props changed) projects/graid/8/lib/libcom_err/ (props changed) projects/graid/8/lib/libcompat/ (props changed) projects/graid/8/lib/libcrypt/ (props changed) projects/graid/8/lib/libdevinfo/ (props changed) projects/graid/8/lib/libdevstat/ (props changed) projects/graid/8/lib/libdisk/ (props changed) projects/graid/8/lib/libdwarf/ (props changed) projects/graid/8/lib/libedit/ (props changed) projects/graid/8/lib/libelf/ (props changed) projects/graid/8/lib/libexpat/ (props changed) projects/graid/8/lib/libfetch/ (props changed) projects/graid/8/lib/libftpio/ (props changed) projects/graid/8/lib/libgeom/ (props changed) projects/graid/8/lib/libgpib/ (props changed) projects/graid/8/lib/libgssapi/ (props changed) projects/graid/8/lib/libipsec/ (props changed) projects/graid/8/lib/libipx/ (props changed) projects/graid/8/lib/libjail/ (props changed) projects/graid/8/lib/libkiconv/ (props changed) projects/graid/8/lib/libkse/ (props changed) projects/graid/8/lib/libkvm/ (props changed) projects/graid/8/lib/liblzma/ (props changed) projects/graid/8/lib/liblzma/Makefile (props changed) projects/graid/8/lib/liblzma/Symbol.map (props changed) projects/graid/8/lib/liblzma/Versions.def (props changed) projects/graid/8/lib/liblzma/config.h (props changed) projects/graid/8/lib/libmagic/ (props changed) projects/graid/8/lib/libmd/ (props changed) projects/graid/8/lib/libmemstat/ (props changed) projects/graid/8/lib/libmilter/ (props changed) projects/graid/8/lib/libmp/ (props changed) projects/graid/8/lib/libncp/ (props changed) projects/graid/8/lib/libnetgraph/ (props changed) projects/graid/8/lib/libngatm/ (props changed) projects/graid/8/lib/libopie/ (props changed) projects/graid/8/lib/libpam/ (props changed) projects/graid/8/lib/libpcap/ (props changed) projects/graid/8/lib/libpmc/ (props changed) projects/graid/8/lib/libproc/ (props changed) projects/graid/8/lib/libradius/ (props changed) projects/graid/8/lib/librpcsec_gss/ (props changed) projects/graid/8/lib/librpcsvc/ (props changed) projects/graid/8/lib/librt/ (props changed) projects/graid/8/lib/librtld_db/ (props changed) projects/graid/8/lib/librtld_db/Makefile (props changed) projects/graid/8/lib/librtld_db/librtld_db.3 (props changed) projects/graid/8/lib/librtld_db/rtld_db.c (props changed) projects/graid/8/lib/librtld_db/rtld_db.h (props changed) projects/graid/8/lib/libsbuf/ (props changed) projects/graid/8/lib/libsdp/ (props changed) projects/graid/8/lib/libsm/ (props changed) projects/graid/8/lib/libsmb/ (props changed) projects/graid/8/lib/libsmdb/ (props changed) projects/graid/8/lib/libsmutil/ (props changed) projects/graid/8/lib/libstand/ (props changed) projects/graid/8/lib/libtacplus/ (props changed) projects/graid/8/lib/libtelnet/ (props changed) projects/graid/8/lib/libthr/ (props changed) projects/graid/8/lib/libthread_db/ (props changed) projects/graid/8/lib/libufs/ (props changed) projects/graid/8/lib/libugidfw/ (props changed) projects/graid/8/lib/libusb/ (props changed) projects/graid/8/lib/libusb/usb.h (props changed) projects/graid/8/lib/libusbhid/ (props changed) projects/graid/8/lib/libutil/ (props changed) projects/graid/8/lib/libvgl/ (props changed) projects/graid/8/lib/libwrap/ (props changed) projects/graid/8/lib/liby/ (props changed) projects/graid/8/lib/libypclnt/ (props changed) projects/graid/8/lib/libz/ (props changed) projects/graid/8/lib/libz/contrib/ (props changed) projects/graid/8/lib/msun/ (props changed) projects/graid/8/lib/ncurses/ (props changed) projects/graid/8/libexec/ (props changed) projects/graid/8/libexec/ftpd/ (props changed) projects/graid/8/libexec/rtld-elf/ (props changed) projects/graid/8/libexec/tftpd/ (props changed) projects/graid/8/release/ (props changed) projects/graid/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/8/release/picobsd/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed) projects/graid/8/release/picobsd/qemu/ (props changed) projects/graid/8/release/picobsd/tinyware/login/ (props changed) projects/graid/8/release/powerpc/ (props changed) projects/graid/8/rescue/ (props changed) projects/graid/8/sbin/ (props changed) projects/graid/8/sbin/atacontrol/ (props changed) projects/graid/8/sbin/bsdlabel/ (props changed) projects/graid/8/sbin/camcontrol/ (props changed) projects/graid/8/sbin/ddb/ (props changed) projects/graid/8/sbin/devd/ (props changed) projects/graid/8/sbin/devfs/ (props changed) projects/graid/8/sbin/dhclient/ (props changed) projects/graid/8/sbin/dump/ (props changed) projects/graid/8/sbin/dumpfs/ (props changed) projects/graid/8/sbin/fdisk/ (props changed) projects/graid/8/sbin/fsck/ (props changed) projects/graid/8/sbin/fsck_ffs/ (props changed) projects/graid/8/sbin/fsck_msdosfs/ (props changed) projects/graid/8/sbin/fsirand/ (props changed) projects/graid/8/sbin/geom/ (props changed) projects/graid/8/sbin/geom/class/multipath/ (props changed) projects/graid/8/sbin/geom/class/part/ (props changed) projects/graid/8/sbin/geom/class/sched/gsched.8 (props changed) projects/graid/8/sbin/geom/class/stripe/ (props changed) projects/graid/8/sbin/ggate/ (props changed) projects/graid/8/sbin/growfs/ (props changed) projects/graid/8/sbin/hastctl/ (props changed) projects/graid/8/sbin/hastd/ (props changed) projects/graid/8/sbin/ifconfig/ (props changed) projects/graid/8/sbin/ipfw/ (props changed) projects/graid/8/sbin/iscontrol/ (props changed) projects/graid/8/sbin/kldload/ (props changed) projects/graid/8/sbin/kldstat/ (props changed) projects/graid/8/sbin/mdconfig/ (props changed) projects/graid/8/sbin/mksnap_ffs/ (props changed) projects/graid/8/sbin/mount/ (props changed) projects/graid/8/sbin/mount_cd9660/ (props changed) projects/graid/8/sbin/mount_msdosfs/ (props changed) projects/graid/8/sbin/mount_nfs/ (props changed) projects/graid/8/sbin/natd/ (props changed) projects/graid/8/sbin/newfs/ (props changed) projects/graid/8/sbin/newfs_msdos/ (props changed) projects/graid/8/sbin/ping6/ (props changed) projects/graid/8/sbin/reboot/ (props changed) projects/graid/8/sbin/restore/ (props changed) projects/graid/8/sbin/route/ (props changed) projects/graid/8/sbin/routed/ (props changed) projects/graid/8/sbin/setkey/ (props changed) projects/graid/8/sbin/spppcontrol/ (props changed) projects/graid/8/sbin/sysctl/ (props changed) projects/graid/8/sbin/tunefs/ (props changed) projects/graid/8/sbin/umount/ (props changed) projects/graid/8/secure/ (props changed) projects/graid/8/secure/lib/libcrypto/ (props changed) projects/graid/8/secure/lib/libssl/ (props changed) projects/graid/8/secure/usr.bin/bdes/ (props changed) projects/graid/8/secure/usr.bin/openssl/ (props changed) projects/graid/8/share/ (props changed) projects/graid/8/share/dict/ (props changed) projects/graid/8/share/doc/papers/jail/ (props changed) projects/graid/8/share/doc/smm/01.setup/ (props changed) projects/graid/8/share/examples/ (props changed) projects/graid/8/share/examples/etc/ (props changed) projects/graid/8/share/examples/kld/syscall/ (props changed) projects/graid/8/share/man/ (props changed) projects/graid/8/share/man/man1/ (props changed) projects/graid/8/share/man/man3/ (props changed) projects/graid/8/share/man/man4/ (props changed) projects/graid/8/share/man/man5/ (props changed) projects/graid/8/share/man/man7/ (props changed) projects/graid/8/share/man/man8/ (props changed) projects/graid/8/share/man/man9/ (props changed) projects/graid/8/share/misc/ (props changed) projects/graid/8/share/mk/ (props changed) projects/graid/8/share/syscons/ (props changed) projects/graid/8/share/termcap/ (props changed) projects/graid/8/share/timedef/ (props changed) projects/graid/8/share/zoneinfo/ (props changed) projects/graid/8/sys/ (props changed) projects/graid/8/sys/amd64/include/xen/ (props changed) projects/graid/8/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/8/sys/contrib/dev/acpica/ (props changed) projects/graid/8/sys/contrib/pf/ (props changed) projects/graid/8/tools/ (props changed) projects/graid/8/tools/build/mk/ (props changed) projects/graid/8/tools/build/options/ (props changed) projects/graid/8/tools/debugscripts/ (props changed) projects/graid/8/tools/kerneldoc/subsys/ (props changed) projects/graid/8/tools/regression/acct/ (props changed) projects/graid/8/tools/regression/acltools/ (props changed) projects/graid/8/tools/regression/aio/aiotest/ (props changed) projects/graid/8/tools/regression/bin/ (props changed) projects/graid/8/tools/regression/bin/date/ (props changed) projects/graid/8/tools/regression/bin/sh/ (props changed) projects/graid/8/tools/regression/fifo/ (props changed) projects/graid/8/tools/regression/geom/ (props changed) projects/graid/8/tools/regression/lib/libc/ (props changed) projects/graid/8/tools/regression/lib/msun/test-conj.t (props changed) projects/graid/8/tools/regression/mqueue/mqtest1/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest2/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest3/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest4/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest5/ (props changed) projects/graid/8/tools/regression/netinet/ (props changed) projects/graid/8/tools/regression/poll/ (props changed) projects/graid/8/tools/regression/posixsem/ (props changed) projects/graid/8/tools/regression/priv/ (props changed) projects/graid/8/tools/regression/sockets/unix_gc/ (props changed) projects/graid/8/tools/regression/usr.bin/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/sed/ (props changed) projects/graid/8/tools/regression/usr.bin/tr/ (props changed) projects/graid/8/tools/test/ (props changed) projects/graid/8/tools/tools/ (props changed) projects/graid/8/tools/tools/ath/ (props changed) projects/graid/8/tools/tools/ath/common/dumpregs.h (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/graid/8/tools/tools/mctest/ (props changed) projects/graid/8/tools/tools/nanobsd/ (props changed) projects/graid/8/tools/tools/netrate/ (props changed) projects/graid/8/tools/tools/netrate/tcpp/ (props changed) projects/graid/8/tools/tools/termcap/termcap.pl (props changed) projects/graid/8/tools/tools/umastat/ (props changed) projects/graid/8/tools/tools/vimage/ (props changed) projects/graid/8/usr.bin/ (props changed) projects/graid/8/usr.bin/apply/ (props changed) projects/graid/8/usr.bin/ar/ (props changed) projects/graid/8/usr.bin/awk/ (props changed) projects/graid/8/usr.bin/biff/ (props changed) projects/graid/8/usr.bin/c89/ (props changed) projects/graid/8/usr.bin/c99/ (props changed) projects/graid/8/usr.bin/calendar/ (props changed) projects/graid/8/usr.bin/catman/ (props changed) projects/graid/8/usr.bin/chpass/Makefile (props changed) projects/graid/8/usr.bin/column/ (props changed) projects/graid/8/usr.bin/comm/ (props changed) projects/graid/8/usr.bin/cpio/ (props changed) projects/graid/8/usr.bin/csup/ (props changed) projects/graid/8/usr.bin/du/ (props changed) projects/graid/8/usr.bin/ee/ (props changed) projects/graid/8/usr.bin/enigma/ (props changed) projects/graid/8/usr.bin/fetch/ (props changed) projects/graid/8/usr.bin/find/ (props changed) projects/graid/8/usr.bin/finger/ (props changed) projects/graid/8/usr.bin/fold/ (props changed) projects/graid/8/usr.bin/fstat/ (props changed) projects/graid/8/usr.bin/gcore/ (props changed) projects/graid/8/usr.bin/getopt/ (props changed) projects/graid/8/usr.bin/gzip/ (props changed) projects/graid/8/usr.bin/hexdump/ (props changed) projects/graid/8/usr.bin/indent/ (props changed) projects/graid/8/usr.bin/jot/ (props changed) projects/graid/8/usr.bin/kdump/ (props changed) projects/graid/8/usr.bin/killall/ (props changed) projects/graid/8/usr.bin/ktrace/ (props changed) projects/graid/8/usr.bin/ldd/ (props changed) projects/graid/8/usr.bin/lex/ (props changed) projects/graid/8/usr.bin/locale/ (props changed) projects/graid/8/usr.bin/locate/ (props changed) projects/graid/8/usr.bin/lockf/ (props changed) projects/graid/8/usr.bin/look/ (props changed) projects/graid/8/usr.bin/mail/ (props changed) projects/graid/8/usr.bin/make/ (props changed) projects/graid/8/usr.bin/makewhatis/ (props changed) projects/graid/8/usr.bin/minigzip/ (props changed) projects/graid/8/usr.bin/ncal/ (props changed) projects/graid/8/usr.bin/netstat/ (props changed) projects/graid/8/usr.bin/pathchk/ (props changed) projects/graid/8/usr.bin/perror/ (props changed) projects/graid/8/usr.bin/procstat/ (props changed) projects/graid/8/usr.bin/rpcgen/ (props changed) projects/graid/8/usr.bin/ruptime/ (props changed) projects/graid/8/usr.bin/script/ (props changed) projects/graid/8/usr.bin/sed/ (props changed) projects/graid/8/usr.bin/sockstat/ (props changed) projects/graid/8/usr.bin/split/ (props changed) projects/graid/8/usr.bin/stat/ (props changed) projects/graid/8/usr.bin/systat/ (props changed) projects/graid/8/usr.bin/tar/ (props changed) projects/graid/8/usr.bin/tftp/ (props changed) projects/graid/8/usr.bin/top/ (props changed) projects/graid/8/usr.bin/touch/ (props changed) projects/graid/8/usr.bin/tr/ (props changed) projects/graid/8/usr.bin/truss/ (props changed) projects/graid/8/usr.bin/uname/ (props changed) projects/graid/8/usr.bin/unifdef/ (props changed) projects/graid/8/usr.bin/uniq/ (props changed) projects/graid/8/usr.bin/unzip/ (props changed) projects/graid/8/usr.bin/uudecode/ (props changed) projects/graid/8/usr.bin/vmstat/ (props changed) projects/graid/8/usr.bin/w/ (props changed) projects/graid/8/usr.bin/whois/ (props changed) projects/graid/8/usr.bin/xinstall/ (props changed) projects/graid/8/usr.bin/xlint/ (props changed) projects/graid/8/usr.bin/xz/ (props changed) projects/graid/8/usr.bin/yacc/ (props changed) projects/graid/8/usr.sbin/ (props changed) projects/graid/8/usr.sbin/IPXrouted/ (props changed) projects/graid/8/usr.sbin/Makefile (props changed) projects/graid/8/usr.sbin/Makefile.inc (props changed) projects/graid/8/usr.sbin/ac/ (props changed) projects/graid/8/usr.sbin/accton/ (props changed) projects/graid/8/usr.sbin/acpi/ (props changed) projects/graid/8/usr.sbin/adduser/ (props changed) projects/graid/8/usr.sbin/amd/ (props changed) projects/graid/8/usr.sbin/ancontrol/ (props changed) projects/graid/8/usr.sbin/apm/ (props changed) projects/graid/8/usr.sbin/apmd/ (props changed) projects/graid/8/usr.sbin/arp/ (props changed) projects/graid/8/usr.sbin/asf/ (props changed) projects/graid/8/usr.sbin/audit/ (props changed) projects/graid/8/usr.sbin/auditd/ (props changed) projects/graid/8/usr.sbin/auditreduce/ (props changed) projects/graid/8/usr.sbin/authpf/ (props changed) projects/graid/8/usr.sbin/bluetooth/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidcontrol/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidd/ (props changed) projects/graid/8/usr.sbin/boot0cfg/ (props changed) projects/graid/8/usr.sbin/boot98cfg/ (props changed) projects/graid/8/usr.sbin/bootparamd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/8/usr.sbin/btxld/ (props changed) projects/graid/8/usr.sbin/burncd/ (props changed) projects/graid/8/usr.sbin/cdcontrol/ (props changed) projects/graid/8/usr.sbin/chkgrp/ (props changed) projects/graid/8/usr.sbin/chown/ (props changed) projects/graid/8/usr.sbin/chroot/ (props changed) projects/graid/8/usr.sbin/ckdist/ (props changed) projects/graid/8/usr.sbin/clear_locks/ (props changed) projects/graid/8/usr.sbin/config/ (props changed) projects/graid/8/usr.sbin/config/SMM.doc/ (props changed) projects/graid/8/usr.sbin/cpucontrol/ (props changed) projects/graid/8/usr.sbin/crashinfo/ (props changed) projects/graid/8/usr.sbin/cron/ (props changed) projects/graid/8/usr.sbin/crunch/ (props changed) projects/graid/8/usr.sbin/crunch/examples/ (props changed) projects/graid/8/usr.sbin/ctm/ (props changed) projects/graid/8/usr.sbin/cxgbtool/ (props changed) projects/graid/8/usr.sbin/daemon/ (props changed) projects/graid/8/usr.sbin/dconschat/ (props changed) projects/graid/8/usr.sbin/devinfo/ (props changed) projects/graid/8/usr.sbin/digictl/ (props changed) projects/graid/8/usr.sbin/diskinfo/ (props changed) projects/graid/8/usr.sbin/dnssec-dsfromkey/ (props changed) projects/graid/8/usr.sbin/dnssec-keyfromlabel/ (props changed) projects/graid/8/usr.sbin/dnssec-keygen/ (props changed) projects/graid/8/usr.sbin/dnssec-signzone/ (props changed) projects/graid/8/usr.sbin/dumpcis/ (props changed) projects/graid/8/usr.sbin/dumpcis/cardinfo.h (props changed) projects/graid/8/usr.sbin/dumpcis/cis.h (props changed) projects/graid/8/usr.sbin/editmap/ (props changed) projects/graid/8/usr.sbin/edquota/ (props changed) projects/graid/8/usr.sbin/eeprom/ (props changed) projects/graid/8/usr.sbin/extattr/ (props changed) projects/graid/8/usr.sbin/extattrctl/ (props changed) projects/graid/8/usr.sbin/faithd/ (props changed) projects/graid/8/usr.sbin/fdcontrol/ (props changed) projects/graid/8/usr.sbin/fdformat/ (props changed) projects/graid/8/usr.sbin/fdread/ (props changed) projects/graid/8/usr.sbin/fdwrite/ (props changed) projects/graid/8/usr.sbin/fifolog/ (props changed) projects/graid/8/usr.sbin/flowctl/ (props changed) projects/graid/8/usr.sbin/freebsd-update/ (props changed) projects/graid/8/usr.sbin/ftp-proxy/ (props changed) projects/graid/8/usr.sbin/fwcontrol/ (props changed) projects/graid/8/usr.sbin/getfmac/ (props changed) projects/graid/8/usr.sbin/getpmac/ (props changed) projects/graid/8/usr.sbin/gssd/ (props changed) projects/graid/8/usr.sbin/gstat/ (props changed) projects/graid/8/usr.sbin/i2c/ (props changed) projects/graid/8/usr.sbin/ifmcstat/ (props changed) projects/graid/8/usr.sbin/inetd/ (props changed) projects/graid/8/usr.sbin/iostat/ (props changed) projects/graid/8/usr.sbin/ip6addrctl/ (props changed) projects/graid/8/usr.sbin/ipfwpcap/ (props changed) projects/graid/8/usr.sbin/jail/ (props changed) projects/graid/8/usr.sbin/jexec/ (props changed) projects/graid/8/usr.sbin/jls/ (props changed) projects/graid/8/usr.sbin/kbdcontrol/ (props changed) projects/graid/8/usr.sbin/kbdmap/ (props changed) projects/graid/8/usr.sbin/kernbb/ (props changed) projects/graid/8/usr.sbin/keyserv/ (props changed) projects/graid/8/usr.sbin/kgmon/ (props changed) projects/graid/8/usr.sbin/kgzip/ (props changed) projects/graid/8/usr.sbin/kldxref/ (props changed) projects/graid/8/usr.sbin/lastlogin/ (props changed) projects/graid/8/usr.sbin/lmcconfig/ (props changed) projects/graid/8/usr.sbin/lpr/ (props changed) projects/graid/8/usr.sbin/lptcontrol/ (props changed) projects/graid/8/usr.sbin/mailstats/ (props changed) projects/graid/8/usr.sbin/mailwrapper/ (props changed) projects/graid/8/usr.sbin/makefs/ (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/8/usr.sbin/makefs/getid.c (props changed) projects/graid/8/usr.sbin/makemap/ (props changed) projects/graid/8/usr.sbin/manctl/ (props changed) projects/graid/8/usr.sbin/memcontrol/ (props changed) projects/graid/8/usr.sbin/mergemaster/ (props changed) projects/graid/8/usr.sbin/mfiutil/ (props changed) projects/graid/8/usr.sbin/mixer/ (props changed) projects/graid/8/usr.sbin/mld6query/ (props changed) projects/graid/8/usr.sbin/mlxcontrol/ (props changed) projects/graid/8/usr.sbin/mount_nwfs/ (props changed) projects/graid/8/usr.sbin/mount_portalfs/ (props changed) projects/graid/8/usr.sbin/mount_smbfs/ (props changed) projects/graid/8/usr.sbin/mountd/ (props changed) projects/graid/8/usr.sbin/moused/ (props changed) projects/graid/8/usr.sbin/mptable/ (props changed) projects/graid/8/usr.sbin/mptutil/ (props changed) projects/graid/8/usr.sbin/mtest/ (props changed) projects/graid/8/usr.sbin/mtree/ (props changed) projects/graid/8/usr.sbin/named/ (props changed) projects/graid/8/usr.sbin/named-checkconf/ (props changed) projects/graid/8/usr.sbin/named-checkzone/ (props changed) projects/graid/8/usr.sbin/named.reload/ (props changed) projects/graid/8/usr.sbin/ndiscvt/ (props changed) projects/graid/8/usr.sbin/ndp/ (props changed) projects/graid/8/usr.sbin/newsyslog/ (props changed) projects/graid/8/usr.sbin/nfscbd/ (props changed) projects/graid/8/usr.sbin/nfsd/ (props changed) projects/graid/8/usr.sbin/nfsdumpstate/ (props changed) projects/graid/8/usr.sbin/nfsrevoke/ (props changed) projects/graid/8/usr.sbin/nfsuserd/ (props changed) projects/graid/8/usr.sbin/ngctl/ (props changed) projects/graid/8/usr.sbin/nghook/ (props changed) projects/graid/8/usr.sbin/nologin/ (props changed) projects/graid/8/usr.sbin/nscd/ (props changed) projects/graid/8/usr.sbin/ntp/ (props changed) projects/graid/8/usr.sbin/nvram/ (props changed) projects/graid/8/usr.sbin/ofwdump/ (props changed) projects/graid/8/usr.sbin/pciconf/ (props changed) projects/graid/8/usr.sbin/periodic/ (props changed) projects/graid/8/usr.sbin/pkg_install/ (props changed) projects/graid/8/usr.sbin/pmcannotate/ (props changed) projects/graid/8/usr.sbin/pmccontrol/ (props changed) projects/graid/8/usr.sbin/pmcstat/ (props changed) projects/graid/8/usr.sbin/pnpinfo/ (props changed) projects/graid/8/usr.sbin/portsnap/ (props changed) projects/graid/8/usr.sbin/powerd/ (props changed) projects/graid/8/usr.sbin/ppp/ (props changed) projects/graid/8/usr.sbin/pppctl/ (props changed) projects/graid/8/usr.sbin/praliases/ (props changed) projects/graid/8/usr.sbin/praudit/ (props changed) projects/graid/8/usr.sbin/procctl/ (props changed) projects/graid/8/usr.sbin/pstat/ (props changed) projects/graid/8/usr.sbin/pw/ (props changed) projects/graid/8/usr.sbin/pwd_mkdb/ (props changed) projects/graid/8/usr.sbin/quot/ (props changed) projects/graid/8/usr.sbin/quotaon/ (props changed) projects/graid/8/usr.sbin/rarpd/ (props changed) projects/graid/8/usr.sbin/repquota/ (props changed) projects/graid/8/usr.sbin/rip6query/ (props changed) projects/graid/8/usr.sbin/rmt/ (props changed) projects/graid/8/usr.sbin/rndc/ (props changed) projects/graid/8/usr.sbin/rndc-confgen/ (props changed) projects/graid/8/usr.sbin/route6d/ (props changed) projects/graid/8/usr.sbin/rpc.lockd/ (props changed) projects/graid/8/usr.sbin/rpc.statd/ (props changed) projects/graid/8/usr.sbin/rpc.umntall/ (props changed) projects/graid/8/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/8/usr.sbin/rpc.ypupdated/ (props changed) projects/graid/8/usr.sbin/rpc.ypxfrd/ (props changed) projects/graid/8/usr.sbin/rpcbind/ (props changed) projects/graid/8/usr.sbin/rrenumd/ (props changed) projects/graid/8/usr.sbin/rtadvd/ (props changed) projects/graid/8/usr.sbin/rtprio/ (props changed) projects/graid/8/usr.sbin/rtsold/ (props changed) projects/graid/8/usr.sbin/rwhod/ (props changed) projects/graid/8/usr.sbin/sa/ (props changed) projects/graid/8/usr.sbin/sade/ (props changed) projects/graid/8/usr.sbin/sendmail/ (props changed) projects/graid/8/usr.sbin/service/ (props changed) projects/graid/8/usr.sbin/service/Makefile (props changed) projects/graid/8/usr.sbin/service/service.8 (props changed) projects/graid/8/usr.sbin/service/service.sh (props changed) projects/graid/8/usr.sbin/services_mkdb/ (props changed) projects/graid/8/usr.sbin/services_mkdb/Makefile (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.8 (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.c (props changed) projects/graid/8/usr.sbin/services_mkdb/uniq.c (props changed) projects/graid/8/usr.sbin/setfib/ (props changed) projects/graid/8/usr.sbin/setfmac/ (props changed) projects/graid/8/usr.sbin/setpmac/ (props changed) projects/graid/8/usr.sbin/sicontrol/ (props changed) projects/graid/8/usr.sbin/smbmsg/ (props changed) projects/graid/8/usr.sbin/snapinfo/ (props changed) projects/graid/8/usr.sbin/spkrtest/ (props changed) projects/graid/8/usr.sbin/spray/ (props changed) projects/graid/8/usr.sbin/sysinstall/ (props changed) projects/graid/8/usr.sbin/syslogd/ (props changed) projects/graid/8/usr.sbin/tcpdchk/ (props changed) projects/graid/8/usr.sbin/tcpdmatch/ (props changed) projects/graid/8/usr.sbin/tcpdrop/ (props changed) projects/graid/8/usr.sbin/tcpdump/ (props changed) projects/graid/8/usr.sbin/timed/ (props changed) projects/graid/8/usr.sbin/traceroute/ (props changed) projects/graid/8/usr.sbin/traceroute6/ (props changed) projects/graid/8/usr.sbin/trpt/ (props changed) projects/graid/8/usr.sbin/tzsetup/ (props changed) projects/graid/8/usr.sbin/uathload/ (props changed) projects/graid/8/usr.sbin/ugidfw/ (props changed) projects/graid/8/usr.sbin/uhsoctl/ (props changed) projects/graid/8/usr.sbin/usbconfig/ (props changed) projects/graid/8/usr.sbin/usbdevs/ (props changed) projects/graid/8/usr.sbin/vidcontrol/ (props changed) projects/graid/8/usr.sbin/vipw/ (props changed) projects/graid/8/usr.sbin/wake/ (props changed) projects/graid/8/usr.sbin/watch/ (props changed) projects/graid/8/usr.sbin/watchdogd/ (props changed) projects/graid/8/usr.sbin/wlandebug/ (props changed) projects/graid/8/usr.sbin/wlconfig/ (props changed) projects/graid/8/usr.sbin/wpa/ (props changed) projects/graid/8/usr.sbin/yp_mkdb/ (props changed) projects/graid/8/usr.sbin/ypbind/ (props changed) projects/graid/8/usr.sbin/yppoll/ (props changed) projects/graid/8/usr.sbin/yppush/ (props changed) projects/graid/8/usr.sbin/ypserv/ (props changed) projects/graid/8/usr.sbin/ypset/ (props changed) projects/graid/8/usr.sbin/zic/ (props changed) projects/graid/8/usr.sbin/zzz/ (props changed) Modified: projects/graid/8/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.c Tue Feb 8 19:36:23 2011 (r218450) +++ projects/graid/8/sys/geom/raid/g_raid.c Tue Feb 8 19:49:31 2011 (r218451) @@ -1072,11 +1072,35 @@ void g_raid_subdisk_iostart(struct g_raid_subdisk *sd, struct bio *bp) { struct g_consumer *cp; + struct g_raid_disk *disk; - cp = sd->sd_disk->d_consumer; - bp->bio_from = sd->sd_disk->d_consumer; - bp->bio_to = sd->sd_disk->d_consumer->provider; bp->bio_caller1 = sd; + + /* + * Make sure that the disk is present. Generally it is a task of + * transformation layers to not send requests to absent disks, but + * it is better to be safe and report situation then sorry. + */ + if (sd->sd_disk == NULL) { + G_RAID_LOGREQ(0, bp, "Warning! I/O request to an absent disk!"); +nodisk: + bp->bio_from = NULL; + bp->bio_to = NULL; + bp->bio_error = ENXIO; + g_raid_disk_done(bp); + return; + } + disk = sd->sd_disk; + if (disk->d_state != G_RAID_DISK_S_ACTIVE && + disk->d_state != G_RAID_DISK_S_FAILED) { + G_RAID_LOGREQ(0, bp, "Warning! I/O request to a disk in a " + "wrong state (%s)!", g_raid_disk_state2str(disk->d_state)); + goto nodisk; + } + + cp = disk->d_consumer; + bp->bio_from = cp; + bp->bio_to = cp->provider; cp->index++; if (dumping) { G_RAID_LOGREQ(3, bp, "Sending dumping request."); @@ -1113,8 +1137,10 @@ static void g_raid_disk_done(struct bio *bp) { struct g_raid_softc *sc; + struct g_raid_subdisk *sd; - sc = bp->bio_from->geom->softc; + sd = bp->bio_caller1; + sc = sd->sd_softc; mtx_lock(&sc->sc_queue_mtx); bioq_disksort(&sc->sc_queue, bp); mtx_unlock(&sc->sc_queue_mtx); @@ -1136,12 +1162,14 @@ g_raid_disk_done_request(struct bio *bp) sd = bp->bio_caller1; sc = sd->sd_softc; vol = sd->sd_volume; - bp->bio_from->index--; - disk = bp->bio_from->private; - if (disk == NULL) { - g_topology_lock(); - g_raid_kill_consumer(sc, bp->bio_from); - g_topology_unlock(); + if (bp->bio_from != NULL) { + bp->bio_from->index--; + disk = bp->bio_from->private; + if (disk == NULL) { + g_topology_lock(); + g_raid_kill_consumer(sc, bp->bio_from); + g_topology_unlock(); + } } bp->bio_offset -= sd->sd_offset; @@ -1225,8 +1253,8 @@ process: if (ep != NULL) g_raid_handle_event(sc, ep); if (bp != NULL) { - if (bp->bio_from == NULL || - bp->bio_from->geom != sc->sc_geom) + if (bp->bio_to != NULL && + bp->bio_to->geom == sc->sc_geom) g_raid_start_request(bp); else g_raid_disk_done_request(bp); Modified: projects/graid/8/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/8/sys/geom/raid/tr_raid1.c Tue Feb 8 19:36:23 2011 (r218450) +++ projects/graid/8/sys/geom/raid/tr_raid1.c Tue Feb 8 19:49:31 2011 (r218451) @@ -151,8 +151,7 @@ g_raid_tr_taste_raid1(struct g_raid_tr_o trs = (struct g_raid_tr_raid1_object *)tr; if (tr->tro_volume->v_raid_level != G_RAID_VOLUME_RL_RAID1 || - tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE || - tr->tro_volume->v_disks_count != 2) + tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE) return (G_RAID_TR_TASTE_FAIL); trs->trso_starting = 1; return (G_RAID_TR_TASTE_SUCCEED); @@ -684,7 +683,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ nsd = trs->trso_failed_sd; if (bp->bio_error != 0 || trs->trso_flags & TR_RAID1_F_ABORT) { - if (bp->bio_error != 0) { + if ((trs->trso_flags & + TR_RAID1_F_ABORT) == 0) { g_raid_fail_disk(sd->sd_softc, nsd, nsd->sd_disk); } From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 19:51:41 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 676BF106566B; Tue, 8 Feb 2011 19:51:41 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 532898FC0C; Tue, 8 Feb 2011 19:51:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18Jpfgs057730; Tue, 8 Feb 2011 19:51:41 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18Jpf08057727; Tue, 8 Feb 2011 19:51:41 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102081951.p18Jpf08057727@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 19:51:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218452 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac share/misc sys/geom/raid tools/tools/nanobsd usr.sbin usr.sbin/bsnmpd/modules/snmp_hos... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 19:51:41 -0000 Author: mav Date: Tue Feb 8 19:51:40 2011 New Revision: 218452 URL: http://svn.freebsd.org/changeset/base/218452 Log: MFH r218446, r218449, r218450 Modified: projects/graid/7/sys/geom/raid/g_raid.c projects/graid/7/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/7/ (props changed) projects/graid/7/COPYRIGHT (props changed) projects/graid/7/Makefile (props changed) projects/graid/7/Makefile.inc1 (props changed) projects/graid/7/ObsoleteFiles.inc (props changed) projects/graid/7/UPDATING (props changed) projects/graid/7/bin/ (props changed) projects/graid/7/bin/chflags/ (props changed) projects/graid/7/bin/chio/ (props changed) projects/graid/7/bin/cp/ (props changed) projects/graid/7/bin/csh/ (props changed) projects/graid/7/bin/dd/ (props changed) projects/graid/7/bin/df/ (props changed) projects/graid/7/bin/echo/ (props changed) projects/graid/7/bin/expr/ (props changed) projects/graid/7/bin/kill/ (props changed) projects/graid/7/bin/ln/ (props changed) projects/graid/7/bin/ls/ (props changed) projects/graid/7/bin/pax/ (props changed) projects/graid/7/bin/ps/ (props changed) projects/graid/7/bin/rm/ (props changed) projects/graid/7/bin/sh/ (props changed) projects/graid/7/bin/test/ (props changed) projects/graid/7/cddl/contrib/opensolaris/ (props changed) projects/graid/7/cddl/lib/libzpool/ (props changed) projects/graid/7/contrib/bind9/ (props changed) projects/graid/7/contrib/binutils/ (props changed) projects/graid/7/contrib/bsnmp/ (props changed) projects/graid/7/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/7/contrib/cpio/ (props changed) projects/graid/7/contrib/csup/ (props changed) projects/graid/7/contrib/expat/ (props changed) projects/graid/7/contrib/gcc/ (props changed) projects/graid/7/contrib/gdb/ (props changed) projects/graid/7/contrib/gdtoa/ (props changed) projects/graid/7/contrib/groff/ (props changed) projects/graid/7/contrib/ipfilter/ (props changed) projects/graid/7/contrib/less/ (props changed) projects/graid/7/contrib/libpcap/ (props changed) projects/graid/7/contrib/ncurses/ (props changed) projects/graid/7/contrib/netcat/ (props changed) projects/graid/7/contrib/ntp/ (props changed) projects/graid/7/contrib/nvi/ (props changed) projects/graid/7/contrib/pf/ (props changed) projects/graid/7/contrib/sendmail/ (props changed) projects/graid/7/contrib/smbfs/ (props changed) projects/graid/7/contrib/tcp_wrappers/ (props changed) projects/graid/7/contrib/tcsh/ (props changed) projects/graid/7/contrib/telnet/ (props changed) projects/graid/7/contrib/top/ (props changed) projects/graid/7/contrib/traceroute/ (props changed) projects/graid/7/contrib/wpa_supplicant/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.conf (props changed) projects/graid/7/crypto/openssh/ (props changed) projects/graid/7/crypto/openssl/ (props changed) projects/graid/7/etc/ (props changed) projects/graid/7/games/factor/ (props changed) projects/graid/7/games/fortune/ (props changed) projects/graid/7/games/grdc/ (props changed) projects/graid/7/gnu/ (props changed) projects/graid/7/gnu/lib/libstdc++/ (props changed) projects/graid/7/gnu/usr.bin/ (props changed) projects/graid/7/gnu/usr.bin/cc/ (props changed) projects/graid/7/gnu/usr.bin/cpio/ (props changed) projects/graid/7/gnu/usr.bin/cvs/ (props changed) projects/graid/7/gnu/usr.bin/gdb/ (props changed) projects/graid/7/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/7/gnu/usr.bin/grep/ (props changed) projects/graid/7/gnu/usr.bin/groff/ (props changed) projects/graid/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/graid/7/gnu/usr.bin/man/ (props changed) projects/graid/7/gnu/usr.bin/sort/ (props changed) projects/graid/7/include/ (props changed) projects/graid/7/kerberos5/ (props changed) projects/graid/7/lib/ (props changed) projects/graid/7/lib/bind/ (props changed) projects/graid/7/lib/csu/ (props changed) projects/graid/7/lib/libarchive/ (props changed) projects/graid/7/lib/libbluetooth/ (props changed) projects/graid/7/lib/libc/ (props changed) projects/graid/7/lib/libc/stdtime/ (props changed) projects/graid/7/lib/libc_r/ (props changed) projects/graid/7/lib/libcam/ (props changed) projects/graid/7/lib/libdisk/ (props changed) projects/graid/7/lib/libdwarf/ (props changed) projects/graid/7/lib/libelf/ (props changed) projects/graid/7/lib/libexpat/ (props changed) projects/graid/7/lib/libfetch/ (props changed) projects/graid/7/lib/libftpio/ (props changed) projects/graid/7/lib/libgeom/ (props changed) projects/graid/7/lib/libgssapi/ (props changed) projects/graid/7/lib/libkse/ (props changed) projects/graid/7/lib/libkvm/ (props changed) projects/graid/7/lib/libmagic/ (props changed) projects/graid/7/lib/libmemstat/ (props changed) projects/graid/7/lib/libpmc/ (props changed) projects/graid/7/lib/libradius/ (props changed) projects/graid/7/lib/libsm/ (props changed) projects/graid/7/lib/libstand/ (props changed) projects/graid/7/lib/libthr/ (props changed) projects/graid/7/lib/libthread_db/ (props changed) projects/graid/7/lib/libufs/ (props changed) projects/graid/7/lib/libutil/ (props changed) projects/graid/7/lib/msun/ (props changed) projects/graid/7/libexec/ (props changed) projects/graid/7/libexec/ftpd/ (props changed) projects/graid/7/libexec/rpc.rquotad/ (props changed) projects/graid/7/libexec/rpc.rstatd/ (props changed) projects/graid/7/libexec/rtld-elf/ (props changed) projects/graid/7/libexec/tftpd/ (props changed) projects/graid/7/release/ (props changed) projects/graid/7/release/doc/ (props changed) projects/graid/7/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/7/release/picobsd/tinyware/login/ (props changed) projects/graid/7/rescue/ (props changed) projects/graid/7/sbin/ (props changed) projects/graid/7/sbin/atacontrol/ (props changed) projects/graid/7/sbin/bsdlabel/ (props changed) projects/graid/7/sbin/clri/ (props changed) projects/graid/7/sbin/ddb/ (props changed) projects/graid/7/sbin/devd/ (props changed) projects/graid/7/sbin/devfs/ (props changed) projects/graid/7/sbin/dhclient/ (props changed) projects/graid/7/sbin/dumpfs/ (props changed) projects/graid/7/sbin/fdisk/ (props changed) projects/graid/7/sbin/fdisk_pc98/ (props changed) projects/graid/7/sbin/fsck/ (props changed) projects/graid/7/sbin/fsck_ffs/ (props changed) projects/graid/7/sbin/fsck_msdosfs/ (props changed) projects/graid/7/sbin/geom/ (props changed) projects/graid/7/sbin/geom/class/label/ (props changed) projects/graid/7/sbin/geom/class/part/ (props changed) projects/graid/7/sbin/geom/class/stripe/ (props changed) projects/graid/7/sbin/geom/misc/ (props changed) projects/graid/7/sbin/growfs/ (props changed) projects/graid/7/sbin/ifconfig/ (props changed) projects/graid/7/sbin/init/ (props changed) projects/graid/7/sbin/ipf/ (props changed) projects/graid/7/sbin/ipfw/ (props changed) projects/graid/7/sbin/md5/ (props changed) projects/graid/7/sbin/mdconfig/ (props changed) projects/graid/7/sbin/mksnap_ffs/ (props changed) projects/graid/7/sbin/mount/ (props changed) projects/graid/7/sbin/mount_msdosfs/ (props changed) projects/graid/7/sbin/natd/ (props changed) projects/graid/7/sbin/newfs/ (props changed) projects/graid/7/sbin/newfs_msdos/ (props changed) projects/graid/7/sbin/ping6/ (props changed) projects/graid/7/sbin/reboot/ (props changed) projects/graid/7/sbin/restore/ (props changed) projects/graid/7/sbin/route/ (props changed) projects/graid/7/sbin/savecore/ (props changed) projects/graid/7/sbin/sconfig/ (props changed) projects/graid/7/sbin/shutdown/ (props changed) projects/graid/7/sbin/sysctl/ (props changed) projects/graid/7/sbin/tunefs/ (props changed) projects/graid/7/secure/lib/libcrypto/ (props changed) projects/graid/7/secure/lib/libssh/ (props changed) projects/graid/7/secure/lib/libssl/ (props changed) projects/graid/7/secure/libexec/sftp-server/ (props changed) projects/graid/7/secure/usr.bin/bdes/ (props changed) projects/graid/7/secure/usr.bin/openssl/ (props changed) projects/graid/7/secure/usr.bin/ssh/ (props changed) projects/graid/7/secure/usr.sbin/sshd/ (props changed) projects/graid/7/share/ (props changed) projects/graid/7/share/colldef/ (props changed) projects/graid/7/share/dict/ (props changed) projects/graid/7/share/doc/bind9/ (props changed) projects/graid/7/share/doc/papers/jail/ (props changed) projects/graid/7/share/doc/smm/01.setup/ (props changed) projects/graid/7/share/examples/ (props changed) projects/graid/7/share/man/ (props changed) projects/graid/7/share/man/man1/ (props changed) projects/graid/7/share/man/man3/ (props changed) projects/graid/7/share/man/man4/ (props changed) projects/graid/7/share/man/man5/ (props changed) projects/graid/7/share/man/man7/ (props changed) projects/graid/7/share/man/man8/ (props changed) projects/graid/7/share/man/man9/ (props changed) projects/graid/7/share/misc/ (props changed) projects/graid/7/share/misc/iso639 (props changed) projects/graid/7/share/misc/pci_vendors (props changed) projects/graid/7/share/mk/ (props changed) projects/graid/7/share/mklocale/ (props changed) projects/graid/7/share/monetdef/ (props changed) projects/graid/7/share/msgdef/ (props changed) projects/graid/7/share/numericdef/ (props changed) projects/graid/7/share/sendmail/ (props changed) projects/graid/7/share/syscons/ (props changed) projects/graid/7/share/syscons/keymaps/ (props changed) projects/graid/7/share/termcap/ (props changed) projects/graid/7/share/timedef/ (props changed) projects/graid/7/share/zoneinfo/ (props changed) projects/graid/7/sys/ (props changed) projects/graid/7/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/7/sys/contrib/dev/acpica/ (props changed) projects/graid/7/sys/contrib/pf/ (props changed) projects/graid/7/tools/ (props changed) projects/graid/7/tools/build/ (props changed) projects/graid/7/tools/build/options/ (props changed) projects/graid/7/tools/debugscripts/ (props changed) projects/graid/7/tools/regression/acct/ (props changed) projects/graid/7/tools/regression/atm/ (props changed) projects/graid/7/tools/regression/bin/ (props changed) projects/graid/7/tools/regression/bin/date/ (props changed) projects/graid/7/tools/regression/bin/sh/ (props changed) projects/graid/7/tools/regression/file/ (props changed) projects/graid/7/tools/regression/file/flock/ (props changed) projects/graid/7/tools/regression/lib/libc/ (props changed) projects/graid/7/tools/regression/usr.bin/ (props changed) projects/graid/7/tools/regression/usr.bin/jot/ (props changed) projects/graid/7/tools/regression/usr.bin/tr/ (props changed) projects/graid/7/tools/sched/ (props changed) projects/graid/7/tools/test/ (props changed) projects/graid/7/tools/tools/ (props changed) projects/graid/7/tools/tools/aac/ (props changed) projects/graid/7/tools/tools/crypto/ (props changed) projects/graid/7/tools/tools/editing/ (props changed) projects/graid/7/tools/tools/nanobsd/ (props changed) projects/graid/7/tools/tools/nanobsd/FlashDevice.sub (props changed) projects/graid/7/tools/tools/nanobsd/nanobsd.sh (props changed) projects/graid/7/tools/tools/netrate/ (props changed) projects/graid/7/tools/tools/umastat/ (props changed) projects/graid/7/tools/tools/usb/ (props changed) projects/graid/7/usr.bin/ (props changed) projects/graid/7/usr.bin/basename/ (props changed) projects/graid/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) projects/graid/7/usr.bin/calendar/ (props changed) projects/graid/7/usr.bin/catman/ (props changed) projects/graid/7/usr.bin/cksum/ (props changed) projects/graid/7/usr.bin/comm/ (props changed) projects/graid/7/usr.bin/cpuset/ (props changed) projects/graid/7/usr.bin/csup/ (props changed) projects/graid/7/usr.bin/dirname/ (props changed) projects/graid/7/usr.bin/du/ (props changed) projects/graid/7/usr.bin/fetch/ (props changed) projects/graid/7/usr.bin/file/ (props changed) projects/graid/7/usr.bin/find/ (props changed) projects/graid/7/usr.bin/finger/ (props changed) projects/graid/7/usr.bin/fold/ (props changed) projects/graid/7/usr.bin/fstat/ (props changed) projects/graid/7/usr.bin/gcore/ (props changed) projects/graid/7/usr.bin/gprof/ (props changed) projects/graid/7/usr.bin/gzip/ (props changed) projects/graid/7/usr.bin/hexdump/ (props changed) projects/graid/7/usr.bin/id/ (props changed) projects/graid/7/usr.bin/indent/ (props changed) projects/graid/7/usr.bin/ipcrm/ (props changed) projects/graid/7/usr.bin/ipcs/ (props changed) projects/graid/7/usr.bin/jot/ (props changed) projects/graid/7/usr.bin/kdump/ (props changed) projects/graid/7/usr.bin/ktrace/ (props changed) projects/graid/7/usr.bin/ldd/ (props changed) projects/graid/7/usr.bin/less/ (props changed) projects/graid/7/usr.bin/locate/ (props changed) projects/graid/7/usr.bin/lockf/ (props changed) projects/graid/7/usr.bin/logger/ (props changed) projects/graid/7/usr.bin/make/ (props changed) projects/graid/7/usr.bin/ncal/ (props changed) projects/graid/7/usr.bin/netstat/ (props changed) projects/graid/7/usr.bin/newgrp/ (props changed) projects/graid/7/usr.bin/nsupdate/ (props changed) projects/graid/7/usr.bin/pkill/ (props changed) projects/graid/7/usr.bin/procstat/ (props changed) projects/graid/7/usr.bin/quota/ (props changed) projects/graid/7/usr.bin/rpcgen/ (props changed) projects/graid/7/usr.bin/ruptime/ (props changed) projects/graid/7/usr.bin/script/ (props changed) projects/graid/7/usr.bin/sed/ (props changed) projects/graid/7/usr.bin/shar/ (props changed) projects/graid/7/usr.bin/sockstat/ (props changed) projects/graid/7/usr.bin/stat/ (props changed) projects/graid/7/usr.bin/su/ (props changed) projects/graid/7/usr.bin/systat/ (props changed) projects/graid/7/usr.bin/tail/ (props changed) projects/graid/7/usr.bin/tar/ (props changed) projects/graid/7/usr.bin/tftp/ (props changed) projects/graid/7/usr.bin/tip/ (props changed) projects/graid/7/usr.bin/top/ (props changed) projects/graid/7/usr.bin/truncate/ (props changed) projects/graid/7/usr.bin/truss/ (props changed) projects/graid/7/usr.bin/uname/ (props changed) projects/graid/7/usr.bin/unifdef/ (props changed) projects/graid/7/usr.bin/units/ (props changed) projects/graid/7/usr.bin/uudecode/ (props changed) projects/graid/7/usr.bin/vmstat/ (props changed) projects/graid/7/usr.bin/w/ (props changed) projects/graid/7/usr.bin/wc/ (props changed) projects/graid/7/usr.bin/whereis/ (props changed) projects/graid/7/usr.bin/whois/ (props changed) projects/graid/7/usr.bin/window/ (props changed) projects/graid/7/usr.bin/xargs/ (props changed) projects/graid/7/usr.bin/ypcat/ (props changed) projects/graid/7/usr.bin/ypmatch/ (props changed) projects/graid/7/usr.bin/ypwhich/ (props changed) projects/graid/7/usr.sbin/ (props changed) projects/graid/7/usr.sbin/Makefile (props changed) projects/graid/7/usr.sbin/acpi/ (props changed) projects/graid/7/usr.sbin/adduser/ (props changed) projects/graid/7/usr.sbin/arp/ (props changed) projects/graid/7/usr.sbin/bluetooth/ (props changed) projects/graid/7/usr.sbin/bluetooth/btpand/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcsecd/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcseriald/ (props changed) projects/graid/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) projects/graid/7/usr.sbin/bluetooth/sdpd/ (props changed) projects/graid/7/usr.sbin/boot0cfg/ (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/graid/7/usr.sbin/burncd/ (props changed) projects/graid/7/usr.sbin/cdcontrol/ (props changed) projects/graid/7/usr.sbin/chown/ (props changed) projects/graid/7/usr.sbin/chroot/ (props changed) projects/graid/7/usr.sbin/config/ (props changed) projects/graid/7/usr.sbin/config/SMM.doc/ (props changed) projects/graid/7/usr.sbin/cpucontrol/ (props changed) projects/graid/7/usr.sbin/crashinfo/ (props changed) projects/graid/7/usr.sbin/cron/ (props changed) projects/graid/7/usr.sbin/cron/cron/ (props changed) projects/graid/7/usr.sbin/crunch/ (props changed) projects/graid/7/usr.sbin/cxgbtool/ (props changed) projects/graid/7/usr.sbin/eeprom/ (props changed) projects/graid/7/usr.sbin/extattr/ (props changed) projects/graid/7/usr.sbin/faithd/ (props changed) projects/graid/7/usr.sbin/fdcontrol/ (props changed) projects/graid/7/usr.sbin/fdformat/ (props changed) projects/graid/7/usr.sbin/fdread/ (props changed) projects/graid/7/usr.sbin/fdwrite/ (props changed) projects/graid/7/usr.sbin/fifolog/ (props changed) projects/graid/7/usr.sbin/freebsd-update/ (props changed) projects/graid/7/usr.sbin/fwcontrol/ (props changed) projects/graid/7/usr.sbin/gstat/ (props changed) projects/graid/7/usr.sbin/iostat/ (props changed) projects/graid/7/usr.sbin/jail/ (props changed) projects/graid/7/usr.sbin/jexec/ (props changed) projects/graid/7/usr.sbin/jls/ (props changed) projects/graid/7/usr.sbin/lpr/ (props changed) projects/graid/7/usr.sbin/mailwrapper/ (props changed) projects/graid/7/usr.sbin/makefs/ (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/7/usr.sbin/makefs/getid.c (props changed) projects/graid/7/usr.sbin/mergemaster/ (props changed) projects/graid/7/usr.sbin/mfiutil/ (props changed) projects/graid/7/usr.sbin/mountd/ (props changed) projects/graid/7/usr.sbin/mptutil/ (props changed) projects/graid/7/usr.sbin/mtree/ (props changed) projects/graid/7/usr.sbin/ndiscvt/ (props changed) projects/graid/7/usr.sbin/ndp/ (props changed) projects/graid/7/usr.sbin/newsyslog/ (props changed) projects/graid/7/usr.sbin/nscd/ (props changed) projects/graid/7/usr.sbin/ntp/ (props changed) projects/graid/7/usr.sbin/pciconf/ (props changed) projects/graid/7/usr.sbin/pkg_install/ (props changed) projects/graid/7/usr.sbin/pmccontrol/ (props changed) projects/graid/7/usr.sbin/pmcstat/ (props changed) projects/graid/7/usr.sbin/portsnap/ (props changed) projects/graid/7/usr.sbin/powerd/ (props changed) projects/graid/7/usr.sbin/ppp/ (props changed) projects/graid/7/usr.sbin/pstat/ (props changed) projects/graid/7/usr.sbin/pw/ (props changed) projects/graid/7/usr.sbin/pwd_mkdb/ (props changed) projects/graid/7/usr.sbin/rpc.lockd/ (props changed) projects/graid/7/usr.sbin/rpc.statd/ (props changed) projects/graid/7/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/7/usr.sbin/rtadvd/ (props changed) projects/graid/7/usr.sbin/rtsold/ (props changed) projects/graid/7/usr.sbin/sade/ (props changed) projects/graid/7/usr.sbin/service/ (props changed) projects/graid/7/usr.sbin/setfib/ (props changed) projects/graid/7/usr.sbin/sysinstall/ (props changed) projects/graid/7/usr.sbin/syslogd/ (props changed) projects/graid/7/usr.sbin/traceroute/ (props changed) projects/graid/7/usr.sbin/traceroute6/ (props changed) projects/graid/7/usr.sbin/tzsetup/ (props changed) projects/graid/7/usr.sbin/ugidfw/ (props changed) projects/graid/7/usr.sbin/wpa/wpa_supplicant/ (props changed) projects/graid/7/usr.sbin/ypserv/ (props changed) projects/graid/7/usr.sbin/zic/ (props changed) Modified: projects/graid/7/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 19:49:31 2011 (r218451) +++ projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 19:51:40 2011 (r218452) @@ -1071,11 +1071,35 @@ void g_raid_subdisk_iostart(struct g_raid_subdisk *sd, struct bio *bp) { struct g_consumer *cp; + struct g_raid_disk *disk; - cp = sd->sd_disk->d_consumer; - bp->bio_from = sd->sd_disk->d_consumer; - bp->bio_to = sd->sd_disk->d_consumer->provider; bp->bio_caller1 = sd; + + /* + * Make sure that the disk is present. Generally it is a task of + * transformation layers to not send requests to absent disks, but + * it is better to be safe and report situation then sorry. + */ + if (sd->sd_disk == NULL) { + G_RAID_LOGREQ(0, bp, "Warning! I/O request to an absent disk!"); +nodisk: + bp->bio_from = NULL; + bp->bio_to = NULL; + bp->bio_error = ENXIO; + g_raid_disk_done(bp); + return; + } + disk = sd->sd_disk; + if (disk->d_state != G_RAID_DISK_S_ACTIVE && + disk->d_state != G_RAID_DISK_S_FAILED) { + G_RAID_LOGREQ(0, bp, "Warning! I/O request to a disk in a " + "wrong state (%s)!", g_raid_disk_state2str(disk->d_state)); + goto nodisk; + } + + cp = disk->d_consumer; + bp->bio_from = cp; + bp->bio_to = cp->provider; cp->index++; if (dumping) { G_RAID_LOGREQ(3, bp, "Sending dumping request."); @@ -1112,8 +1136,10 @@ static void g_raid_disk_done(struct bio *bp) { struct g_raid_softc *sc; + struct g_raid_subdisk *sd; - sc = bp->bio_from->geom->softc; + sd = bp->bio_caller1; + sc = sd->sd_softc; mtx_lock(&sc->sc_queue_mtx); bioq_disksort(&sc->sc_queue, bp); mtx_unlock(&sc->sc_queue_mtx); @@ -1135,12 +1161,14 @@ g_raid_disk_done_request(struct bio *bp) sd = bp->bio_caller1; sc = sd->sd_softc; vol = sd->sd_volume; - bp->bio_from->index--; - disk = bp->bio_from->private; - if (disk == NULL) { - g_topology_lock(); - g_raid_kill_consumer(sc, bp->bio_from); - g_topology_unlock(); + if (bp->bio_from != NULL) { + bp->bio_from->index--; + disk = bp->bio_from->private; + if (disk == NULL) { + g_topology_lock(); + g_raid_kill_consumer(sc, bp->bio_from); + g_topology_unlock(); + } } bp->bio_offset -= sd->sd_offset; @@ -1224,8 +1252,8 @@ process: if (ep != NULL) g_raid_handle_event(sc, ep); if (bp != NULL) { - if (bp->bio_from == NULL || - bp->bio_from->geom != sc->sc_geom) + if (bp->bio_to != NULL && + bp->bio_to->geom == sc->sc_geom) g_raid_start_request(bp); else g_raid_disk_done_request(bp); Modified: projects/graid/7/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/7/sys/geom/raid/tr_raid1.c Tue Feb 8 19:49:31 2011 (r218451) +++ projects/graid/7/sys/geom/raid/tr_raid1.c Tue Feb 8 19:51:40 2011 (r218452) @@ -151,8 +151,7 @@ g_raid_tr_taste_raid1(struct g_raid_tr_o trs = (struct g_raid_tr_raid1_object *)tr; if (tr->tro_volume->v_raid_level != G_RAID_VOLUME_RL_RAID1 || - tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE || - tr->tro_volume->v_disks_count != 2) + tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE) return (G_RAID_TR_TASTE_FAIL); trs->trso_starting = 1; return (G_RAID_TR_TASTE_SUCCEED); @@ -684,7 +683,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ nsd = trs->trso_failed_sd; if (bp->bio_error != 0 || trs->trso_flags & TR_RAID1_F_ABORT) { - if (bp->bio_error != 0) { + if ((trs->trso_flags & + TR_RAID1_F_ABORT) == 0) { g_raid_fail_disk(sd->sd_softc, nsd, nsd->sd_disk); } From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 22:09:00 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C796C1065670; Tue, 8 Feb 2011 22:09:00 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B59E28FC16; Tue, 8 Feb 2011 22:09:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18M90nd061374; Tue, 8 Feb 2011 22:09:00 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18M908R061370; Tue, 8 Feb 2011 22:09:00 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102082209.p18M908R061370@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 22:09:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218459 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 22:09:00 -0000 Author: mav Date: Tue Feb 8 22:09:00 2011 New Revision: 218459 URL: http://svn.freebsd.org/changeset/base/218459 Log: Fix bad sector recovery: - Lock region on first recovery read, not ot write. Locking on write is too late, as some other write can slip in before it. - Add optional ignore BIO argument to g_raid_lock_range(). It is needed to not block on request that caused this recovery. This fixes dead lock on bad sector recovery. - Prepare some ground to do multiple recovery reads for 3+ disks RAID0s. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Tue Feb 8 22:08:00 2011 (r218458) +++ projects/graid/head/sys/geom/raid/g_raid.c Tue Feb 8 22:09:00 2011 (r218459) @@ -1001,7 +1001,8 @@ g_raid_iodone(struct bio *bp, int error) } int -g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp) +g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, + struct bio *ignore, void *argp) { struct g_raid_softc *sc; struct g_raid_lock *lp; @@ -1016,7 +1017,7 @@ g_raid_lock_range(struct g_raid_volume * lp->l_pending = 0; TAILQ_FOREACH(bp, &vol->v_inflight.queue, bio_queue) { - if (g_raid_bio_overlaps(bp, off, len)) + if (bp != ignore && g_raid_bio_overlaps(bp, off, len)) lp->l_pending++; } Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Tue Feb 8 22:08:00 2011 (r218458) +++ projects/graid/head/sys/geom/raid/g_raid.h Tue Feb 8 22:09:00 2011 (r218459) @@ -377,7 +377,8 @@ struct g_raid_subdisk * g_raid_get_subdi #define G_RAID_DESTROY_HARD 2 int g_raid_destroy(struct g_raid_softc *sc, int how); int g_raid_event_send(void *arg, int event, int flags); -int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp); +int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, + struct bio *ignore, void *argp); int g_raid_unlock_range(struct g_raid_volume *vol, off_t off, off_t len); g_ctl_req_t g_raid_ctl; Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 22:08:00 2011 (r218458) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 22:09:00 2011 (r218459) @@ -255,7 +255,7 @@ g_raid_tr_raid1_rebuild_some(struct g_ra trs->trso_flags |= TR_RAID1_F_DOING_SOME; trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, /* Lock callback starts I/O */ - bp->bio_offset, bp->bio_length, bp); + bp->bio_offset, bp->bio_length, NULL, bp); } static void @@ -737,7 +737,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ /* Lock callback starts I/O */ trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, - bp->bio_offset, bp->bio_length, bp); + bp->bio_offset, bp->bio_length, NULL, bp); } } else if (trs->trso_type == TR_RAID1_RESYNC) { /* @@ -749,8 +749,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ } return; } - if (bp->bio_error != 0 && bp->bio_cmd == BIO_READ && - pbp->bio_children == 1 && bp->bio_cflags == 0) { + pbp->bio_inbed++; + if (bp->bio_cmd == BIO_READ && bp->bio_error != 0) { /* * Read failed on first drive. Retry the read error on * another disk drive, if available, before erroring out the @@ -758,9 +758,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ vol = tr->tro_volume; sd->sd_read_errs++; - G_RAID_LOGREQ(3, bp, - "Read failure, attempting recovery. %d total read errs", - sd->sd_read_errs); + G_RAID_LOGREQ(0, bp, + "Read error (%d), %d read errors total", + bp->bio_error, sd->sd_read_errs); /* * If there are too many read errors, we move to degraded. @@ -768,13 +768,18 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * everything to get it back in sync), or just degrade the * drive, which kicks off a resync? */ - if (sd->sd_read_errs > g_raid1_read_err_thresh) + if (sd->sd_read_errs > g_raid1_read_err_thresh) { g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + if (pbp->bio_children == 1) + goto remapdone; + } /* * Find the other disk, and try to do the I/O to it. */ for (nsd = NULL, i = 0; i < vol->v_disks_count; i++) { + if (pbp->bio_children > 1) + break; nsd = &vol->v_subdisks[i]; if (sd == nsd) continue; @@ -784,8 +789,12 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (cbp == NULL) break; G_RAID_LOGREQ(2, cbp, "Retrying read"); - g_raid_subdisk_iostart(nsd, cbp); - pbp->bio_inbed++; + pbp->bio_driver1 = sd; /* Save original subdisk. */ + cbp->bio_caller1 = nsd; + cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; + /* Lock callback starts I/O */ + g_raid_lock_range(sd->sd_volume, + cbp->bio_offset, cbp->bio_length, pbp, cbp); return; } /* @@ -796,9 +805,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ G_RAID_LOGREQ(2, bp, "Couldn't retry read, failing it"); } - pbp->bio_inbed++; - if (pbp->bio_cmd == BIO_READ && pbp->bio_children == 2 && - bp->bio_cflags == 0) { + if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 && + pbp->bio_children > 1) { /* * If it was a read, and bio_children is 2, then we just * recovered the data from the second drive. We should try to @@ -813,17 +821,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ G_RAID_LOGREQ(3, bp, "Recovered data from other drive"); cbp = g_clone_bio(pbp); if (cbp != NULL) { - nsd = bp->bio_caller1; cbp->bio_cmd = BIO_WRITE; cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - cbp->bio_caller1 = nsd; - G_RAID_LOGREQ(3, bp, + G_RAID_LOGREQ(3, cbp, "Attempting bad sector remap on failing drive."); - /* Lock callback starts I/O */ - g_raid_lock_range(sd->sd_volume, - cbp->bio_offset, cbp->bio_length, cbp); + g_raid_subdisk_iostart(pbp->bio_driver1, cbp); + return; } } +remapdone: if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) { /* * We're done with a remap write, mark the range as unlocked. @@ -834,14 +840,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * it now. However, we need to reset error to 0 in that case * because we're not failing the original I/O which succeeded. */ - G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); - g_raid_unlock_range(sd->sd_volume, bp->bio_offset, - bp->bio_length); - if (bp->bio_error) { - G_RAID_LOGREQ(3, bp, "Error on remap: mark subdisk bad."); + if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) { + G_RAID_LOGREQ(0, bp, "Remap write failed: " + "failing subdisk."); g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); bp->bio_error = 0; } + G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); + g_raid_unlock_range(sd->sd_volume, bp->bio_offset, + bp->bio_length); } error = bp->bio_error; g_destroy_bio(bp); From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 22:16:33 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 50E4610657B3; Tue, 8 Feb 2011 22:16:33 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 29FE38FC19; Tue, 8 Feb 2011 22:16:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18MGX3d061701; Tue, 8 Feb 2011 22:16:33 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18MGXRV061697; Tue, 8 Feb 2011 22:16:33 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102082216.p18MGXRV061697@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 22:16:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218462 - in projects/graid/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib lib/liblzma lib/librtld_db lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/sched ... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 22:16:33 -0000 Author: mav Date: Tue Feb 8 22:16:32 2011 New Revision: 218462 URL: http://svn.freebsd.org/changeset/base/218462 Log: MFH r218459 Modified: projects/graid/8/sys/geom/raid/g_raid.c projects/graid/8/sys/geom/raid/g_raid.h projects/graid/8/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/8/ (props changed) projects/graid/8/COPYRIGHT (props changed) projects/graid/8/LOCKS (props changed) projects/graid/8/MAINTAINERS (props changed) projects/graid/8/Makefile (props changed) projects/graid/8/Makefile.inc1 (props changed) projects/graid/8/ObsoleteFiles.inc (props changed) projects/graid/8/README (props changed) projects/graid/8/UPDATING (props changed) projects/graid/8/bin/ (props changed) projects/graid/8/bin/chio/ (props changed) projects/graid/8/bin/chmod/ (props changed) projects/graid/8/bin/cp/ (props changed) projects/graid/8/bin/csh/ (props changed) projects/graid/8/bin/date/ (props changed) projects/graid/8/bin/echo/ (props changed) projects/graid/8/bin/expr/ (props changed) projects/graid/8/bin/getfacl/ (props changed) projects/graid/8/bin/kill/ (props changed) projects/graid/8/bin/ln/ (props changed) projects/graid/8/bin/ls/ (props changed) projects/graid/8/bin/mv/ (props changed) projects/graid/8/bin/pax/ (props changed) projects/graid/8/bin/pkill/ (props changed) projects/graid/8/bin/ps/ (props changed) projects/graid/8/bin/pwait/ (props changed) projects/graid/8/bin/setfacl/ (props changed) projects/graid/8/bin/sh/ (props changed) projects/graid/8/bin/sleep/ (props changed) projects/graid/8/bin/test/ (props changed) projects/graid/8/cddl/ (props changed) projects/graid/8/cddl/compat/opensolaris/ (props changed) projects/graid/8/cddl/contrib/opensolaris/ (props changed) projects/graid/8/cddl/lib/ (props changed) projects/graid/8/cddl/lib/libnvpair/ (props changed) projects/graid/8/cddl/lib/libzpool/ (props changed) projects/graid/8/cddl/usr.bin/ (props changed) projects/graid/8/cddl/usr.sbin/ (props changed) projects/graid/8/contrib/ (props changed) projects/graid/8/contrib/amd/ (props changed) projects/graid/8/contrib/bc/ (props changed) projects/graid/8/contrib/bind9/ (props changed) projects/graid/8/contrib/binutils/ (props changed) projects/graid/8/contrib/bsnmp/ (props changed) projects/graid/8/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/8/contrib/bzip2/ (props changed) projects/graid/8/contrib/com_err/ (props changed) projects/graid/8/contrib/csup/ (props changed) projects/graid/8/contrib/cvs/ (props changed) projects/graid/8/contrib/diff/ (props changed) projects/graid/8/contrib/ee/ (props changed) projects/graid/8/contrib/expat/ (props changed) projects/graid/8/contrib/file/ (props changed) projects/graid/8/contrib/gcc/ (props changed) projects/graid/8/contrib/gcclibs/ (props changed) projects/graid/8/contrib/gdb/ (props changed) projects/graid/8/contrib/gdtoa/ (props changed) projects/graid/8/contrib/gnu-sort/ (props changed) projects/graid/8/contrib/gperf/ (props changed) projects/graid/8/contrib/groff/ (props changed) projects/graid/8/contrib/ipfilter/ (props changed) projects/graid/8/contrib/less/ (props changed) projects/graid/8/contrib/libbegemot/ (props changed) projects/graid/8/contrib/libf2c/ (props changed) projects/graid/8/contrib/libobjc/ (props changed) projects/graid/8/contrib/libpcap/ (props changed) projects/graid/8/contrib/libreadline/ (props changed) projects/graid/8/contrib/libstdc++/ (props changed) projects/graid/8/contrib/lukemftp/ (props changed) projects/graid/8/contrib/lukemftpd/ (props changed) projects/graid/8/contrib/ncurses/ (props changed) projects/graid/8/contrib/netcat/ (props changed) projects/graid/8/contrib/ngatm/ (props changed) projects/graid/8/contrib/ntp/ (props changed) projects/graid/8/contrib/nvi/ (props changed) projects/graid/8/contrib/one-true-awk/ (props changed) projects/graid/8/contrib/openbsm/ (props changed) projects/graid/8/contrib/openpam/ (props changed) projects/graid/8/contrib/opie/ (props changed) projects/graid/8/contrib/pam_modules/ (props changed) projects/graid/8/contrib/pf/ (props changed) projects/graid/8/contrib/pnpinfo/ (props changed) projects/graid/8/contrib/sendmail/ (props changed) projects/graid/8/contrib/smbfs/ (props changed) projects/graid/8/contrib/tcp_wrappers/ (props changed) projects/graid/8/contrib/tcpdump/ (props changed) projects/graid/8/contrib/tcsh/ (props changed) projects/graid/8/contrib/telnet/ (props changed) projects/graid/8/contrib/texinfo/ (props changed) projects/graid/8/contrib/top/ (props changed) projects/graid/8/contrib/top/install-sh (props changed) projects/graid/8/contrib/traceroute/ (props changed) projects/graid/8/contrib/wpa/ (props changed) projects/graid/8/contrib/xz/ (props changed) projects/graid/8/contrib/xz/AUTHORS (props changed) projects/graid/8/contrib/xz/COPYING (props changed) projects/graid/8/contrib/xz/ChangeLog (props changed) projects/graid/8/contrib/xz/FREEBSD-Xlist (props changed) projects/graid/8/contrib/xz/FREEBSD-upgrade (props changed) projects/graid/8/contrib/xz/README (props changed) projects/graid/8/contrib/xz/THANKS (props changed) projects/graid/8/contrib/xz/TODO (props changed) projects/graid/8/contrib/xz/po/ (props changed) projects/graid/8/contrib/xz/src/ (props changed) projects/graid/8/crypto/ (props changed) projects/graid/8/crypto/heimdal/ (props changed) projects/graid/8/crypto/openssh/ (props changed) projects/graid/8/crypto/openssl/ (props changed) projects/graid/8/etc/ (props changed) projects/graid/8/games/ (props changed) projects/graid/8/games/factor/ (props changed) projects/graid/8/games/fortune/ (props changed) projects/graid/8/games/grdc/ (props changed) projects/graid/8/games/pom/ (props changed) projects/graid/8/gnu/ (props changed) projects/graid/8/gnu/lib/csu/ (props changed) projects/graid/8/gnu/lib/libgcc/ (props changed) projects/graid/8/gnu/lib/libstdc++/ (props changed) projects/graid/8/gnu/usr.bin/ (props changed) projects/graid/8/gnu/usr.bin/Makefile (props changed) projects/graid/8/gnu/usr.bin/dialog/ (props changed) projects/graid/8/gnu/usr.bin/gdb/ (props changed) projects/graid/8/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/8/gnu/usr.bin/groff/ (props changed) projects/graid/8/gnu/usr.bin/patch/ (props changed) projects/graid/8/include/ (props changed) projects/graid/8/kerberos5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_krb5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_spnego/ (props changed) projects/graid/8/kerberos5/usr.bin/kdestroy/ (props changed) projects/graid/8/kerberos5/usr.bin/kpasswd/ (props changed) projects/graid/8/lib/ (props changed) projects/graid/8/lib/Makefile (props changed) projects/graid/8/lib/Makefile.inc (props changed) projects/graid/8/lib/bind/ (props changed) projects/graid/8/lib/csu/ (props changed) projects/graid/8/lib/libalias/ (props changed) projects/graid/8/lib/libarchive/ (props changed) projects/graid/8/lib/libauditd/ (props changed) projects/graid/8/lib/libautofs/ (props changed) projects/graid/8/lib/libbegemot/ (props changed) projects/graid/8/lib/libbluetooth/ (props changed) projects/graid/8/lib/libbsm/ (props changed) projects/graid/8/lib/libbsnmp/ (props changed) projects/graid/8/lib/libbz2/ (props changed) projects/graid/8/lib/libc/ (props changed) projects/graid/8/lib/libc/stdtime/ (props changed) projects/graid/8/lib/libc_r/ (props changed) projects/graid/8/lib/libcalendar/ (props changed) projects/graid/8/lib/libcam/ (props changed) projects/graid/8/lib/libcom_err/ (props changed) projects/graid/8/lib/libcompat/ (props changed) projects/graid/8/lib/libcrypt/ (props changed) projects/graid/8/lib/libdevinfo/ (props changed) projects/graid/8/lib/libdevstat/ (props changed) projects/graid/8/lib/libdisk/ (props changed) projects/graid/8/lib/libdwarf/ (props changed) projects/graid/8/lib/libedit/ (props changed) projects/graid/8/lib/libelf/ (props changed) projects/graid/8/lib/libexpat/ (props changed) projects/graid/8/lib/libfetch/ (props changed) projects/graid/8/lib/libftpio/ (props changed) projects/graid/8/lib/libgeom/ (props changed) projects/graid/8/lib/libgpib/ (props changed) projects/graid/8/lib/libgssapi/ (props changed) projects/graid/8/lib/libipsec/ (props changed) projects/graid/8/lib/libipx/ (props changed) projects/graid/8/lib/libjail/ (props changed) projects/graid/8/lib/libkiconv/ (props changed) projects/graid/8/lib/libkse/ (props changed) projects/graid/8/lib/libkvm/ (props changed) projects/graid/8/lib/liblzma/ (props changed) projects/graid/8/lib/liblzma/Makefile (props changed) projects/graid/8/lib/liblzma/Symbol.map (props changed) projects/graid/8/lib/liblzma/Versions.def (props changed) projects/graid/8/lib/liblzma/config.h (props changed) projects/graid/8/lib/libmagic/ (props changed) projects/graid/8/lib/libmd/ (props changed) projects/graid/8/lib/libmemstat/ (props changed) projects/graid/8/lib/libmilter/ (props changed) projects/graid/8/lib/libmp/ (props changed) projects/graid/8/lib/libncp/ (props changed) projects/graid/8/lib/libnetgraph/ (props changed) projects/graid/8/lib/libngatm/ (props changed) projects/graid/8/lib/libopie/ (props changed) projects/graid/8/lib/libpam/ (props changed) projects/graid/8/lib/libpcap/ (props changed) projects/graid/8/lib/libpmc/ (props changed) projects/graid/8/lib/libproc/ (props changed) projects/graid/8/lib/libradius/ (props changed) projects/graid/8/lib/librpcsec_gss/ (props changed) projects/graid/8/lib/librpcsvc/ (props changed) projects/graid/8/lib/librt/ (props changed) projects/graid/8/lib/librtld_db/ (props changed) projects/graid/8/lib/librtld_db/Makefile (props changed) projects/graid/8/lib/librtld_db/librtld_db.3 (props changed) projects/graid/8/lib/librtld_db/rtld_db.c (props changed) projects/graid/8/lib/librtld_db/rtld_db.h (props changed) projects/graid/8/lib/libsbuf/ (props changed) projects/graid/8/lib/libsdp/ (props changed) projects/graid/8/lib/libsm/ (props changed) projects/graid/8/lib/libsmb/ (props changed) projects/graid/8/lib/libsmdb/ (props changed) projects/graid/8/lib/libsmutil/ (props changed) projects/graid/8/lib/libstand/ (props changed) projects/graid/8/lib/libtacplus/ (props changed) projects/graid/8/lib/libtelnet/ (props changed) projects/graid/8/lib/libthr/ (props changed) projects/graid/8/lib/libthread_db/ (props changed) projects/graid/8/lib/libufs/ (props changed) projects/graid/8/lib/libugidfw/ (props changed) projects/graid/8/lib/libusb/ (props changed) projects/graid/8/lib/libusb/usb.h (props changed) projects/graid/8/lib/libusbhid/ (props changed) projects/graid/8/lib/libutil/ (props changed) projects/graid/8/lib/libvgl/ (props changed) projects/graid/8/lib/libwrap/ (props changed) projects/graid/8/lib/liby/ (props changed) projects/graid/8/lib/libypclnt/ (props changed) projects/graid/8/lib/libz/ (props changed) projects/graid/8/lib/libz/contrib/ (props changed) projects/graid/8/lib/msun/ (props changed) projects/graid/8/lib/ncurses/ (props changed) projects/graid/8/libexec/ (props changed) projects/graid/8/libexec/ftpd/ (props changed) projects/graid/8/libexec/rtld-elf/ (props changed) projects/graid/8/libexec/tftpd/ (props changed) projects/graid/8/release/ (props changed) projects/graid/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/8/release/picobsd/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed) projects/graid/8/release/picobsd/qemu/ (props changed) projects/graid/8/release/picobsd/tinyware/login/ (props changed) projects/graid/8/release/powerpc/ (props changed) projects/graid/8/rescue/ (props changed) projects/graid/8/sbin/ (props changed) projects/graid/8/sbin/atacontrol/ (props changed) projects/graid/8/sbin/bsdlabel/ (props changed) projects/graid/8/sbin/camcontrol/ (props changed) projects/graid/8/sbin/ddb/ (props changed) projects/graid/8/sbin/devd/ (props changed) projects/graid/8/sbin/devfs/ (props changed) projects/graid/8/sbin/dhclient/ (props changed) projects/graid/8/sbin/dump/ (props changed) projects/graid/8/sbin/dumpfs/ (props changed) projects/graid/8/sbin/fdisk/ (props changed) projects/graid/8/sbin/fsck/ (props changed) projects/graid/8/sbin/fsck_ffs/ (props changed) projects/graid/8/sbin/fsck_msdosfs/ (props changed) projects/graid/8/sbin/fsirand/ (props changed) projects/graid/8/sbin/geom/ (props changed) projects/graid/8/sbin/geom/class/multipath/ (props changed) projects/graid/8/sbin/geom/class/part/ (props changed) projects/graid/8/sbin/geom/class/sched/gsched.8 (props changed) projects/graid/8/sbin/geom/class/stripe/ (props changed) projects/graid/8/sbin/ggate/ (props changed) projects/graid/8/sbin/growfs/ (props changed) projects/graid/8/sbin/hastctl/ (props changed) projects/graid/8/sbin/hastd/ (props changed) projects/graid/8/sbin/ifconfig/ (props changed) projects/graid/8/sbin/ipfw/ (props changed) projects/graid/8/sbin/iscontrol/ (props changed) projects/graid/8/sbin/kldload/ (props changed) projects/graid/8/sbin/kldstat/ (props changed) projects/graid/8/sbin/mdconfig/ (props changed) projects/graid/8/sbin/mksnap_ffs/ (props changed) projects/graid/8/sbin/mount/ (props changed) projects/graid/8/sbin/mount_cd9660/ (props changed) projects/graid/8/sbin/mount_msdosfs/ (props changed) projects/graid/8/sbin/mount_nfs/ (props changed) projects/graid/8/sbin/natd/ (props changed) projects/graid/8/sbin/newfs/ (props changed) projects/graid/8/sbin/newfs_msdos/ (props changed) projects/graid/8/sbin/ping6/ (props changed) projects/graid/8/sbin/reboot/ (props changed) projects/graid/8/sbin/restore/ (props changed) projects/graid/8/sbin/route/ (props changed) projects/graid/8/sbin/routed/ (props changed) projects/graid/8/sbin/setkey/ (props changed) projects/graid/8/sbin/spppcontrol/ (props changed) projects/graid/8/sbin/sysctl/ (props changed) projects/graid/8/sbin/tunefs/ (props changed) projects/graid/8/sbin/umount/ (props changed) projects/graid/8/secure/ (props changed) projects/graid/8/secure/lib/libcrypto/ (props changed) projects/graid/8/secure/lib/libssl/ (props changed) projects/graid/8/secure/usr.bin/bdes/ (props changed) projects/graid/8/secure/usr.bin/openssl/ (props changed) projects/graid/8/share/ (props changed) projects/graid/8/share/dict/ (props changed) projects/graid/8/share/doc/papers/jail/ (props changed) projects/graid/8/share/doc/smm/01.setup/ (props changed) projects/graid/8/share/examples/ (props changed) projects/graid/8/share/examples/etc/ (props changed) projects/graid/8/share/examples/kld/syscall/ (props changed) projects/graid/8/share/man/ (props changed) projects/graid/8/share/man/man1/ (props changed) projects/graid/8/share/man/man3/ (props changed) projects/graid/8/share/man/man4/ (props changed) projects/graid/8/share/man/man5/ (props changed) projects/graid/8/share/man/man7/ (props changed) projects/graid/8/share/man/man8/ (props changed) projects/graid/8/share/man/man9/ (props changed) projects/graid/8/share/misc/ (props changed) projects/graid/8/share/mk/ (props changed) projects/graid/8/share/syscons/ (props changed) projects/graid/8/share/termcap/ (props changed) projects/graid/8/share/timedef/ (props changed) projects/graid/8/share/zoneinfo/ (props changed) projects/graid/8/sys/ (props changed) projects/graid/8/sys/amd64/include/xen/ (props changed) projects/graid/8/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/8/sys/contrib/dev/acpica/ (props changed) projects/graid/8/sys/contrib/pf/ (props changed) projects/graid/8/tools/ (props changed) projects/graid/8/tools/build/mk/ (props changed) projects/graid/8/tools/build/options/ (props changed) projects/graid/8/tools/debugscripts/ (props changed) projects/graid/8/tools/kerneldoc/subsys/ (props changed) projects/graid/8/tools/regression/acct/ (props changed) projects/graid/8/tools/regression/acltools/ (props changed) projects/graid/8/tools/regression/aio/aiotest/ (props changed) projects/graid/8/tools/regression/bin/ (props changed) projects/graid/8/tools/regression/bin/date/ (props changed) projects/graid/8/tools/regression/bin/sh/ (props changed) projects/graid/8/tools/regression/fifo/ (props changed) projects/graid/8/tools/regression/geom/ (props changed) projects/graid/8/tools/regression/lib/libc/ (props changed) projects/graid/8/tools/regression/lib/msun/test-conj.t (props changed) projects/graid/8/tools/regression/mqueue/mqtest1/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest2/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest3/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest4/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest5/ (props changed) projects/graid/8/tools/regression/netinet/ (props changed) projects/graid/8/tools/regression/poll/ (props changed) projects/graid/8/tools/regression/posixsem/ (props changed) projects/graid/8/tools/regression/priv/ (props changed) projects/graid/8/tools/regression/sockets/unix_gc/ (props changed) projects/graid/8/tools/regression/usr.bin/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/sed/ (props changed) projects/graid/8/tools/regression/usr.bin/tr/ (props changed) projects/graid/8/tools/test/ (props changed) projects/graid/8/tools/tools/ (props changed) projects/graid/8/tools/tools/ath/ (props changed) projects/graid/8/tools/tools/ath/common/dumpregs.h (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/graid/8/tools/tools/mctest/ (props changed) projects/graid/8/tools/tools/nanobsd/ (props changed) projects/graid/8/tools/tools/netrate/ (props changed) projects/graid/8/tools/tools/netrate/tcpp/ (props changed) projects/graid/8/tools/tools/termcap/termcap.pl (props changed) projects/graid/8/tools/tools/umastat/ (props changed) projects/graid/8/tools/tools/vimage/ (props changed) projects/graid/8/usr.bin/ (props changed) projects/graid/8/usr.bin/apply/ (props changed) projects/graid/8/usr.bin/ar/ (props changed) projects/graid/8/usr.bin/awk/ (props changed) projects/graid/8/usr.bin/biff/ (props changed) projects/graid/8/usr.bin/c89/ (props changed) projects/graid/8/usr.bin/c99/ (props changed) projects/graid/8/usr.bin/calendar/ (props changed) projects/graid/8/usr.bin/catman/ (props changed) projects/graid/8/usr.bin/chpass/Makefile (props changed) projects/graid/8/usr.bin/column/ (props changed) projects/graid/8/usr.bin/comm/ (props changed) projects/graid/8/usr.bin/cpio/ (props changed) projects/graid/8/usr.bin/csup/ (props changed) projects/graid/8/usr.bin/du/ (props changed) projects/graid/8/usr.bin/ee/ (props changed) projects/graid/8/usr.bin/enigma/ (props changed) projects/graid/8/usr.bin/fetch/ (props changed) projects/graid/8/usr.bin/find/ (props changed) projects/graid/8/usr.bin/finger/ (props changed) projects/graid/8/usr.bin/fold/ (props changed) projects/graid/8/usr.bin/fstat/ (props changed) projects/graid/8/usr.bin/gcore/ (props changed) projects/graid/8/usr.bin/getopt/ (props changed) projects/graid/8/usr.bin/gzip/ (props changed) projects/graid/8/usr.bin/hexdump/ (props changed) projects/graid/8/usr.bin/indent/ (props changed) projects/graid/8/usr.bin/jot/ (props changed) projects/graid/8/usr.bin/kdump/ (props changed) projects/graid/8/usr.bin/killall/ (props changed) projects/graid/8/usr.bin/ktrace/ (props changed) projects/graid/8/usr.bin/ldd/ (props changed) projects/graid/8/usr.bin/lex/ (props changed) projects/graid/8/usr.bin/locale/ (props changed) projects/graid/8/usr.bin/locate/ (props changed) projects/graid/8/usr.bin/lockf/ (props changed) projects/graid/8/usr.bin/look/ (props changed) projects/graid/8/usr.bin/mail/ (props changed) projects/graid/8/usr.bin/make/ (props changed) projects/graid/8/usr.bin/makewhatis/ (props changed) projects/graid/8/usr.bin/minigzip/ (props changed) projects/graid/8/usr.bin/ncal/ (props changed) projects/graid/8/usr.bin/netstat/ (props changed) projects/graid/8/usr.bin/pathchk/ (props changed) projects/graid/8/usr.bin/perror/ (props changed) projects/graid/8/usr.bin/procstat/ (props changed) projects/graid/8/usr.bin/rpcgen/ (props changed) projects/graid/8/usr.bin/ruptime/ (props changed) projects/graid/8/usr.bin/script/ (props changed) projects/graid/8/usr.bin/sed/ (props changed) projects/graid/8/usr.bin/sockstat/ (props changed) projects/graid/8/usr.bin/split/ (props changed) projects/graid/8/usr.bin/stat/ (props changed) projects/graid/8/usr.bin/systat/ (props changed) projects/graid/8/usr.bin/tar/ (props changed) projects/graid/8/usr.bin/tftp/ (props changed) projects/graid/8/usr.bin/top/ (props changed) projects/graid/8/usr.bin/touch/ (props changed) projects/graid/8/usr.bin/tr/ (props changed) projects/graid/8/usr.bin/truss/ (props changed) projects/graid/8/usr.bin/uname/ (props changed) projects/graid/8/usr.bin/unifdef/ (props changed) projects/graid/8/usr.bin/uniq/ (props changed) projects/graid/8/usr.bin/unzip/ (props changed) projects/graid/8/usr.bin/uudecode/ (props changed) projects/graid/8/usr.bin/vmstat/ (props changed) projects/graid/8/usr.bin/w/ (props changed) projects/graid/8/usr.bin/whois/ (props changed) projects/graid/8/usr.bin/xinstall/ (props changed) projects/graid/8/usr.bin/xlint/ (props changed) projects/graid/8/usr.bin/xz/ (props changed) projects/graid/8/usr.bin/yacc/ (props changed) projects/graid/8/usr.sbin/ (props changed) projects/graid/8/usr.sbin/IPXrouted/ (props changed) projects/graid/8/usr.sbin/Makefile (props changed) projects/graid/8/usr.sbin/Makefile.inc (props changed) projects/graid/8/usr.sbin/ac/ (props changed) projects/graid/8/usr.sbin/accton/ (props changed) projects/graid/8/usr.sbin/acpi/ (props changed) projects/graid/8/usr.sbin/adduser/ (props changed) projects/graid/8/usr.sbin/amd/ (props changed) projects/graid/8/usr.sbin/ancontrol/ (props changed) projects/graid/8/usr.sbin/apm/ (props changed) projects/graid/8/usr.sbin/apmd/ (props changed) projects/graid/8/usr.sbin/arp/ (props changed) projects/graid/8/usr.sbin/asf/ (props changed) projects/graid/8/usr.sbin/audit/ (props changed) projects/graid/8/usr.sbin/auditd/ (props changed) projects/graid/8/usr.sbin/auditreduce/ (props changed) projects/graid/8/usr.sbin/authpf/ (props changed) projects/graid/8/usr.sbin/bluetooth/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidcontrol/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidd/ (props changed) projects/graid/8/usr.sbin/boot0cfg/ (props changed) projects/graid/8/usr.sbin/boot98cfg/ (props changed) projects/graid/8/usr.sbin/bootparamd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/8/usr.sbin/btxld/ (props changed) projects/graid/8/usr.sbin/burncd/ (props changed) projects/graid/8/usr.sbin/cdcontrol/ (props changed) projects/graid/8/usr.sbin/chkgrp/ (props changed) projects/graid/8/usr.sbin/chown/ (props changed) projects/graid/8/usr.sbin/chroot/ (props changed) projects/graid/8/usr.sbin/ckdist/ (props changed) projects/graid/8/usr.sbin/clear_locks/ (props changed) projects/graid/8/usr.sbin/config/ (props changed) projects/graid/8/usr.sbin/config/SMM.doc/ (props changed) projects/graid/8/usr.sbin/cpucontrol/ (props changed) projects/graid/8/usr.sbin/crashinfo/ (props changed) projects/graid/8/usr.sbin/cron/ (props changed) projects/graid/8/usr.sbin/crunch/ (props changed) projects/graid/8/usr.sbin/crunch/examples/ (props changed) projects/graid/8/usr.sbin/ctm/ (props changed) projects/graid/8/usr.sbin/cxgbtool/ (props changed) projects/graid/8/usr.sbin/daemon/ (props changed) projects/graid/8/usr.sbin/dconschat/ (props changed) projects/graid/8/usr.sbin/devinfo/ (props changed) projects/graid/8/usr.sbin/digictl/ (props changed) projects/graid/8/usr.sbin/diskinfo/ (props changed) projects/graid/8/usr.sbin/dnssec-dsfromkey/ (props changed) projects/graid/8/usr.sbin/dnssec-keyfromlabel/ (props changed) projects/graid/8/usr.sbin/dnssec-keygen/ (props changed) projects/graid/8/usr.sbin/dnssec-signzone/ (props changed) projects/graid/8/usr.sbin/dumpcis/ (props changed) projects/graid/8/usr.sbin/dumpcis/cardinfo.h (props changed) projects/graid/8/usr.sbin/dumpcis/cis.h (props changed) projects/graid/8/usr.sbin/editmap/ (props changed) projects/graid/8/usr.sbin/edquota/ (props changed) projects/graid/8/usr.sbin/eeprom/ (props changed) projects/graid/8/usr.sbin/extattr/ (props changed) projects/graid/8/usr.sbin/extattrctl/ (props changed) projects/graid/8/usr.sbin/faithd/ (props changed) projects/graid/8/usr.sbin/fdcontrol/ (props changed) projects/graid/8/usr.sbin/fdformat/ (props changed) projects/graid/8/usr.sbin/fdread/ (props changed) projects/graid/8/usr.sbin/fdwrite/ (props changed) projects/graid/8/usr.sbin/fifolog/ (props changed) projects/graid/8/usr.sbin/flowctl/ (props changed) projects/graid/8/usr.sbin/freebsd-update/ (props changed) projects/graid/8/usr.sbin/ftp-proxy/ (props changed) projects/graid/8/usr.sbin/fwcontrol/ (props changed) projects/graid/8/usr.sbin/getfmac/ (props changed) projects/graid/8/usr.sbin/getpmac/ (props changed) projects/graid/8/usr.sbin/gssd/ (props changed) projects/graid/8/usr.sbin/gstat/ (props changed) projects/graid/8/usr.sbin/i2c/ (props changed) projects/graid/8/usr.sbin/ifmcstat/ (props changed) projects/graid/8/usr.sbin/inetd/ (props changed) projects/graid/8/usr.sbin/iostat/ (props changed) projects/graid/8/usr.sbin/ip6addrctl/ (props changed) projects/graid/8/usr.sbin/ipfwpcap/ (props changed) projects/graid/8/usr.sbin/jail/ (props changed) projects/graid/8/usr.sbin/jexec/ (props changed) projects/graid/8/usr.sbin/jls/ (props changed) projects/graid/8/usr.sbin/kbdcontrol/ (props changed) projects/graid/8/usr.sbin/kbdmap/ (props changed) projects/graid/8/usr.sbin/kernbb/ (props changed) projects/graid/8/usr.sbin/keyserv/ (props changed) projects/graid/8/usr.sbin/kgmon/ (props changed) projects/graid/8/usr.sbin/kgzip/ (props changed) projects/graid/8/usr.sbin/kldxref/ (props changed) projects/graid/8/usr.sbin/lastlogin/ (props changed) projects/graid/8/usr.sbin/lmcconfig/ (props changed) projects/graid/8/usr.sbin/lpr/ (props changed) projects/graid/8/usr.sbin/lptcontrol/ (props changed) projects/graid/8/usr.sbin/mailstats/ (props changed) projects/graid/8/usr.sbin/mailwrapper/ (props changed) projects/graid/8/usr.sbin/makefs/ (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/8/usr.sbin/makefs/getid.c (props changed) projects/graid/8/usr.sbin/makemap/ (props changed) projects/graid/8/usr.sbin/manctl/ (props changed) projects/graid/8/usr.sbin/memcontrol/ (props changed) projects/graid/8/usr.sbin/mergemaster/ (props changed) projects/graid/8/usr.sbin/mfiutil/ (props changed) projects/graid/8/usr.sbin/mixer/ (props changed) projects/graid/8/usr.sbin/mld6query/ (props changed) projects/graid/8/usr.sbin/mlxcontrol/ (props changed) projects/graid/8/usr.sbin/mount_nwfs/ (props changed) projects/graid/8/usr.sbin/mount_portalfs/ (props changed) projects/graid/8/usr.sbin/mount_smbfs/ (props changed) projects/graid/8/usr.sbin/mountd/ (props changed) projects/graid/8/usr.sbin/moused/ (props changed) projects/graid/8/usr.sbin/mptable/ (props changed) projects/graid/8/usr.sbin/mptutil/ (props changed) projects/graid/8/usr.sbin/mtest/ (props changed) projects/graid/8/usr.sbin/mtree/ (props changed) projects/graid/8/usr.sbin/named/ (props changed) projects/graid/8/usr.sbin/named-checkconf/ (props changed) projects/graid/8/usr.sbin/named-checkzone/ (props changed) projects/graid/8/usr.sbin/named.reload/ (props changed) projects/graid/8/usr.sbin/ndiscvt/ (props changed) projects/graid/8/usr.sbin/ndp/ (props changed) projects/graid/8/usr.sbin/newsyslog/ (props changed) projects/graid/8/usr.sbin/nfscbd/ (props changed) projects/graid/8/usr.sbin/nfsd/ (props changed) projects/graid/8/usr.sbin/nfsdumpstate/ (props changed) projects/graid/8/usr.sbin/nfsrevoke/ (props changed) projects/graid/8/usr.sbin/nfsuserd/ (props changed) projects/graid/8/usr.sbin/ngctl/ (props changed) projects/graid/8/usr.sbin/nghook/ (props changed) projects/graid/8/usr.sbin/nologin/ (props changed) projects/graid/8/usr.sbin/nscd/ (props changed) projects/graid/8/usr.sbin/ntp/ (props changed) projects/graid/8/usr.sbin/nvram/ (props changed) projects/graid/8/usr.sbin/ofwdump/ (props changed) projects/graid/8/usr.sbin/pciconf/ (props changed) projects/graid/8/usr.sbin/periodic/ (props changed) projects/graid/8/usr.sbin/pkg_install/ (props changed) projects/graid/8/usr.sbin/pmcannotate/ (props changed) projects/graid/8/usr.sbin/pmccontrol/ (props changed) projects/graid/8/usr.sbin/pmcstat/ (props changed) projects/graid/8/usr.sbin/pnpinfo/ (props changed) projects/graid/8/usr.sbin/portsnap/ (props changed) projects/graid/8/usr.sbin/powerd/ (props changed) projects/graid/8/usr.sbin/ppp/ (props changed) projects/graid/8/usr.sbin/pppctl/ (props changed) projects/graid/8/usr.sbin/praliases/ (props changed) projects/graid/8/usr.sbin/praudit/ (props changed) projects/graid/8/usr.sbin/procctl/ (props changed) projects/graid/8/usr.sbin/pstat/ (props changed) projects/graid/8/usr.sbin/pw/ (props changed) projects/graid/8/usr.sbin/pwd_mkdb/ (props changed) projects/graid/8/usr.sbin/quot/ (props changed) projects/graid/8/usr.sbin/quotaon/ (props changed) projects/graid/8/usr.sbin/rarpd/ (props changed) projects/graid/8/usr.sbin/repquota/ (props changed) projects/graid/8/usr.sbin/rip6query/ (props changed) projects/graid/8/usr.sbin/rmt/ (props changed) projects/graid/8/usr.sbin/rndc/ (props changed) projects/graid/8/usr.sbin/rndc-confgen/ (props changed) projects/graid/8/usr.sbin/route6d/ (props changed) projects/graid/8/usr.sbin/rpc.lockd/ (props changed) projects/graid/8/usr.sbin/rpc.statd/ (props changed) projects/graid/8/usr.sbin/rpc.umntall/ (props changed) projects/graid/8/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/8/usr.sbin/rpc.ypupdated/ (props changed) projects/graid/8/usr.sbin/rpc.ypxfrd/ (props changed) projects/graid/8/usr.sbin/rpcbind/ (props changed) projects/graid/8/usr.sbin/rrenumd/ (props changed) projects/graid/8/usr.sbin/rtadvd/ (props changed) projects/graid/8/usr.sbin/rtprio/ (props changed) projects/graid/8/usr.sbin/rtsold/ (props changed) projects/graid/8/usr.sbin/rwhod/ (props changed) projects/graid/8/usr.sbin/sa/ (props changed) projects/graid/8/usr.sbin/sade/ (props changed) projects/graid/8/usr.sbin/sendmail/ (props changed) projects/graid/8/usr.sbin/service/ (props changed) projects/graid/8/usr.sbin/service/Makefile (props changed) projects/graid/8/usr.sbin/service/service.8 (props changed) projects/graid/8/usr.sbin/service/service.sh (props changed) projects/graid/8/usr.sbin/services_mkdb/ (props changed) projects/graid/8/usr.sbin/services_mkdb/Makefile (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.8 (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.c (props changed) projects/graid/8/usr.sbin/services_mkdb/uniq.c (props changed) projects/graid/8/usr.sbin/setfib/ (props changed) projects/graid/8/usr.sbin/setfmac/ (props changed) projects/graid/8/usr.sbin/setpmac/ (props changed) projects/graid/8/usr.sbin/sicontrol/ (props changed) projects/graid/8/usr.sbin/smbmsg/ (props changed) projects/graid/8/usr.sbin/snapinfo/ (props changed) projects/graid/8/usr.sbin/spkrtest/ (props changed) projects/graid/8/usr.sbin/spray/ (props changed) projects/graid/8/usr.sbin/sysinstall/ (props changed) projects/graid/8/usr.sbin/syslogd/ (props changed) projects/graid/8/usr.sbin/tcpdchk/ (props changed) projects/graid/8/usr.sbin/tcpdmatch/ (props changed) projects/graid/8/usr.sbin/tcpdrop/ (props changed) projects/graid/8/usr.sbin/tcpdump/ (props changed) projects/graid/8/usr.sbin/timed/ (props changed) projects/graid/8/usr.sbin/traceroute/ (props changed) projects/graid/8/usr.sbin/traceroute6/ (props changed) projects/graid/8/usr.sbin/trpt/ (props changed) projects/graid/8/usr.sbin/tzsetup/ (props changed) projects/graid/8/usr.sbin/uathload/ (props changed) projects/graid/8/usr.sbin/ugidfw/ (props changed) projects/graid/8/usr.sbin/uhsoctl/ (props changed) projects/graid/8/usr.sbin/usbconfig/ (props changed) projects/graid/8/usr.sbin/usbdevs/ (props changed) projects/graid/8/usr.sbin/vidcontrol/ (props changed) projects/graid/8/usr.sbin/vipw/ (props changed) projects/graid/8/usr.sbin/wake/ (props changed) projects/graid/8/usr.sbin/watch/ (props changed) projects/graid/8/usr.sbin/watchdogd/ (props changed) projects/graid/8/usr.sbin/wlandebug/ (props changed) projects/graid/8/usr.sbin/wlconfig/ (props changed) projects/graid/8/usr.sbin/wpa/ (props changed) projects/graid/8/usr.sbin/yp_mkdb/ (props changed) projects/graid/8/usr.sbin/ypbind/ (props changed) projects/graid/8/usr.sbin/yppoll/ (props changed) projects/graid/8/usr.sbin/yppush/ (props changed) projects/graid/8/usr.sbin/ypserv/ (props changed) projects/graid/8/usr.sbin/ypset/ (props changed) projects/graid/8/usr.sbin/zic/ (props changed) projects/graid/8/usr.sbin/zzz/ (props changed) Modified: projects/graid/8/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.c Tue Feb 8 22:16:29 2011 (r218461) +++ projects/graid/8/sys/geom/raid/g_raid.c Tue Feb 8 22:16:32 2011 (r218462) @@ -1001,7 +1001,8 @@ g_raid_iodone(struct bio *bp, int error) } int -g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp) +g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, + struct bio *ignore, void *argp) { struct g_raid_softc *sc; struct g_raid_lock *lp; @@ -1016,7 +1017,7 @@ g_raid_lock_range(struct g_raid_volume * lp->l_pending = 0; TAILQ_FOREACH(bp, &vol->v_inflight.queue, bio_queue) { - if (g_raid_bio_overlaps(bp, off, len)) + if (bp != ignore && g_raid_bio_overlaps(bp, off, len)) lp->l_pending++; } Modified: projects/graid/8/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.h Tue Feb 8 22:16:29 2011 (r218461) +++ projects/graid/8/sys/geom/raid/g_raid.h Tue Feb 8 22:16:32 2011 (r218462) @@ -377,7 +377,8 @@ struct g_raid_subdisk * g_raid_get_subdi #define G_RAID_DESTROY_HARD 2 int g_raid_destroy(struct g_raid_softc *sc, int how); int g_raid_event_send(void *arg, int event, int flags); -int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp); +int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, + struct bio *ignore, void *argp); int g_raid_unlock_range(struct g_raid_volume *vol, off_t off, off_t len); g_ctl_req_t g_raid_ctl; Modified: projects/graid/8/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/8/sys/geom/raid/tr_raid1.c Tue Feb 8 22:16:29 2011 (r218461) +++ projects/graid/8/sys/geom/raid/tr_raid1.c Tue Feb 8 22:16:32 2011 (r218462) @@ -255,7 +255,7 @@ g_raid_tr_raid1_rebuild_some(struct g_ra trs->trso_flags |= TR_RAID1_F_DOING_SOME; trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, /* Lock callback starts I/O */ - bp->bio_offset, bp->bio_length, bp); + bp->bio_offset, bp->bio_length, NULL, bp); } static void @@ -737,7 +737,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ /* Lock callback starts I/O */ trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, - bp->bio_offset, bp->bio_length, bp); + bp->bio_offset, bp->bio_length, NULL, bp); } } else if (trs->trso_type == TR_RAID1_RESYNC) { /* @@ -749,8 +749,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ } return; } - if (bp->bio_error != 0 && bp->bio_cmd == BIO_READ && - pbp->bio_children == 1 && bp->bio_cflags == 0) { + pbp->bio_inbed++; + if (bp->bio_cmd == BIO_READ && bp->bio_error != 0) { /* * Read failed on first drive. Retry the read error on * another disk drive, if available, before erroring out the @@ -758,9 +758,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ vol = tr->tro_volume; sd->sd_read_errs++; - G_RAID_LOGREQ(3, bp, - "Read failure, attempting recovery. %d total read errs", - sd->sd_read_errs); + G_RAID_LOGREQ(0, bp, + "Read error (%d), %d read errors total", + bp->bio_error, sd->sd_read_errs); /* * If there are too many read errors, we move to degraded. @@ -768,13 +768,18 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * everything to get it back in sync), or just degrade the * drive, which kicks off a resync? */ - if (sd->sd_read_errs > g_raid1_read_err_thresh) + if (sd->sd_read_errs > g_raid1_read_err_thresh) { g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + if (pbp->bio_children == 1) + goto remapdone; + } /* * Find the other disk, and try to do the I/O to it. */ for (nsd = NULL, i = 0; i < vol->v_disks_count; i++) { + if (pbp->bio_children > 1) + break; nsd = &vol->v_subdisks[i]; if (sd == nsd) continue; @@ -784,8 +789,12 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (cbp == NULL) break; G_RAID_LOGREQ(2, cbp, "Retrying read"); - g_raid_subdisk_iostart(nsd, cbp); - pbp->bio_inbed++; + pbp->bio_driver1 = sd; /* Save original subdisk. */ + cbp->bio_caller1 = nsd; + cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; + /* Lock callback starts I/O */ + g_raid_lock_range(sd->sd_volume, + cbp->bio_offset, cbp->bio_length, pbp, cbp); return; } /* @@ -796,9 +805,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ G_RAID_LOGREQ(2, bp, "Couldn't retry read, failing it"); } - pbp->bio_inbed++; - if (pbp->bio_cmd == BIO_READ && pbp->bio_children == 2 && - bp->bio_cflags == 0) { + if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 && + pbp->bio_children > 1) { /* * If it was a read, and bio_children is 2, then we just * recovered the data from the second drive. We should try to @@ -813,17 +821,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ G_RAID_LOGREQ(3, bp, "Recovered data from other drive"); cbp = g_clone_bio(pbp); if (cbp != NULL) { - nsd = bp->bio_caller1; cbp->bio_cmd = BIO_WRITE; cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - cbp->bio_caller1 = nsd; - G_RAID_LOGREQ(3, bp, + G_RAID_LOGREQ(3, cbp, "Attempting bad sector remap on failing drive."); - /* Lock callback starts I/O */ - g_raid_lock_range(sd->sd_volume, - cbp->bio_offset, cbp->bio_length, cbp); + g_raid_subdisk_iostart(pbp->bio_driver1, cbp); + return; } } +remapdone: if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) { /* * We're done with a remap write, mark the range as unlocked. @@ -834,14 +840,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * it now. However, we need to reset error to 0 in that case * because we're not failing the original I/O which succeeded. */ - G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); - g_raid_unlock_range(sd->sd_volume, bp->bio_offset, - bp->bio_length); - if (bp->bio_error) { - G_RAID_LOGREQ(3, bp, "Error on remap: mark subdisk bad."); + if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) { + G_RAID_LOGREQ(0, bp, "Remap write failed: " + "failing subdisk."); g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); bp->bio_error = 0; } + G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); + g_raid_unlock_range(sd->sd_volume, bp->bio_offset, + bp->bio_length); } error = bp->bio_error; g_destroy_bio(bp); From owner-svn-src-projects@FreeBSD.ORG Tue Feb 8 22:17:59 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AE150106567A; Tue, 8 Feb 2011 22:17:59 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9A5128FC14; Tue, 8 Feb 2011 22:17:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p18MHxQC061785; Tue, 8 Feb 2011 22:17:59 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p18MHx00061781; Tue, 8 Feb 2011 22:17:59 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102082217.p18MHx00061781@svn.freebsd.org> From: Alexander Motin Date: Tue, 8 Feb 2011 22:17:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218463 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac share/misc sys/geom/raid tools/tools/nanobsd usr.sbin usr.sbin/bsnmpd/modules/snmp_hos... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2011 22:17:59 -0000 Author: mav Date: Tue Feb 8 22:17:59 2011 New Revision: 218463 URL: http://svn.freebsd.org/changeset/base/218463 Log: MFH r218459 Modified: projects/graid/7/sys/geom/raid/g_raid.c projects/graid/7/sys/geom/raid/g_raid.h projects/graid/7/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/7/ (props changed) projects/graid/7/COPYRIGHT (props changed) projects/graid/7/Makefile (props changed) projects/graid/7/Makefile.inc1 (props changed) projects/graid/7/ObsoleteFiles.inc (props changed) projects/graid/7/UPDATING (props changed) projects/graid/7/bin/ (props changed) projects/graid/7/bin/chflags/ (props changed) projects/graid/7/bin/chio/ (props changed) projects/graid/7/bin/cp/ (props changed) projects/graid/7/bin/csh/ (props changed) projects/graid/7/bin/dd/ (props changed) projects/graid/7/bin/df/ (props changed) projects/graid/7/bin/echo/ (props changed) projects/graid/7/bin/expr/ (props changed) projects/graid/7/bin/kill/ (props changed) projects/graid/7/bin/ln/ (props changed) projects/graid/7/bin/ls/ (props changed) projects/graid/7/bin/pax/ (props changed) projects/graid/7/bin/ps/ (props changed) projects/graid/7/bin/rm/ (props changed) projects/graid/7/bin/sh/ (props changed) projects/graid/7/bin/test/ (props changed) projects/graid/7/cddl/contrib/opensolaris/ (props changed) projects/graid/7/cddl/lib/libzpool/ (props changed) projects/graid/7/contrib/bind9/ (props changed) projects/graid/7/contrib/binutils/ (props changed) projects/graid/7/contrib/bsnmp/ (props changed) projects/graid/7/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/7/contrib/cpio/ (props changed) projects/graid/7/contrib/csup/ (props changed) projects/graid/7/contrib/expat/ (props changed) projects/graid/7/contrib/gcc/ (props changed) projects/graid/7/contrib/gdb/ (props changed) projects/graid/7/contrib/gdtoa/ (props changed) projects/graid/7/contrib/groff/ (props changed) projects/graid/7/contrib/ipfilter/ (props changed) projects/graid/7/contrib/less/ (props changed) projects/graid/7/contrib/libpcap/ (props changed) projects/graid/7/contrib/ncurses/ (props changed) projects/graid/7/contrib/netcat/ (props changed) projects/graid/7/contrib/ntp/ (props changed) projects/graid/7/contrib/nvi/ (props changed) projects/graid/7/contrib/pf/ (props changed) projects/graid/7/contrib/sendmail/ (props changed) projects/graid/7/contrib/smbfs/ (props changed) projects/graid/7/contrib/tcp_wrappers/ (props changed) projects/graid/7/contrib/tcsh/ (props changed) projects/graid/7/contrib/telnet/ (props changed) projects/graid/7/contrib/top/ (props changed) projects/graid/7/contrib/traceroute/ (props changed) projects/graid/7/contrib/wpa_supplicant/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.conf (props changed) projects/graid/7/crypto/openssh/ (props changed) projects/graid/7/crypto/openssl/ (props changed) projects/graid/7/etc/ (props changed) projects/graid/7/games/factor/ (props changed) projects/graid/7/games/fortune/ (props changed) projects/graid/7/games/grdc/ (props changed) projects/graid/7/gnu/ (props changed) projects/graid/7/gnu/lib/libstdc++/ (props changed) projects/graid/7/gnu/usr.bin/ (props changed) projects/graid/7/gnu/usr.bin/cc/ (props changed) projects/graid/7/gnu/usr.bin/cpio/ (props changed) projects/graid/7/gnu/usr.bin/cvs/ (props changed) projects/graid/7/gnu/usr.bin/gdb/ (props changed) projects/graid/7/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/7/gnu/usr.bin/grep/ (props changed) projects/graid/7/gnu/usr.bin/groff/ (props changed) projects/graid/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/graid/7/gnu/usr.bin/man/ (props changed) projects/graid/7/gnu/usr.bin/sort/ (props changed) projects/graid/7/include/ (props changed) projects/graid/7/kerberos5/ (props changed) projects/graid/7/lib/ (props changed) projects/graid/7/lib/bind/ (props changed) projects/graid/7/lib/csu/ (props changed) projects/graid/7/lib/libarchive/ (props changed) projects/graid/7/lib/libbluetooth/ (props changed) projects/graid/7/lib/libc/ (props changed) projects/graid/7/lib/libc/stdtime/ (props changed) projects/graid/7/lib/libc_r/ (props changed) projects/graid/7/lib/libcam/ (props changed) projects/graid/7/lib/libdisk/ (props changed) projects/graid/7/lib/libdwarf/ (props changed) projects/graid/7/lib/libelf/ (props changed) projects/graid/7/lib/libexpat/ (props changed) projects/graid/7/lib/libfetch/ (props changed) projects/graid/7/lib/libftpio/ (props changed) projects/graid/7/lib/libgeom/ (props changed) projects/graid/7/lib/libgssapi/ (props changed) projects/graid/7/lib/libkse/ (props changed) projects/graid/7/lib/libkvm/ (props changed) projects/graid/7/lib/libmagic/ (props changed) projects/graid/7/lib/libmemstat/ (props changed) projects/graid/7/lib/libpmc/ (props changed) projects/graid/7/lib/libradius/ (props changed) projects/graid/7/lib/libsm/ (props changed) projects/graid/7/lib/libstand/ (props changed) projects/graid/7/lib/libthr/ (props changed) projects/graid/7/lib/libthread_db/ (props changed) projects/graid/7/lib/libufs/ (props changed) projects/graid/7/lib/libutil/ (props changed) projects/graid/7/lib/msun/ (props changed) projects/graid/7/libexec/ (props changed) projects/graid/7/libexec/ftpd/ (props changed) projects/graid/7/libexec/rpc.rquotad/ (props changed) projects/graid/7/libexec/rpc.rstatd/ (props changed) projects/graid/7/libexec/rtld-elf/ (props changed) projects/graid/7/libexec/tftpd/ (props changed) projects/graid/7/release/ (props changed) projects/graid/7/release/doc/ (props changed) projects/graid/7/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/7/release/picobsd/tinyware/login/ (props changed) projects/graid/7/rescue/ (props changed) projects/graid/7/sbin/ (props changed) projects/graid/7/sbin/atacontrol/ (props changed) projects/graid/7/sbin/bsdlabel/ (props changed) projects/graid/7/sbin/clri/ (props changed) projects/graid/7/sbin/ddb/ (props changed) projects/graid/7/sbin/devd/ (props changed) projects/graid/7/sbin/devfs/ (props changed) projects/graid/7/sbin/dhclient/ (props changed) projects/graid/7/sbin/dumpfs/ (props changed) projects/graid/7/sbin/fdisk/ (props changed) projects/graid/7/sbin/fdisk_pc98/ (props changed) projects/graid/7/sbin/fsck/ (props changed) projects/graid/7/sbin/fsck_ffs/ (props changed) projects/graid/7/sbin/fsck_msdosfs/ (props changed) projects/graid/7/sbin/geom/ (props changed) projects/graid/7/sbin/geom/class/label/ (props changed) projects/graid/7/sbin/geom/class/part/ (props changed) projects/graid/7/sbin/geom/class/stripe/ (props changed) projects/graid/7/sbin/geom/misc/ (props changed) projects/graid/7/sbin/growfs/ (props changed) projects/graid/7/sbin/ifconfig/ (props changed) projects/graid/7/sbin/init/ (props changed) projects/graid/7/sbin/ipf/ (props changed) projects/graid/7/sbin/ipfw/ (props changed) projects/graid/7/sbin/md5/ (props changed) projects/graid/7/sbin/mdconfig/ (props changed) projects/graid/7/sbin/mksnap_ffs/ (props changed) projects/graid/7/sbin/mount/ (props changed) projects/graid/7/sbin/mount_msdosfs/ (props changed) projects/graid/7/sbin/natd/ (props changed) projects/graid/7/sbin/newfs/ (props changed) projects/graid/7/sbin/newfs_msdos/ (props changed) projects/graid/7/sbin/ping6/ (props changed) projects/graid/7/sbin/reboot/ (props changed) projects/graid/7/sbin/restore/ (props changed) projects/graid/7/sbin/route/ (props changed) projects/graid/7/sbin/savecore/ (props changed) projects/graid/7/sbin/sconfig/ (props changed) projects/graid/7/sbin/shutdown/ (props changed) projects/graid/7/sbin/sysctl/ (props changed) projects/graid/7/sbin/tunefs/ (props changed) projects/graid/7/secure/lib/libcrypto/ (props changed) projects/graid/7/secure/lib/libssh/ (props changed) projects/graid/7/secure/lib/libssl/ (props changed) projects/graid/7/secure/libexec/sftp-server/ (props changed) projects/graid/7/secure/usr.bin/bdes/ (props changed) projects/graid/7/secure/usr.bin/openssl/ (props changed) projects/graid/7/secure/usr.bin/ssh/ (props changed) projects/graid/7/secure/usr.sbin/sshd/ (props changed) projects/graid/7/share/ (props changed) projects/graid/7/share/colldef/ (props changed) projects/graid/7/share/dict/ (props changed) projects/graid/7/share/doc/bind9/ (props changed) projects/graid/7/share/doc/papers/jail/ (props changed) projects/graid/7/share/doc/smm/01.setup/ (props changed) projects/graid/7/share/examples/ (props changed) projects/graid/7/share/man/ (props changed) projects/graid/7/share/man/man1/ (props changed) projects/graid/7/share/man/man3/ (props changed) projects/graid/7/share/man/man4/ (props changed) projects/graid/7/share/man/man5/ (props changed) projects/graid/7/share/man/man7/ (props changed) projects/graid/7/share/man/man8/ (props changed) projects/graid/7/share/man/man9/ (props changed) projects/graid/7/share/misc/ (props changed) projects/graid/7/share/misc/iso639 (props changed) projects/graid/7/share/misc/pci_vendors (props changed) projects/graid/7/share/mk/ (props changed) projects/graid/7/share/mklocale/ (props changed) projects/graid/7/share/monetdef/ (props changed) projects/graid/7/share/msgdef/ (props changed) projects/graid/7/share/numericdef/ (props changed) projects/graid/7/share/sendmail/ (props changed) projects/graid/7/share/syscons/ (props changed) projects/graid/7/share/syscons/keymaps/ (props changed) projects/graid/7/share/termcap/ (props changed) projects/graid/7/share/timedef/ (props changed) projects/graid/7/share/zoneinfo/ (props changed) projects/graid/7/sys/ (props changed) projects/graid/7/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/7/sys/contrib/dev/acpica/ (props changed) projects/graid/7/sys/contrib/pf/ (props changed) projects/graid/7/tools/ (props changed) projects/graid/7/tools/build/ (props changed) projects/graid/7/tools/build/options/ (props changed) projects/graid/7/tools/debugscripts/ (props changed) projects/graid/7/tools/regression/acct/ (props changed) projects/graid/7/tools/regression/atm/ (props changed) projects/graid/7/tools/regression/bin/ (props changed) projects/graid/7/tools/regression/bin/date/ (props changed) projects/graid/7/tools/regression/bin/sh/ (props changed) projects/graid/7/tools/regression/file/ (props changed) projects/graid/7/tools/regression/file/flock/ (props changed) projects/graid/7/tools/regression/lib/libc/ (props changed) projects/graid/7/tools/regression/usr.bin/ (props changed) projects/graid/7/tools/regression/usr.bin/jot/ (props changed) projects/graid/7/tools/regression/usr.bin/tr/ (props changed) projects/graid/7/tools/sched/ (props changed) projects/graid/7/tools/test/ (props changed) projects/graid/7/tools/tools/ (props changed) projects/graid/7/tools/tools/aac/ (props changed) projects/graid/7/tools/tools/crypto/ (props changed) projects/graid/7/tools/tools/editing/ (props changed) projects/graid/7/tools/tools/nanobsd/ (props changed) projects/graid/7/tools/tools/nanobsd/FlashDevice.sub (props changed) projects/graid/7/tools/tools/nanobsd/nanobsd.sh (props changed) projects/graid/7/tools/tools/netrate/ (props changed) projects/graid/7/tools/tools/umastat/ (props changed) projects/graid/7/tools/tools/usb/ (props changed) projects/graid/7/usr.bin/ (props changed) projects/graid/7/usr.bin/basename/ (props changed) projects/graid/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) projects/graid/7/usr.bin/calendar/ (props changed) projects/graid/7/usr.bin/catman/ (props changed) projects/graid/7/usr.bin/cksum/ (props changed) projects/graid/7/usr.bin/comm/ (props changed) projects/graid/7/usr.bin/cpuset/ (props changed) projects/graid/7/usr.bin/csup/ (props changed) projects/graid/7/usr.bin/dirname/ (props changed) projects/graid/7/usr.bin/du/ (props changed) projects/graid/7/usr.bin/fetch/ (props changed) projects/graid/7/usr.bin/file/ (props changed) projects/graid/7/usr.bin/find/ (props changed) projects/graid/7/usr.bin/finger/ (props changed) projects/graid/7/usr.bin/fold/ (props changed) projects/graid/7/usr.bin/fstat/ (props changed) projects/graid/7/usr.bin/gcore/ (props changed) projects/graid/7/usr.bin/gprof/ (props changed) projects/graid/7/usr.bin/gzip/ (props changed) projects/graid/7/usr.bin/hexdump/ (props changed) projects/graid/7/usr.bin/id/ (props changed) projects/graid/7/usr.bin/indent/ (props changed) projects/graid/7/usr.bin/ipcrm/ (props changed) projects/graid/7/usr.bin/ipcs/ (props changed) projects/graid/7/usr.bin/jot/ (props changed) projects/graid/7/usr.bin/kdump/ (props changed) projects/graid/7/usr.bin/ktrace/ (props changed) projects/graid/7/usr.bin/ldd/ (props changed) projects/graid/7/usr.bin/less/ (props changed) projects/graid/7/usr.bin/locate/ (props changed) projects/graid/7/usr.bin/lockf/ (props changed) projects/graid/7/usr.bin/logger/ (props changed) projects/graid/7/usr.bin/make/ (props changed) projects/graid/7/usr.bin/ncal/ (props changed) projects/graid/7/usr.bin/netstat/ (props changed) projects/graid/7/usr.bin/newgrp/ (props changed) projects/graid/7/usr.bin/nsupdate/ (props changed) projects/graid/7/usr.bin/pkill/ (props changed) projects/graid/7/usr.bin/procstat/ (props changed) projects/graid/7/usr.bin/quota/ (props changed) projects/graid/7/usr.bin/rpcgen/ (props changed) projects/graid/7/usr.bin/ruptime/ (props changed) projects/graid/7/usr.bin/script/ (props changed) projects/graid/7/usr.bin/sed/ (props changed) projects/graid/7/usr.bin/shar/ (props changed) projects/graid/7/usr.bin/sockstat/ (props changed) projects/graid/7/usr.bin/stat/ (props changed) projects/graid/7/usr.bin/su/ (props changed) projects/graid/7/usr.bin/systat/ (props changed) projects/graid/7/usr.bin/tail/ (props changed) projects/graid/7/usr.bin/tar/ (props changed) projects/graid/7/usr.bin/tftp/ (props changed) projects/graid/7/usr.bin/tip/ (props changed) projects/graid/7/usr.bin/top/ (props changed) projects/graid/7/usr.bin/truncate/ (props changed) projects/graid/7/usr.bin/truss/ (props changed) projects/graid/7/usr.bin/uname/ (props changed) projects/graid/7/usr.bin/unifdef/ (props changed) projects/graid/7/usr.bin/units/ (props changed) projects/graid/7/usr.bin/uudecode/ (props changed) projects/graid/7/usr.bin/vmstat/ (props changed) projects/graid/7/usr.bin/w/ (props changed) projects/graid/7/usr.bin/wc/ (props changed) projects/graid/7/usr.bin/whereis/ (props changed) projects/graid/7/usr.bin/whois/ (props changed) projects/graid/7/usr.bin/window/ (props changed) projects/graid/7/usr.bin/xargs/ (props changed) projects/graid/7/usr.bin/ypcat/ (props changed) projects/graid/7/usr.bin/ypmatch/ (props changed) projects/graid/7/usr.bin/ypwhich/ (props changed) projects/graid/7/usr.sbin/ (props changed) projects/graid/7/usr.sbin/Makefile (props changed) projects/graid/7/usr.sbin/acpi/ (props changed) projects/graid/7/usr.sbin/adduser/ (props changed) projects/graid/7/usr.sbin/arp/ (props changed) projects/graid/7/usr.sbin/bluetooth/ (props changed) projects/graid/7/usr.sbin/bluetooth/btpand/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcsecd/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcseriald/ (props changed) projects/graid/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) projects/graid/7/usr.sbin/bluetooth/sdpd/ (props changed) projects/graid/7/usr.sbin/boot0cfg/ (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/graid/7/usr.sbin/burncd/ (props changed) projects/graid/7/usr.sbin/cdcontrol/ (props changed) projects/graid/7/usr.sbin/chown/ (props changed) projects/graid/7/usr.sbin/chroot/ (props changed) projects/graid/7/usr.sbin/config/ (props changed) projects/graid/7/usr.sbin/config/SMM.doc/ (props changed) projects/graid/7/usr.sbin/cpucontrol/ (props changed) projects/graid/7/usr.sbin/crashinfo/ (props changed) projects/graid/7/usr.sbin/cron/ (props changed) projects/graid/7/usr.sbin/cron/cron/ (props changed) projects/graid/7/usr.sbin/crunch/ (props changed) projects/graid/7/usr.sbin/cxgbtool/ (props changed) projects/graid/7/usr.sbin/eeprom/ (props changed) projects/graid/7/usr.sbin/extattr/ (props changed) projects/graid/7/usr.sbin/faithd/ (props changed) projects/graid/7/usr.sbin/fdcontrol/ (props changed) projects/graid/7/usr.sbin/fdformat/ (props changed) projects/graid/7/usr.sbin/fdread/ (props changed) projects/graid/7/usr.sbin/fdwrite/ (props changed) projects/graid/7/usr.sbin/fifolog/ (props changed) projects/graid/7/usr.sbin/freebsd-update/ (props changed) projects/graid/7/usr.sbin/fwcontrol/ (props changed) projects/graid/7/usr.sbin/gstat/ (props changed) projects/graid/7/usr.sbin/iostat/ (props changed) projects/graid/7/usr.sbin/jail/ (props changed) projects/graid/7/usr.sbin/jexec/ (props changed) projects/graid/7/usr.sbin/jls/ (props changed) projects/graid/7/usr.sbin/lpr/ (props changed) projects/graid/7/usr.sbin/mailwrapper/ (props changed) projects/graid/7/usr.sbin/makefs/ (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/7/usr.sbin/makefs/getid.c (props changed) projects/graid/7/usr.sbin/mergemaster/ (props changed) projects/graid/7/usr.sbin/mfiutil/ (props changed) projects/graid/7/usr.sbin/mountd/ (props changed) projects/graid/7/usr.sbin/mptutil/ (props changed) projects/graid/7/usr.sbin/mtree/ (props changed) projects/graid/7/usr.sbin/ndiscvt/ (props changed) projects/graid/7/usr.sbin/ndp/ (props changed) projects/graid/7/usr.sbin/newsyslog/ (props changed) projects/graid/7/usr.sbin/nscd/ (props changed) projects/graid/7/usr.sbin/ntp/ (props changed) projects/graid/7/usr.sbin/pciconf/ (props changed) projects/graid/7/usr.sbin/pkg_install/ (props changed) projects/graid/7/usr.sbin/pmccontrol/ (props changed) projects/graid/7/usr.sbin/pmcstat/ (props changed) projects/graid/7/usr.sbin/portsnap/ (props changed) projects/graid/7/usr.sbin/powerd/ (props changed) projects/graid/7/usr.sbin/ppp/ (props changed) projects/graid/7/usr.sbin/pstat/ (props changed) projects/graid/7/usr.sbin/pw/ (props changed) projects/graid/7/usr.sbin/pwd_mkdb/ (props changed) projects/graid/7/usr.sbin/rpc.lockd/ (props changed) projects/graid/7/usr.sbin/rpc.statd/ (props changed) projects/graid/7/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/7/usr.sbin/rtadvd/ (props changed) projects/graid/7/usr.sbin/rtsold/ (props changed) projects/graid/7/usr.sbin/sade/ (props changed) projects/graid/7/usr.sbin/service/ (props changed) projects/graid/7/usr.sbin/setfib/ (props changed) projects/graid/7/usr.sbin/sysinstall/ (props changed) projects/graid/7/usr.sbin/syslogd/ (props changed) projects/graid/7/usr.sbin/traceroute/ (props changed) projects/graid/7/usr.sbin/traceroute6/ (props changed) projects/graid/7/usr.sbin/tzsetup/ (props changed) projects/graid/7/usr.sbin/ugidfw/ (props changed) projects/graid/7/usr.sbin/wpa/wpa_supplicant/ (props changed) projects/graid/7/usr.sbin/ypserv/ (props changed) projects/graid/7/usr.sbin/zic/ (props changed) Modified: projects/graid/7/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 22:16:32 2011 (r218462) +++ projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 22:17:59 2011 (r218463) @@ -1000,7 +1000,8 @@ g_raid_iodone(struct bio *bp, int error) } int -g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp) +g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, + struct bio *ignore, void *argp) { struct g_raid_softc *sc; struct g_raid_lock *lp; @@ -1015,7 +1016,7 @@ g_raid_lock_range(struct g_raid_volume * lp->l_pending = 0; TAILQ_FOREACH(bp, &vol->v_inflight.queue, bio_queue) { - if (g_raid_bio_overlaps(bp, off, len)) + if (bp != ignore && g_raid_bio_overlaps(bp, off, len)) lp->l_pending++; } Modified: projects/graid/7/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.h Tue Feb 8 22:16:32 2011 (r218462) +++ projects/graid/7/sys/geom/raid/g_raid.h Tue Feb 8 22:17:59 2011 (r218463) @@ -377,7 +377,8 @@ struct g_raid_subdisk * g_raid_get_subdi #define G_RAID_DESTROY_HARD 2 int g_raid_destroy(struct g_raid_softc *sc, int how); int g_raid_event_send(void *arg, int event, int flags); -int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp); +int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, + struct bio *ignore, void *argp); int g_raid_unlock_range(struct g_raid_volume *vol, off_t off, off_t len); g_ctl_req_t g_raid_ctl; Modified: projects/graid/7/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/7/sys/geom/raid/tr_raid1.c Tue Feb 8 22:16:32 2011 (r218462) +++ projects/graid/7/sys/geom/raid/tr_raid1.c Tue Feb 8 22:17:59 2011 (r218463) @@ -255,7 +255,7 @@ g_raid_tr_raid1_rebuild_some(struct g_ra trs->trso_flags |= TR_RAID1_F_DOING_SOME; trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, /* Lock callback starts I/O */ - bp->bio_offset, bp->bio_length, bp); + bp->bio_offset, bp->bio_length, NULL, bp); } static void @@ -737,7 +737,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ /* Lock callback starts I/O */ trs->trso_flags |= TR_RAID1_F_LOCKED; g_raid_lock_range(sd->sd_volume, - bp->bio_offset, bp->bio_length, bp); + bp->bio_offset, bp->bio_length, NULL, bp); } } else if (trs->trso_type == TR_RAID1_RESYNC) { /* @@ -749,8 +749,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ } return; } - if (bp->bio_error != 0 && bp->bio_cmd == BIO_READ && - pbp->bio_children == 1 && bp->bio_cflags == 0) { + pbp->bio_inbed++; + if (bp->bio_cmd == BIO_READ && bp->bio_error != 0) { /* * Read failed on first drive. Retry the read error on * another disk drive, if available, before erroring out the @@ -758,9 +758,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ vol = tr->tro_volume; sd->sd_read_errs++; - G_RAID_LOGREQ(3, bp, - "Read failure, attempting recovery. %d total read errs", - sd->sd_read_errs); + G_RAID_LOGREQ(0, bp, + "Read error (%d), %d read errors total", + bp->bio_error, sd->sd_read_errs); /* * If there are too many read errors, we move to degraded. @@ -768,13 +768,18 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * everything to get it back in sync), or just degrade the * drive, which kicks off a resync? */ - if (sd->sd_read_errs > g_raid1_read_err_thresh) + if (sd->sd_read_errs > g_raid1_read_err_thresh) { g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + if (pbp->bio_children == 1) + goto remapdone; + } /* * Find the other disk, and try to do the I/O to it. */ for (nsd = NULL, i = 0; i < vol->v_disks_count; i++) { + if (pbp->bio_children > 1) + break; nsd = &vol->v_subdisks[i]; if (sd == nsd) continue; @@ -784,8 +789,12 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (cbp == NULL) break; G_RAID_LOGREQ(2, cbp, "Retrying read"); - g_raid_subdisk_iostart(nsd, cbp); - pbp->bio_inbed++; + pbp->bio_driver1 = sd; /* Save original subdisk. */ + cbp->bio_caller1 = nsd; + cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; + /* Lock callback starts I/O */ + g_raid_lock_range(sd->sd_volume, + cbp->bio_offset, cbp->bio_length, pbp, cbp); return; } /* @@ -796,9 +805,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ G_RAID_LOGREQ(2, bp, "Couldn't retry read, failing it"); } - pbp->bio_inbed++; - if (pbp->bio_cmd == BIO_READ && pbp->bio_children == 2 && - bp->bio_cflags == 0) { + if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 && + pbp->bio_children > 1) { /* * If it was a read, and bio_children is 2, then we just * recovered the data from the second drive. We should try to @@ -813,17 +821,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ G_RAID_LOGREQ(3, bp, "Recovered data from other drive"); cbp = g_clone_bio(pbp); if (cbp != NULL) { - nsd = bp->bio_caller1; cbp->bio_cmd = BIO_WRITE; cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - cbp->bio_caller1 = nsd; - G_RAID_LOGREQ(3, bp, + G_RAID_LOGREQ(3, cbp, "Attempting bad sector remap on failing drive."); - /* Lock callback starts I/O */ - g_raid_lock_range(sd->sd_volume, - cbp->bio_offset, cbp->bio_length, cbp); + g_raid_subdisk_iostart(pbp->bio_driver1, cbp); + return; } } +remapdone: if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) { /* * We're done with a remap write, mark the range as unlocked. @@ -834,14 +840,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * it now. However, we need to reset error to 0 in that case * because we're not failing the original I/O which succeeded. */ - G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); - g_raid_unlock_range(sd->sd_volume, bp->bio_offset, - bp->bio_length); - if (bp->bio_error) { - G_RAID_LOGREQ(3, bp, "Error on remap: mark subdisk bad."); + if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) { + G_RAID_LOGREQ(0, bp, "Remap write failed: " + "failing subdisk."); g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); bp->bio_error = 0; } + G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); + g_raid_unlock_range(sd->sd_volume, bp->bio_offset, + bp->bio_length); } error = bp->bio_error; g_destroy_bio(bp); From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 04:35:33 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D2C18106564A; Wed, 9 Feb 2011 04:35:33 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C17DE8FC08; Wed, 9 Feb 2011 04:35:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p194ZXht070811; Wed, 9 Feb 2011 04:35:33 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p194ZXqQ070807; Wed, 9 Feb 2011 04:35:33 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201102090435.p194ZXqQ070807@svn.freebsd.org> From: Warner Losh Date: Wed, 9 Feb 2011 04:35:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218470 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 04:35:33 -0000 Author: imp Date: Wed Feb 9 04:35:33 2011 New Revision: 218470 URL: http://svn.freebsd.org/changeset/base/218470 Log: When we were failing the subdisk due to too many read errors, we were returning the error that caused us to kick that subdisk out rather than retrying the read on the other disk. Flag this condition so we go through all the motions, except the write, so that we return the results of this other read. We now fail the disk w/o EIO being returned. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Tue Feb 8 23:23:55 2011 (r218469) +++ projects/graid/head/sys/geom/raid/g_raid.c Wed Feb 9 04:35:33 2011 (r218470) @@ -910,6 +910,7 @@ g_raid_start_request(struct bio *bp) sc = bp->bio_to->geom->softc; sx_assert(&sc->sc_lock, SX_LOCKED); vol = bp->bio_to->private; + /* * Check to see if this item is in a locked range. If so, * queue it to our locked queue and return. We'll requeue Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Tue Feb 8 23:23:55 2011 (r218469) +++ projects/graid/head/sys/geom/raid/g_raid.h Wed Feb 9 04:35:33 2011 (r218470) @@ -98,6 +98,8 @@ extern struct g_class g_raid_class; * doing some desirable action such as bad * block remapping after we detect a bad part * of the disk. + * G_RAID_BIO_FLAG_FAKE_REMAP Only doing the reading half of a remap + * operation. * * and the following meta item: * G_RAID_BIO_FLAG_SPECIAL And of the I/O flags that need to make it @@ -109,6 +111,7 @@ extern struct g_class g_raid_class; #define G_RAID_BIO_FLAG_REMAP 0x02 #define G_RAID_BIO_FLAG_SPECIAL \ (G_RAID_BIO_FLAG_SYNC|G_RAID_BIO_FLAG_REMAP) +#define G_RAID_BIO_FLAG_FAKE_REMAP 0x80 struct g_raid_lock { off_t l_offset; Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Tue Feb 8 23:23:55 2011 (r218469) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 04:35:33 2011 (r218470) @@ -630,7 +630,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ struct g_raid_volume *vol; struct bio *pbp; struct g_raid_tr_raid1_object *trs; - int i, error; + int i, error, do_write; trs = (struct g_raid_tr_raid1_object *)tr; pbp = bp->bio_parent; @@ -768,10 +768,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * everything to get it back in sync), or just degrade the * drive, which kicks off a resync? */ + do_write = 1; if (sd->sd_read_errs > g_raid1_read_err_thresh) { g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); if (pbp->bio_children == 1) - goto remapdone; + do_write = 0; } /* @@ -792,6 +793,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ pbp->bio_driver1 = sd; /* Save original subdisk. */ cbp->bio_caller1 = nsd; cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; + if (!do_write) + cbp->bio_cflags |= G_RAID_BIO_FLAG_FAKE_REMAP; /* Lock callback starts I/O */ g_raid_lock_range(sd->sd_volume, cbp->bio_offset, cbp->bio_length, pbp, cbp); @@ -805,8 +808,10 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ G_RAID_LOGREQ(2, bp, "Couldn't retry read, failing it"); } - if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 && - pbp->bio_children > 1) { + if (bp->bio_cmd == BIO_READ && + bp->bio_error == 0 && + pbp->bio_children > 1 && + !(bp->bio_cflags & G_RAID_BIO_FLAG_FAKE_REMAP)) { /* * If it was a read, and bio_children is 2, then we just * recovered the data from the second drive. We should try to @@ -817,6 +822,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * affect the return code of this current read, and can be * done at our liesure. However, to make the code simpler, it * is done syncrhonously. + * + * When the FAKE_REMAP flag is set, we fall through to the + * code below which handles the read without the next + * write so we don't return the error that failed the drive, + * but the results of reading the other disk. */ G_RAID_LOGREQ(3, bp, "Recovered data from other drive"); cbp = g_clone_bio(pbp); @@ -829,7 +839,6 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ return; } } -remapdone: if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) { /* * We're done with a remap write, mark the range as unlocked. From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 05:48:52 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E7FE41065697; Wed, 9 Feb 2011 05:48:52 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BC5B08FC08; Wed, 9 Feb 2011 05:48:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p195mqne072426; Wed, 9 Feb 2011 05:48:52 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p195mqGu072424; Wed, 9 Feb 2011 05:48:52 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201102090548.p195mqGu072424@svn.freebsd.org> From: Warner Losh Date: Wed, 9 Feb 2011 05:48:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218472 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 05:48:53 -0000 Author: imp Date: Wed Feb 9 05:48:52 2011 New Revision: 218472 URL: http://svn.freebsd.org/changeset/base/218472 Log: Don't fail the last disk in the volume on read/write errors. Instead, let the last surviving drive in a volume reflect its imperfect state back to the upper layers. This makes perfect sense for the volume that has / on it where you might be able to survive long enough to reboot or insert a good disk and start a sync. I think in other cases as well, so I've just left a comment rather than making this yet another tunable. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 05:30:38 2011 (r218471) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 05:48:52 2011 (r218472) @@ -226,6 +226,25 @@ g_raid_tr_update_state_raid1(struct g_ra } static void +g_raid_tr_raid1_fail_disk(struct g_raid_softc *sc, struct g_raid_subdisk *sd, + struct g_raid_disk *disk) +{ + /* + * We don't fail the last disk in the pack, since it still has decent + * data on it and that's better than failing the disk if it is the root + * file system. + * + * XXX should this be controlled via a tunable? It makes sense for + * the volume that has / on it. I can't think of a case where we'd + * want the volume to go away on this kind of event. + */ + if (g_raid_nsubdisks(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE) == 1 && + g_raid_get_subdisk(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE) == sd) + return; + g_raid_fail_disk(sc, sd, disk); +} + +static void g_raid_tr_raid1_rebuild_some(struct g_raid_tr_object *tr, struct g_raid_subdisk *sd) { @@ -685,7 +704,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ trs->trso_flags & TR_RAID1_F_ABORT) { if ((trs->trso_flags & TR_RAID1_F_ABORT) == 0) { - g_raid_fail_disk(sd->sd_softc, + g_raid_tr_raid1_fail_disk(sd->sd_softc, nsd, nsd->sd_disk); } trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; @@ -770,7 +789,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ do_write = 1; if (sd->sd_read_errs > g_raid1_read_err_thresh) { - g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); if (pbp->bio_children == 1) do_write = 0; } @@ -852,7 +871,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) { G_RAID_LOGREQ(0, bp, "Remap write failed: " "failing subdisk."); - g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); bp->bio_error = 0; } G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 11:49:58 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DC232106566B; Wed, 9 Feb 2011 11:49:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CBBE78FC0A; Wed, 9 Feb 2011 11:49:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p19Bnwnu082519; Wed, 9 Feb 2011 11:49:58 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p19BnwJP082516; Wed, 9 Feb 2011 11:49:58 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102091149.p19BnwJP082516@svn.freebsd.org> From: Alexander Motin Date: Wed, 9 Feb 2011 11:49:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218479 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 11:49:58 -0000 Author: mav Date: Wed Feb 9 11:49:58 2011 New Revision: 218479 URL: http://svn.freebsd.org/changeset/base/218479 Log: - When initial read disk failed due to read error and we are not going to do remap, there is no need to lock the region. - Make read error recovery support 3+ disks configurations. More then one retry attempt may be needed to read data there. Modified: projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Wed Feb 9 11:28:57 2011 (r218478) +++ projects/graid/head/sys/geom/raid/g_raid.h Wed Feb 9 11:49:58 2011 (r218479) @@ -98,8 +98,7 @@ extern struct g_class g_raid_class; * doing some desirable action such as bad * block remapping after we detect a bad part * of the disk. - * G_RAID_BIO_FLAG_FAKE_REMAP Only doing the reading half of a remap - * operation. + * G_RAID_BIO_FLAG_LOCKED I/O holds range lock that should re released. * * and the following meta item: * G_RAID_BIO_FLAG_SPECIAL And of the I/O flags that need to make it @@ -109,9 +108,9 @@ extern struct g_class g_raid_class; */ #define G_RAID_BIO_FLAG_SYNC 0x01 #define G_RAID_BIO_FLAG_REMAP 0x02 -#define G_RAID_BIO_FLAG_SPECIAL \ +#define G_RAID_BIO_FLAG_SPECIAL \ (G_RAID_BIO_FLAG_SYNC|G_RAID_BIO_FLAG_REMAP) -#define G_RAID_BIO_FLAG_FAKE_REMAP 0x80 +#define G_RAID_BIO_FLAG_LOCKED 0x80 struct g_raid_lock { off_t l_offset; Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 11:28:57 2011 (r218478) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 11:49:58 2011 (r218479) @@ -649,10 +649,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ struct g_raid_volume *vol; struct bio *pbp; struct g_raid_tr_raid1_object *trs; + uintptr_t *mask; int i, error, do_write; trs = (struct g_raid_tr_raid1_object *)tr; - pbp = bp->bio_parent; + vol = tr->tro_volume; if (bp->bio_cflags & G_RAID_BIO_FLAG_SYNC) { /* * This operation is part of a rebuild or resync operation. @@ -669,7 +670,6 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * 5MB of data, for inactive ones, we do 50MB. */ if (trs->trso_type == TR_RAID1_REBUILD) { - vol = tr->tro_volume; if (bp->bio_cmd == BIO_READ) { /* * The read operation finished, queue the @@ -768,6 +768,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ } return; } + pbp = bp->bio_parent; pbp->bio_inbed++; if (bp->bio_cmd == BIO_READ && bp->bio_error != 0) { /* @@ -775,7 +776,6 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * another disk drive, if available, before erroring out the * read. */ - vol = tr->tro_volume; sd->sd_read_errs++; G_RAID_LOGREQ(0, bp, "Read error (%d), %d read errors total", @@ -797,26 +797,32 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ /* * Find the other disk, and try to do the I/O to it. */ - for (nsd = NULL, i = 0; i < vol->v_disks_count; i++) { - if (pbp->bio_children > 1) - break; + mask = (uintptr_t *)(&pbp->bio_driver2); + if (pbp->bio_children == 1) { + /* Save original subdisk. */ + pbp->bio_driver1 = do_write ? sd : NULL; + *mask = 0; + } + *mask |= 1 << sd->sd_pos; + for (i = 0; i < vol->v_disks_count; i++) { nsd = &vol->v_subdisks[i]; - if (sd == nsd) - continue; if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE) continue; + if ((*mask & (1 << i)) != 0) + continue; cbp = g_clone_bio(pbp); if (cbp == NULL) break; G_RAID_LOGREQ(2, cbp, "Retrying read"); - pbp->bio_driver1 = sd; /* Save original subdisk. */ - cbp->bio_caller1 = nsd; - cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - if (!do_write) - cbp->bio_cflags |= G_RAID_BIO_FLAG_FAKE_REMAP; - /* Lock callback starts I/O */ - g_raid_lock_range(sd->sd_volume, - cbp->bio_offset, cbp->bio_length, pbp, cbp); + if (pbp->bio_children == 2 && do_write) { + cbp->bio_caller1 = nsd; + pbp->bio_pflags = G_RAID_BIO_FLAG_LOCKED; + /* Lock callback starts I/O */ + g_raid_lock_range(sd->sd_volume, + cbp->bio_offset, cbp->bio_length, pbp, cbp); + } else { + g_raid_subdisk_iostart(nsd, cbp); + } return; } /* @@ -830,9 +836,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 && pbp->bio_children > 1 && - !(bp->bio_cflags & G_RAID_BIO_FLAG_FAKE_REMAP)) { + pbp->bio_driver1 != NULL) { /* - * If it was a read, and bio_children is 2, then we just + * If it was a read, and bio_children is >1, then we just * recovered the data from the second drive. We should try to * write that data to the first drive if sector remapping is * enabled. A write should put the data in a new place on the @@ -841,11 +847,6 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * affect the return code of this current read, and can be * done at our liesure. However, to make the code simpler, it * is done syncrhonously. - * - * When the FAKE_REMAP flag is set, we fall through to the - * code below which handles the read without the next - * write so we don't return the error that failed the drive, - * but the results of reading the other disk. */ G_RAID_LOGREQ(3, bp, "Recovered data from other drive"); cbp = g_clone_bio(pbp); @@ -858,9 +859,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ return; } } - if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) { + if (pbp->bio_pflags & G_RAID_BIO_FLAG_LOCKED) { /* - * We're done with a remap write, mark the range as unlocked. + * We're done with a recovery, mark the range as unlocked. * For any write errors, we agressively fail the disk since * there was both a READ and a WRITE error at this location. * Both types of errors generally indicates the drive is on From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 12:03:22 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC6D8106566C; Wed, 9 Feb 2011 12:03:22 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9C8CC8FC19; Wed, 9 Feb 2011 12:03:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p19C3MPf082918; Wed, 9 Feb 2011 12:03:22 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p19C3MCh082916; Wed, 9 Feb 2011 12:03:22 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102091203.p19C3MCh082916@svn.freebsd.org> From: Alexander Motin Date: Wed, 9 Feb 2011 12:03:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218480 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 12:03:22 -0000 Author: mav Date: Wed Feb 9 12:03:22 2011 New Revision: 218480 URL: http://svn.freebsd.org/changeset/base/218480 Log: Allow to use completed portion of REBUILD and RESYNC subdisks for read errors recovery. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 11:49:58 2011 (r218479) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 12:03:22 2011 (r218480) @@ -806,7 +806,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ *mask |= 1 << sd->sd_pos; for (i = 0; i < vol->v_disks_count; i++) { nsd = &vol->v_subdisks[i]; - if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE) + if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE && + !((nsd->sd_state == G_RAID_SUBDISK_S_REBUILD || + nsd->sd_state == G_RAID_SUBDISK_S_RESYNC) && + bp->bio_offset + bp->bio_length < + nsd->sd_rebuild_pos)) continue; if ((*mask & (1 << i)) != 0) continue; From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 12:48:13 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 51057106564A; Wed, 9 Feb 2011 12:48:13 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2734E8FC14; Wed, 9 Feb 2011 12:48:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p19CmDX6084641; Wed, 9 Feb 2011 12:48:13 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p19CmDtE084639; Wed, 9 Feb 2011 12:48:13 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102091248.p19CmDtE084639@svn.freebsd.org> From: Alexander Motin Date: Wed, 9 Feb 2011 12:48:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218481 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 12:48:13 -0000 Author: mav Date: Wed Feb 9 12:48:12 2011 New Revision: 218481 URL: http://svn.freebsd.org/changeset/base/218481 Log: Do not abort rebuild on read errors, just log it and continue. For 2-disk array we have no more redundancy to recover any way. And if this rebuild really implements resync, then skipping damaged block is actually a right behavior, as second copy is most likely valid and can be used for reading. Aborting rebuild same time will make that copy inaccessible. Another reason to do it is that present code tries to rebuild/resync everything that possible. Aborted rebuild will be restarted and likely end with the same result, causing infinite loop. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 12:03:22 2011 (r218480) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 12:48:12 2011 (r218481) @@ -671,18 +671,29 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ if (trs->trso_type == TR_RAID1_REBUILD) { if (bp->bio_cmd == BIO_READ) { + + /* Immediately abort rebuild, if requested. */ + if (trs->trso_flags & TR_RAID1_F_ABORT) { + trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; + g_raid_tr_raid1_rebuild_abort(tr); + return; + } + + /* On read error, skip and cross fingers. */ + if (bp->bio_error != 0) { + G_RAID_LOGREQ(0, bp, + "Read error during rebuild (%d), " + "possible data loss!", + bp->bio_error); + goto rebuild_round_done; + } + /* * The read operation finished, queue the * write and get out. */ G_RAID_LOGREQ(4, bp, "rebuild read done. %d", bp->bio_error); - if (bp->bio_error != 0 || - trs->trso_flags & TR_RAID1_F_ABORT) { - trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; - g_raid_tr_raid1_rebuild_abort(tr); - return; - } bp->bio_cmd = BIO_WRITE; bp->bio_cflags = G_RAID_BIO_FLAG_SYNC; bp->bio_offset = bp->bio_offset; @@ -712,6 +723,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ return; } /* XXX A lot of the following is needed when we kick of the work -- refactor */ +rebuild_round_done: + nsd = trs->trso_failed_sd; trs->trso_flags &= ~TR_RAID1_F_LOCKED; g_raid_unlock_range(sd->sd_volume, bp->bio_offset, bp->bio_length); From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 15:40:13 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DB950106566B; Wed, 9 Feb 2011 15:40:13 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C01CA8FC18; Wed, 9 Feb 2011 15:40:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p19FeDZx088922; Wed, 9 Feb 2011 15:40:13 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p19FeDee088918; Wed, 9 Feb 2011 15:40:13 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102091540.p19FeDee088918@svn.freebsd.org> From: Alexander Motin Date: Wed, 9 Feb 2011 15:40:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218486 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 15:40:13 -0000 Author: mav Date: Wed Feb 9 15:40:13 2011 New Revision: 218486 URL: http://svn.freebsd.org/changeset/base/218486 Log: Implement more advanced algorithm for choosing disk to read from RAID1. General idea is the same as in gmirror balance algorithm. Take into account: subdisk state, running error recovery, average disk load, head position and possible cache hits. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Wed Feb 9 15:33:13 2011 (r218485) +++ projects/graid/head/sys/geom/raid/g_raid.c Wed Feb 9 15:40:13 2011 (r218486) @@ -1074,7 +1074,7 @@ void g_raid_subdisk_iostart(struct g_raid_subdisk *sd, struct bio *bp) { struct g_consumer *cp; - struct g_raid_disk *disk; + struct g_raid_disk *disk, *tdisk; bp->bio_caller1 = sd; @@ -1104,6 +1104,17 @@ nodisk: bp->bio_from = cp; bp->bio_to = cp->provider; cp->index++; + + /* Update average disks load. */ + TAILQ_FOREACH(tdisk, &sd->sd_softc->sc_disks, d_next) { + if (tdisk->d_consumer == NULL) + tdisk->d_load = 0; + else + tdisk->d_load = (tdisk->d_consumer->index * + G_RAID_SUBDISK_LOAD_SCALE + tdisk->d_load * 7) / 8; + } + + disk->d_last_offset = bp->bio_offset + bp->bio_length; if (dumping) { G_RAID_LOGREQ(3, bp, "Sending dumping request."); if (bp->bio_cmd == BIO_WRITE) { Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Wed Feb 9 15:33:13 2011 (r218485) +++ projects/graid/head/sys/geom/raid/g_raid.h Wed Feb 9 15:40:13 2011 (r218486) @@ -147,8 +147,8 @@ struct g_raid_disk { struct g_consumer *d_consumer; /* GEOM disk consumer. */ void *d_md_data; /* Disk's metadata storage. */ struct g_kerneldump d_kd; /* Kernel dumping method/args. */ - u_int d_state; /* Disk state. */ uint64_t d_flags; /* Additional flags. */ + u_int d_state; /* Disk state. */ u_int d_load; /* Disk average load. */ off_t d_last_offset; /* Last head offset. */ TAILQ_HEAD(, g_raid_subdisk) d_subdisks; /* List of subdisks. */ @@ -169,6 +169,13 @@ struct g_raid_disk { #define G_RAID_SUBDISK_E_DISCONNECTED 0x03 /* A subdisk removed from volume. */ #define G_RAID_SUBDISK_E_FIRST_TR_PRIVATE 0x80 /* translation private events */ +#define G_RAID_SUBDISK_POS(sd) \ + ((sd)->sd_disk ? ((sd)->sd_disk->d_last_offset - (sd)->sd_offset) : 0) +#define G_RAID_SUBDISK_TRACK_SIZE (1 * 1024 * 1024) +#define G_RAID_SUBDISK_LOAD(sd) \ + ((sd)->sd_disk ? ((sd)->sd_disk->d_load) : 0) +#define G_RAID_SUBDISK_LOAD_SCALE 256 + struct g_raid_subdisk { struct g_raid_softc *sd_softc; /* Back-pointer to softc. */ struct g_raid_disk *sd_disk; /* Where this subdisk lives. */ @@ -179,6 +186,7 @@ struct g_raid_subdisk { u_int sd_state; /* Subdisk state. */ off_t sd_rebuild_pos; /* Rebuild position. */ int sd_read_errs; /* Count of the read errors */ + int sd_recovery; /* Count of recovery reqs. */ TAILQ_ENTRY(g_raid_subdisk) sd_next; /* Next subdisk on disk. */ }; Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 15:33:13 2011 (r218485) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 15:40:13 2011 (r218486) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -490,22 +491,43 @@ g_raid_tr_stop_raid1(struct g_raid_tr_ob } /* - * Select the disk to do the reads to. For now, we just pick the first one in - * the list that's active always. This ensures we favor one disk on boot, and - * have more deterministic recovery from the weird edge cases of power - * failure. In the future, we can imagine policies that go for the least - * loaded disk to improve performance, or we need to limit reads to a disk - * during some kind of error recovery with that disk. + * Select the disk to read from. Take into account: subdisk state, running + * error recovery, average disk load, head position and possible cache hits. */ +#define ABS(x) (((x) >= 0) ? (x) : (-(x))) static struct g_raid_subdisk * -g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol) +g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol, struct bio *bp) { - int i; + struct g_raid_subdisk *sd, *best; + int i, prio, bestprio; - for (i = 0; i < vol->v_disks_count; i++) - if (vol->v_subdisks[i].sd_state == G_RAID_SUBDISK_S_ACTIVE) - return (&vol->v_subdisks[i]); - return (NULL); + best = NULL; + bestprio = INT_MAX; + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_state != G_RAID_SUBDISK_S_ACTIVE && + !((sd->sd_state == G_RAID_SUBDISK_S_REBUILD || + sd->sd_state == G_RAID_SUBDISK_S_RESYNC) && + bp->bio_offset + bp->bio_length < + sd->sd_rebuild_pos)) + continue; + prio = G_RAID_SUBDISK_LOAD(sd); + prio += min(sd->sd_recovery, 255) << 22; + prio += (G_RAID_SUBDISK_S_ACTIVE - sd->sd_state) << 16; + /* If disk head is precisely in position - highly prefer it. */ + if (G_RAID_SUBDISK_POS(sd) == bp->bio_offset) + prio -= 2 * G_RAID_SUBDISK_LOAD_SCALE; + else + /* If disk head is close to position - prefer it. */ + if (ABS(G_RAID_SUBDISK_POS(sd) - bp->bio_offset) < + G_RAID_SUBDISK_TRACK_SIZE) + prio -= 1 * G_RAID_SUBDISK_LOAD_SCALE; + if (prio < bestprio) { + best = sd; + bestprio = prio; + } + } + return (best); } static void @@ -514,7 +536,7 @@ g_raid_tr_iostart_raid1_read(struct g_ra struct g_raid_subdisk *sd; struct bio *cbp; - sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume); + sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume, bp); KASSERT(sd != NULL, ("No active disks in volume %s.", tr->tro_volume->v_name)); @@ -832,6 +854,7 @@ rebuild_round_done: break; G_RAID_LOGREQ(2, cbp, "Retrying read"); if (pbp->bio_children == 2 && do_write) { + sd->sd_recovery++; cbp->bio_caller1 = nsd; pbp->bio_pflags = G_RAID_BIO_FLAG_LOCKED; /* Lock callback starts I/O */ @@ -892,6 +915,10 @@ rebuild_round_done: g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); bp->bio_error = 0; } + if (pbp->bio_driver1 != NULL) { + ((struct g_raid_subdisk *)pbp->bio_driver1) + ->sd_recovery--; + } G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); g_raid_unlock_range(sd->sd_volume, bp->bio_offset, bp->bio_length); From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 16:41:06 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9ACDC106564A; Wed, 9 Feb 2011 16:41:06 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8A0A78FC14; Wed, 9 Feb 2011 16:41:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p19Gf6hL090649; Wed, 9 Feb 2011 16:41:06 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p19Gf6SU090647; Wed, 9 Feb 2011 16:41:06 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102091641.p19Gf6SU090647@svn.freebsd.org> From: Alexander Motin Date: Wed, 9 Feb 2011 16:41:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218491 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 16:41:06 -0000 Author: mav Date: Wed Feb 9 16:41:06 2011 New Revision: 218491 URL: http://svn.freebsd.org/changeset/base/218491 Log: Fix typo introduced at r218459 and making recovered read return error if remap write failed. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 16:37:29 2011 (r218490) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Feb 9 16:41:06 2011 (r218491) @@ -852,7 +852,7 @@ rebuild_round_done: cbp = g_clone_bio(pbp); if (cbp == NULL) break; - G_RAID_LOGREQ(2, cbp, "Retrying read"); + G_RAID_LOGREQ(2, cbp, "Retrying read from %d", i); if (pbp->bio_children == 2 && do_write) { sd->sd_recovery++; cbp->bio_caller1 = nsd; @@ -893,7 +893,7 @@ rebuild_round_done: if (cbp != NULL) { cbp->bio_cmd = BIO_WRITE; cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - G_RAID_LOGREQ(3, cbp, + G_RAID_LOGREQ(2, cbp, "Attempting bad sector remap on failing drive."); g_raid_subdisk_iostart(pbp->bio_driver1, cbp); return; @@ -909,7 +909,7 @@ rebuild_round_done: * it now. However, we need to reset error to 0 in that case * because we're not failing the original I/O which succeeded. */ - if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) { + if (bp->bio_cmd == BIO_WRITE && bp->bio_error) { G_RAID_LOGREQ(0, bp, "Remap write failed: " "failing subdisk."); g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 19:57:01 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 33A97106564A; Wed, 9 Feb 2011 19:57:01 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1EBC48FC1C; Wed, 9 Feb 2011 19:57:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p19Jv1Vu095724; Wed, 9 Feb 2011 19:57:01 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p19Jv0lf095707; Wed, 9 Feb 2011 19:57:00 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201102091957.p19Jv0lf095707@svn.freebsd.org> From: Dimitry Andric Date: Wed, 9 Feb 2011 19:57:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218496 - in projects/binutils-2.17: . bin/kill bin/pkill bin/sh contrib/bind9 contrib/bind9/bin/check contrib/bind9/bin/dig contrib/bind9/bin/dnssec contrib/bind9/bin/named contrib/bin... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 19:57:01 -0000 Author: dim Date: Wed Feb 9 19:57:00 2011 New Revision: 218496 URL: http://svn.freebsd.org/changeset/base/218496 Log: Sync: merge r218200 through r218495 from ^/head. Added: projects/binutils-2.17/bin/sh/arith_yacc.c - copied unchanged from r218495, head/bin/sh/arith_yacc.c projects/binutils-2.17/bin/sh/arith_yacc.h - copied unchanged from r218495, head/bin/sh/arith_yacc.h projects/binutils-2.17/bin/sh/arith_yylex.c - copied unchanged from r218495, head/bin/sh/arith_yylex.c projects/binutils-2.17/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.html - copied unchanged from r218495, head/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.html projects/binutils-2.17/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.pdf - copied unchanged from r218495, head/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.pdf projects/binutils-2.17/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.txt - copied unchanged from r218495, head/contrib/bind9/RELEASE-NOTES-BIND-9.6.3.txt projects/binutils-2.17/lib/libthr/thread/thr_getthreadid_np.c - copied unchanged from r218495, head/lib/libthr/thread/thr_getthreadid_np.c projects/binutils-2.17/share/man/man3/pthread_getthreadid_np.3 - copied unchanged from r218495, head/share/man/man3/pthread_getthreadid_np.3 projects/binutils-2.17/tools/regression/bin/sh/errors/bad-binary1.126 - copied unchanged from r218495, head/tools/regression/bin/sh/errors/bad-binary1.126 projects/binutils-2.17/tools/regression/bin/sh/execution/hash1.0 - copied unchanged from r218495, head/tools/regression/bin/sh/execution/hash1.0 projects/binutils-2.17/tools/regression/bin/sh/execution/redir5.0 - copied unchanged from r218495, head/tools/regression/bin/sh/execution/redir5.0 projects/binutils-2.17/tools/regression/bin/sh/execution/shellproc1.0 - copied unchanged from r218495, head/tools/regression/bin/sh/execution/shellproc1.0 projects/binutils-2.17/tools/regression/bin/sh/expansion/arith10.0 - copied unchanged from r218495, head/tools/regression/bin/sh/expansion/arith10.0 projects/binutils-2.17/tools/regression/bin/sh/expansion/arith9.0 - copied unchanged from r218495, head/tools/regression/bin/sh/expansion/arith9.0 Deleted: projects/binutils-2.17/bin/sh/arith.y projects/binutils-2.17/bin/sh/arith_lex.l projects/binutils-2.17/contrib/bind9/RELEASE-NOTES-BIND-9.6-ESV.html projects/binutils-2.17/contrib/bind9/RELEASE-NOTES-BIND-9.6-ESV.pdf projects/binutils-2.17/contrib/bind9/RELEASE-NOTES-BIND-9.6-ESV.txt projects/binutils-2.17/contrib/bind9/release-notes.css Modified: projects/binutils-2.17/Makefile projects/binutils-2.17/ObsoleteFiles.inc projects/binutils-2.17/UPDATING projects/binutils-2.17/bin/kill/kill.c projects/binutils-2.17/bin/pkill/pkill.c projects/binutils-2.17/bin/sh/Makefile projects/binutils-2.17/bin/sh/TOUR projects/binutils-2.17/bin/sh/alias.c projects/binutils-2.17/bin/sh/alias.h projects/binutils-2.17/bin/sh/arith.h projects/binutils-2.17/bin/sh/error.h projects/binutils-2.17/bin/sh/eval.c projects/binutils-2.17/bin/sh/exec.c projects/binutils-2.17/bin/sh/exec.h projects/binutils-2.17/bin/sh/expand.c projects/binutils-2.17/bin/sh/init.h projects/binutils-2.17/bin/sh/input.c projects/binutils-2.17/bin/sh/jobs.c projects/binutils-2.17/bin/sh/main.c projects/binutils-2.17/bin/sh/mkinit.c projects/binutils-2.17/bin/sh/options.c projects/binutils-2.17/bin/sh/parser.c projects/binutils-2.17/bin/sh/redir.c projects/binutils-2.17/bin/sh/sh.1 projects/binutils-2.17/bin/sh/trap.c projects/binutils-2.17/bin/sh/var.c projects/binutils-2.17/contrib/bind9/CHANGES projects/binutils-2.17/contrib/bind9/COPYRIGHT projects/binutils-2.17/contrib/bind9/README projects/binutils-2.17/contrib/bind9/bin/check/check-tool.c projects/binutils-2.17/contrib/bind9/bin/check/check-tool.h projects/binutils-2.17/contrib/bind9/bin/check/named-checkconf.c projects/binutils-2.17/contrib/bind9/bin/check/named-checkzone.c projects/binutils-2.17/contrib/bind9/bin/dig/dig.c projects/binutils-2.17/contrib/bind9/bin/dig/dighost.c projects/binutils-2.17/contrib/bind9/bin/dig/host.c projects/binutils-2.17/contrib/bind9/bin/dig/nslookup.1 projects/binutils-2.17/contrib/bind9/bin/dig/nslookup.docbook projects/binutils-2.17/contrib/bind9/bin/dig/nslookup.html projects/binutils-2.17/contrib/bind9/bin/dnssec/dnssec-dsfromkey.8 projects/binutils-2.17/contrib/bind9/bin/dnssec/dnssec-dsfromkey.html projects/binutils-2.17/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.html projects/binutils-2.17/contrib/bind9/bin/dnssec/dnssec-keygen.html projects/binutils-2.17/contrib/bind9/bin/dnssec/dnssec-signzone.c projects/binutils-2.17/contrib/bind9/bin/dnssec/dnssec-signzone.html projects/binutils-2.17/contrib/bind9/bin/named/builtin.c projects/binutils-2.17/contrib/bind9/bin/named/client.c projects/binutils-2.17/contrib/bind9/bin/named/control.c projects/binutils-2.17/contrib/bind9/bin/named/include/named/globals.h projects/binutils-2.17/contrib/bind9/bin/named/include/named/query.h projects/binutils-2.17/contrib/bind9/bin/named/main.c projects/binutils-2.17/contrib/bind9/bin/named/query.c projects/binutils-2.17/contrib/bind9/bin/named/server.c projects/binutils-2.17/contrib/bind9/bin/named/update.c projects/binutils-2.17/contrib/bind9/bin/named/xfrout.c projects/binutils-2.17/contrib/bind9/bin/nsupdate/nsupdate.1 projects/binutils-2.17/contrib/bind9/bin/nsupdate/nsupdate.c projects/binutils-2.17/contrib/bind9/bin/nsupdate/nsupdate.docbook projects/binutils-2.17/contrib/bind9/bin/nsupdate/nsupdate.html projects/binutils-2.17/contrib/bind9/config.h.in projects/binutils-2.17/contrib/bind9/config.threads.in projects/binutils-2.17/contrib/bind9/configure.in projects/binutils-2.17/contrib/bind9/doc/arm/Bv9ARM-book.xml projects/binutils-2.17/contrib/bind9/doc/arm/Bv9ARM.ch06.html projects/binutils-2.17/contrib/bind9/doc/arm/Bv9ARM.ch07.html projects/binutils-2.17/contrib/bind9/doc/arm/Bv9ARM.ch08.html projects/binutils-2.17/contrib/bind9/doc/arm/Bv9ARM.ch09.html projects/binutils-2.17/contrib/bind9/doc/arm/Bv9ARM.html projects/binutils-2.17/contrib/bind9/doc/arm/Bv9ARM.pdf projects/binutils-2.17/contrib/bind9/doc/arm/man.dig.html projects/binutils-2.17/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html projects/binutils-2.17/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html projects/binutils-2.17/contrib/bind9/doc/arm/man.dnssec-keygen.html projects/binutils-2.17/contrib/bind9/doc/arm/man.dnssec-signzone.html projects/binutils-2.17/contrib/bind9/doc/arm/man.host.html projects/binutils-2.17/contrib/bind9/doc/arm/man.named-checkconf.html projects/binutils-2.17/contrib/bind9/doc/arm/man.named-checkzone.html projects/binutils-2.17/contrib/bind9/doc/arm/man.named.html projects/binutils-2.17/contrib/bind9/doc/arm/man.nsupdate.html projects/binutils-2.17/contrib/bind9/doc/arm/man.rndc-confgen.html projects/binutils-2.17/contrib/bind9/doc/arm/man.rndc.conf.html projects/binutils-2.17/contrib/bind9/doc/arm/man.rndc.html projects/binutils-2.17/contrib/bind9/doc/misc/options projects/binutils-2.17/contrib/bind9/lib/bind9/api projects/binutils-2.17/contrib/bind9/lib/bind9/check.c projects/binutils-2.17/contrib/bind9/lib/dns/Makefile.in projects/binutils-2.17/contrib/bind9/lib/dns/adb.c projects/binutils-2.17/contrib/bind9/lib/dns/api projects/binutils-2.17/contrib/bind9/lib/dns/dst_api.c projects/binutils-2.17/contrib/bind9/lib/dns/dst_internal.h projects/binutils-2.17/contrib/bind9/lib/dns/gssapictx.c projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/diff.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/events.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/name.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/ncache.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/rdataset.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/resolver.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/result.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/tsig.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/types.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/validator.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/view.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dns/zone.h projects/binutils-2.17/contrib/bind9/lib/dns/include/dst/dst.h projects/binutils-2.17/contrib/bind9/lib/dns/journal.c projects/binutils-2.17/contrib/bind9/lib/dns/message.c projects/binutils-2.17/contrib/bind9/lib/dns/name.c projects/binutils-2.17/contrib/bind9/lib/dns/ncache.c projects/binutils-2.17/contrib/bind9/lib/dns/openssl_link.c projects/binutils-2.17/contrib/bind9/lib/dns/rbtdb.c projects/binutils-2.17/contrib/bind9/lib/dns/rdata.c projects/binutils-2.17/contrib/bind9/lib/dns/rdata/generic/ipseckey_45.c projects/binutils-2.17/contrib/bind9/lib/dns/rdata/generic/nsec_47.c projects/binutils-2.17/contrib/bind9/lib/dns/rdata/generic/rrsig_46.c projects/binutils-2.17/contrib/bind9/lib/dns/rdatalist.c projects/binutils-2.17/contrib/bind9/lib/dns/rdataset.c projects/binutils-2.17/contrib/bind9/lib/dns/rdataslab.c projects/binutils-2.17/contrib/bind9/lib/dns/resolver.c projects/binutils-2.17/contrib/bind9/lib/dns/result.c projects/binutils-2.17/contrib/bind9/lib/dns/rootns.c projects/binutils-2.17/contrib/bind9/lib/dns/sdb.c projects/binutils-2.17/contrib/bind9/lib/dns/sdlz.c projects/binutils-2.17/contrib/bind9/lib/dns/time.c projects/binutils-2.17/contrib/bind9/lib/dns/tkey.c projects/binutils-2.17/contrib/bind9/lib/dns/tsig.c projects/binutils-2.17/contrib/bind9/lib/dns/validator.c projects/binutils-2.17/contrib/bind9/lib/dns/view.c projects/binutils-2.17/contrib/bind9/lib/dns/zone.c projects/binutils-2.17/contrib/bind9/lib/isc/Makefile.in projects/binutils-2.17/contrib/bind9/lib/isc/api projects/binutils-2.17/contrib/bind9/lib/isc/entropy.c projects/binutils-2.17/contrib/bind9/lib/isc/include/isc/mem.h projects/binutils-2.17/contrib/bind9/lib/isc/include/isc/platform.h.in projects/binutils-2.17/contrib/bind9/lib/isc/include/isc/task.h projects/binutils-2.17/contrib/bind9/lib/isc/mem.c projects/binutils-2.17/contrib/bind9/lib/isc/nothreads/Makefile.in projects/binutils-2.17/contrib/bind9/lib/isc/print.c projects/binutils-2.17/contrib/bind9/lib/isc/pthreads/mutex.c projects/binutils-2.17/contrib/bind9/lib/isc/task.c projects/binutils-2.17/contrib/bind9/lib/isc/unix/socket.c projects/binutils-2.17/contrib/bind9/lib/isccfg/api projects/binutils-2.17/contrib/bind9/lib/isccfg/namedconf.c projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_buffer.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_config.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_context.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_gabn.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_gai_strerror.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_getaddrinfo.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_gethostent.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_getipnode.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_getnameinfo.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_getrrsetbyname.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_gnba.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_hstrerror.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_inetntop.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_noop.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_packet.html projects/binutils-2.17/contrib/bind9/lib/lwres/man/lwres_resutil.html projects/binutils-2.17/contrib/bind9/lib/lwres/print_p.h projects/binutils-2.17/contrib/bind9/version projects/binutils-2.17/contrib/bsnmp/oid-list projects/binutils-2.17/etc/namedb/named.conf projects/binutils-2.17/etc/termcap.small projects/binutils-2.17/gnu/lib/libdialog/Makefile projects/binutils-2.17/gnu/lib/libdialog/dlg_config.h projects/binutils-2.17/include/pthread_np.h projects/binutils-2.17/lib/bind/config.h projects/binutils-2.17/lib/bind/dns/code.h projects/binutils-2.17/lib/bind/dns/dns/enumclass.h projects/binutils-2.17/lib/bind/dns/dns/enumtype.h projects/binutils-2.17/lib/bind/dns/dns/rdatastruct.h projects/binutils-2.17/lib/bind/isc/isc/platform.h projects/binutils-2.17/lib/libc/amd64/string/memmove.S projects/binutils-2.17/lib/libc/gen/psignal.3 projects/binutils-2.17/lib/libc/gen/rfork_thread.3 projects/binutils-2.17/lib/libc/gen/siglist.c projects/binutils-2.17/lib/libc/i386/string/memcpy.S projects/binutils-2.17/lib/libc/i386/string/memmove.S projects/binutils-2.17/lib/libc/include/namespace.h projects/binutils-2.17/lib/libc/include/un-namespace.h projects/binutils-2.17/lib/libthr/pthread.map projects/binutils-2.17/lib/libthr/thread/Makefile.inc projects/binutils-2.17/lib/msun/amd64/s_llrint.S projects/binutils-2.17/lib/msun/amd64/s_llrintf.S projects/binutils-2.17/libexec/rtld-elf/rtld.c projects/binutils-2.17/libexec/rtld-elf/rtld.h projects/binutils-2.17/libexec/rtld-elf/rtld_lock.c projects/binutils-2.17/release/picobsd/build/picobsd projects/binutils-2.17/sbin/hastctl/hastctl.c projects/binutils-2.17/sbin/hastd/control.c projects/binutils-2.17/sbin/hastd/hast.h projects/binutils-2.17/sbin/hastd/hastd.c projects/binutils-2.17/sbin/hastd/primary.c projects/binutils-2.17/sbin/hastd/proto_uds.c projects/binutils-2.17/sbin/hastd/secondary.c projects/binutils-2.17/sbin/hastd/subr.c projects/binutils-2.17/share/man/man3/Makefile projects/binutils-2.17/share/man/man3/pthread_self.3 projects/binutils-2.17/share/man/man4/amdtemp.4 projects/binutils-2.17/share/man/man4/bwi.4 projects/binutils-2.17/sys/amd64/amd64/machdep.c projects/binutils-2.17/sys/amd64/ia32/ia32_signal.c projects/binutils-2.17/sys/arm/arm/locore.S projects/binutils-2.17/sys/arm/arm/sys_machdep.c projects/binutils-2.17/sys/arm/arm/vm_machdep.c projects/binutils-2.17/sys/arm/at91/if_ate.c projects/binutils-2.17/sys/arm/include/pmap.h projects/binutils-2.17/sys/arm/include/proc.h projects/binutils-2.17/sys/arm/mv/gpio.c projects/binutils-2.17/sys/arm/mv/ic.c projects/binutils-2.17/sys/arm/mv/mv_pci.c projects/binutils-2.17/sys/arm/mv/timer.c projects/binutils-2.17/sys/boot/fdt/dts/db78100.dts projects/binutils-2.17/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/binutils-2.17/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/binutils-2.17/sys/conf/files projects/binutils-2.17/sys/conf/options projects/binutils-2.17/sys/dev/aac/aac.c projects/binutils-2.17/sys/dev/aac/aacvar.h projects/binutils-2.17/sys/dev/ath/ath_hal/ah.c projects/binutils-2.17/sys/dev/ath/ath_hal/ah.h projects/binutils-2.17/sys/dev/ath/ath_hal/ah_eeprom_v14.c projects/binutils-2.17/sys/dev/ath/ath_hal/ah_eeprom_v14.h projects/binutils-2.17/sys/dev/ath/ath_hal/ah_internal.h projects/binutils-2.17/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5212/ar5212_keycache.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar5416/ar5416phy.h projects/binutils-2.17/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/binutils-2.17/sys/dev/ath/ath_hal/ar9002/ar9280.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c projects/binutils-2.17/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c projects/binutils-2.17/sys/dev/ath/ath_rate/sample/sample.h projects/binutils-2.17/sys/dev/ath/if_ath.c projects/binutils-2.17/sys/dev/ath/if_ath_tx.c projects/binutils-2.17/sys/dev/ath/if_athioctl.h projects/binutils-2.17/sys/dev/ath/if_athvar.h projects/binutils-2.17/sys/dev/bce/if_bce.c projects/binutils-2.17/sys/dev/bce/if_bcereg.h projects/binutils-2.17/sys/dev/md/md.c projects/binutils-2.17/sys/dev/re/if_re.c projects/binutils-2.17/sys/dev/sio/sio.c projects/binutils-2.17/sys/dev/sound/pci/emu10k1.c projects/binutils-2.17/sys/dev/sound/pci/emu10kx.c projects/binutils-2.17/sys/dev/usb/controller/ehci_mv.c projects/binutils-2.17/sys/dev/usb/controller/usb_controller.c projects/binutils-2.17/sys/dev/usb/quirk/usb_quirk.c projects/binutils-2.17/sys/dev/usb/serial/umodem.c projects/binutils-2.17/sys/dev/usb/template/usb_template.c projects/binutils-2.17/sys/dev/usb/usb_transfer.c projects/binutils-2.17/sys/dev/usb/usbdevs projects/binutils-2.17/sys/dev/usb/wlan/if_run.c projects/binutils-2.17/sys/dev/usb/wlan/if_runvar.h projects/binutils-2.17/sys/fs/ext2fs/ext2_alloc.c projects/binutils-2.17/sys/fs/ext2fs/ext2fs.h projects/binutils-2.17/sys/fs/nfsserver/nfs_nfsdport.c projects/binutils-2.17/sys/i386/i386/machdep.c projects/binutils-2.17/sys/i386/linux/imgact_linux.c projects/binutils-2.17/sys/ia64/conf/GENERIC projects/binutils-2.17/sys/kern/kern_context.c projects/binutils-2.17/sys/kern/kern_synch.c projects/binutils-2.17/sys/kern/kern_sysctl.c projects/binutils-2.17/sys/kern/subr_module.c projects/binutils-2.17/sys/kern/subr_turnstile.c projects/binutils-2.17/sys/kern/subr_uio.c projects/binutils-2.17/sys/kern/uipc_syscalls.c projects/binutils-2.17/sys/kern/vfs_bio.c projects/binutils-2.17/sys/kern/vfs_mount.c projects/binutils-2.17/sys/kern/vfs_subr.c projects/binutils-2.17/sys/kern/vfs_vnops.c projects/binutils-2.17/sys/mips/include/_inttypes.h projects/binutils-2.17/sys/mips/include/_limits.h projects/binutils-2.17/sys/mips/include/_stdint.h projects/binutils-2.17/sys/mips/include/_types.h projects/binutils-2.17/sys/mips/include/cpufunc.h projects/binutils-2.17/sys/netinet/ipfw/ip_dn_io.c projects/binutils-2.17/sys/netinet/sctp.h projects/binutils-2.17/sys/netinet/sctp_asconf.c projects/binutils-2.17/sys/netinet/sctp_asconf.h projects/binutils-2.17/sys/netinet/sctp_auth.c projects/binutils-2.17/sys/netinet/sctp_auth.h projects/binutils-2.17/sys/netinet/sctp_bsd_addr.c projects/binutils-2.17/sys/netinet/sctp_bsd_addr.h projects/binutils-2.17/sys/netinet/sctp_cc_functions.c projects/binutils-2.17/sys/netinet/sctp_constants.h projects/binutils-2.17/sys/netinet/sctp_crc32.c projects/binutils-2.17/sys/netinet/sctp_crc32.h projects/binutils-2.17/sys/netinet/sctp_dtrace_declare.h projects/binutils-2.17/sys/netinet/sctp_dtrace_define.h projects/binutils-2.17/sys/netinet/sctp_header.h projects/binutils-2.17/sys/netinet/sctp_indata.c projects/binutils-2.17/sys/netinet/sctp_indata.h projects/binutils-2.17/sys/netinet/sctp_input.c projects/binutils-2.17/sys/netinet/sctp_input.h projects/binutils-2.17/sys/netinet/sctp_lock_bsd.h projects/binutils-2.17/sys/netinet/sctp_os.h projects/binutils-2.17/sys/netinet/sctp_os_bsd.h projects/binutils-2.17/sys/netinet/sctp_output.c projects/binutils-2.17/sys/netinet/sctp_output.h projects/binutils-2.17/sys/netinet/sctp_pcb.c projects/binutils-2.17/sys/netinet/sctp_pcb.h projects/binutils-2.17/sys/netinet/sctp_peeloff.c projects/binutils-2.17/sys/netinet/sctp_peeloff.h projects/binutils-2.17/sys/netinet/sctp_ss_functions.c projects/binutils-2.17/sys/netinet/sctp_structs.h projects/binutils-2.17/sys/netinet/sctp_sysctl.c projects/binutils-2.17/sys/netinet/sctp_sysctl.h projects/binutils-2.17/sys/netinet/sctp_timer.c projects/binutils-2.17/sys/netinet/sctp_timer.h projects/binutils-2.17/sys/netinet/sctp_uio.h projects/binutils-2.17/sys/netinet/sctp_usrreq.c projects/binutils-2.17/sys/netinet/sctp_var.h projects/binutils-2.17/sys/netinet/sctputil.c projects/binutils-2.17/sys/netinet/sctputil.h projects/binutils-2.17/sys/netinet/tcp_usrreq.c projects/binutils-2.17/sys/netinet6/sctp6_usrreq.c projects/binutils-2.17/sys/netinet6/sctp6_var.h projects/binutils-2.17/sys/nfsserver/nfs_serv.c projects/binutils-2.17/sys/pc98/cbus/sio.c projects/binutils-2.17/sys/pc98/pc98/machdep.c projects/binutils-2.17/sys/security/mac/mac_process.c projects/binutils-2.17/sys/sparc64/sparc64/machdep.c projects/binutils-2.17/sys/sparc64/sparc64/pmap.c projects/binutils-2.17/sys/sys/linker.h projects/binutils-2.17/sys/sys/param.h projects/binutils-2.17/sys/sys/proc.h projects/binutils-2.17/sys/sys/taskqueue.h projects/binutils-2.17/sys/sys/uio.h projects/binutils-2.17/sys/ufs/ffs/ffs_snapshot.c projects/binutils-2.17/sys/ufs/ffs/ffs_softdep.c projects/binutils-2.17/sys/ufs/ufs/ufs_acl.c projects/binutils-2.17/sys/ufs/ufs/ufs_vnops.c projects/binutils-2.17/sys/vm/vm_map.c projects/binutils-2.17/sys/vm/vm_object.c projects/binutils-2.17/sys/vm/vm_object.h projects/binutils-2.17/sys/x86/x86/mca.c projects/binutils-2.17/tools/regression/bin/sh/builtins/command6.0 projects/binutils-2.17/tools/regression/bin/sh/builtins/command6.0.stdout projects/binutils-2.17/tools/regression/bin/sh/builtins/command7.0 projects/binutils-2.17/usr.bin/calendar/parsedata.c projects/binutils-2.17/usr.bin/calendar/paskha.c projects/binutils-2.17/usr.bin/gzip/zmore.1 projects/binutils-2.17/usr.bin/killall/killall.c projects/binutils-2.17/usr.bin/rs/rs.c projects/binutils-2.17/usr.bin/truss/main.c projects/binutils-2.17/usr.sbin/diskinfo/diskinfo.c projects/binutils-2.17/usr.sbin/ppp/bundle.c projects/binutils-2.17/usr.sbin/ppp/command.c projects/binutils-2.17/usr.sbin/ppp/iface.c projects/binutils-2.17/usr.sbin/ppp/iface.h projects/binutils-2.17/usr.sbin/ppp/log.c projects/binutils-2.17/usr.sbin/ppp/log.h projects/binutils-2.17/usr.sbin/ppp/main.c projects/binutils-2.17/usr.sbin/ppp/ppp.8.m4 projects/binutils-2.17/usr.sbin/pw/pw_user.c Directory Properties: projects/binutils-2.17/ (props changed) projects/binutils-2.17/cddl/contrib/opensolaris/ (props changed) projects/binutils-2.17/contrib/bind9/ (props changed) projects/binutils-2.17/contrib/binutils/ (props changed) projects/binutils-2.17/contrib/bzip2/ (props changed) projects/binutils-2.17/contrib/dialog/ (props changed) projects/binutils-2.17/contrib/ee/ (props changed) projects/binutils-2.17/contrib/expat/ (props changed) projects/binutils-2.17/contrib/file/ (props changed) projects/binutils-2.17/contrib/gdb/ (props changed) projects/binutils-2.17/contrib/gdtoa/ (props changed) projects/binutils-2.17/contrib/gnu-sort/ (props changed) projects/binutils-2.17/contrib/groff/ (props changed) projects/binutils-2.17/contrib/less/ (props changed) projects/binutils-2.17/contrib/libpcap/ (props changed) projects/binutils-2.17/contrib/llvm/ (props changed) projects/binutils-2.17/contrib/llvm/tools/clang/ (props changed) projects/binutils-2.17/contrib/ncurses/ (props changed) projects/binutils-2.17/contrib/netcat/ (props changed) projects/binutils-2.17/contrib/ntp/ (props changed) projects/binutils-2.17/contrib/one-true-awk/ (props changed) projects/binutils-2.17/contrib/openbsm/ (props changed) projects/binutils-2.17/contrib/openpam/ (props changed) projects/binutils-2.17/contrib/pf/ (props changed) projects/binutils-2.17/contrib/sendmail/ (props changed) projects/binutils-2.17/contrib/tcpdump/ (props changed) projects/binutils-2.17/contrib/tcsh/ (props changed) projects/binutils-2.17/contrib/top/ (props changed) projects/binutils-2.17/contrib/top/install-sh (props changed) projects/binutils-2.17/contrib/tzcode/stdtime/ (props changed) projects/binutils-2.17/contrib/tzcode/zic/ (props changed) projects/binutils-2.17/contrib/tzdata/ (props changed) projects/binutils-2.17/contrib/wpa/ (props changed) projects/binutils-2.17/contrib/xz/ (props changed) projects/binutils-2.17/crypto/openssh/ (props changed) projects/binutils-2.17/crypto/openssl/ (props changed) projects/binutils-2.17/lib/libc/ (props changed) projects/binutils-2.17/lib/libc/stdtime/ (props changed) projects/binutils-2.17/lib/libutil/ (props changed) projects/binutils-2.17/lib/libz/ (props changed) projects/binutils-2.17/sbin/ (props changed) projects/binutils-2.17/sbin/ipfw/ (props changed) projects/binutils-2.17/share/mk/bsd.arch.inc.mk (props changed) projects/binutils-2.17/share/zoneinfo/ (props changed) projects/binutils-2.17/sys/ (props changed) projects/binutils-2.17/sys/amd64/include/xen/ (props changed) projects/binutils-2.17/sys/cddl/contrib/opensolaris/ (props changed) projects/binutils-2.17/sys/contrib/dev/acpica/ (props changed) projects/binutils-2.17/sys/contrib/octeon-sdk/ (props changed) projects/binutils-2.17/sys/contrib/pf/ (props changed) projects/binutils-2.17/sys/contrib/x86emu/ (props changed) projects/binutils-2.17/usr.bin/calendar/ (props changed) projects/binutils-2.17/usr.bin/csup/ (props changed) projects/binutils-2.17/usr.bin/procstat/ (props changed) projects/binutils-2.17/usr.sbin/zic/ (props changed) Modified: projects/binutils-2.17/Makefile ============================================================================== --- projects/binutils-2.17/Makefile Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/Makefile Wed Feb 9 19:57:00 2011 (r218496) @@ -124,7 +124,7 @@ MAKEPATH= ${MAKEOBJDIRPREFIX}${.CURDIR}/ BINMAKE= \ `if [ -x ${MAKEPATH}/make ]; then echo ${MAKEPATH}/make; else echo ${MAKE}; fi` \ -m ${.CURDIR}/share/mk -_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 +_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} # Guess machine architecture from machine type, and vice versa. .if !defined(TARGET_ARCH) && defined(TARGET) @@ -205,7 +205,7 @@ cleanworld: # ${TGTS}: - ${_+_}cd ${.CURDIR}; ${_MAKE} TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} ${.TARGET} + ${_+_}@cd ${.CURDIR}; ${_MAKE} ${.TARGET} # Set a reasonable default .MAIN: all Modified: projects/binutils-2.17/ObsoleteFiles.inc ============================================================================== --- projects/binutils-2.17/ObsoleteFiles.inc Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/ObsoleteFiles.inc Wed Feb 9 19:57:00 2011 (r218496) @@ -38,6 +38,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20110119: Remove SYSCTL_*X* sysctl additions. +OLD_FILES+=usr/share/man/man9/SYSCTL_XINT.9.gz \ + usr/share/man/man9/SYSCTL_XLONG.9.gz + # 20110112: Update dialog to new version, rename old libdialog to libodialog, # removing associated man pages and header files. OLD_FILES+=usr/share/man/man3/draw_shadow.3.gz \ @@ -100,6 +104,8 @@ OLD_FILES+=usr/include/machine/mca.h .endif # 20101020: catch up with vm_page_sleep_if_busy rename OLD_FILES+=usr/share/man/man9/vm_page_sleep_busy.9.gz +# 20101018: taskqueue(9) updates +OLD_FILES+=usr/share/man/man9/taskqueue_find.9.gz # 20101011: removed subblock.h from liblzma OLD_FILES+=usr/include/lzma/subblock.h # 20101002: removed manpath.config Modified: projects/binutils-2.17/UPDATING ============================================================================== --- projects/binutils-2.17/UPDATING Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/UPDATING Wed Feb 9 19:57:00 2011 (r218496) @@ -22,6 +22,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. machines to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20110207: + Remove the uio_yield prototype and symbol. This function has + been misnamed since it was introduced and should not be + globally exposed with this name. The equivalent functionality + is now available using kern_yield(curthread->td_user_pri). + The function remains undocumented. + 20110112: A SYSCTL_[ADD_]UQUAD was added for unsigned uint64_t pointers, symmetric with the existing SYSCTL_[ADD_]QUAD. Type checking Modified: projects/binutils-2.17/bin/kill/kill.c ============================================================================== --- projects/binutils-2.17/bin/kill/kill.c Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/kill/kill.c Wed Feb 9 19:57:00 2011 (r218496) @@ -152,7 +152,7 @@ signame_to_signum(const char *sig) { int n; - if (!strncasecmp(sig, "sig", (size_t)3)) + if (!strncasecmp(sig, "SIG", (size_t)3)) sig += 3; for (n = 1; n < sys_nsig; n++) { if (!strcasecmp(sys_signame[n], sig)) Modified: projects/binutils-2.17/bin/pkill/pkill.c ============================================================================== --- projects/binutils-2.17/bin/pkill/pkill.c Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/pkill/pkill.c Wed Feb 9 19:57:00 2011 (r218496) @@ -156,7 +156,7 @@ main(int argc, char **argv) argv++; argc--; } else { - if (strncasecmp(p, "sig", 3) == 0) + if (strncasecmp(p, "SIG", 3) == 0) p += 3; for (i = 1; i < NSIG; i++) if (strcasecmp(sys_signame[i], p) == 0) Modified: projects/binutils-2.17/bin/sh/Makefile ============================================================================== --- projects/binutils-2.17/bin/sh/Makefile Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/sh/Makefile Wed Feb 9 19:57:00 2011 (r218496) @@ -3,22 +3,22 @@ PROG= sh INSTALLFLAGS= -S -SHSRCS= alias.c arith.y arith_lex.l cd.c echo.c error.c eval.c exec.c expand.c \ +SHSRCS= alias.c arith_yacc.c arith_yylex.c cd.c echo.c error.c eval.c \ + exec.c expand.c \ histedit.c input.c jobs.c kill.c mail.c main.c memalloc.c miscbltin.c \ mystring.c options.c output.c parser.c printf.c redir.c show.c \ test.c trap.c var.c GENSRCS= builtins.c init.c nodes.c syntax.c GENHDRS= builtins.h nodes.h syntax.h token.h -SRCS= ${SHSRCS} ${GENSRCS} ${GENHDRS} y.tab.h +SRCS= ${SHSRCS} ${GENSRCS} ${GENHDRS} # MLINKS for Shell built in commands for which there are no userland # utilities of the same name are handled with the associated manpage, # builtin.1 in share/man/man1/. -DPADD= ${LIBL} ${LIBEDIT} ${LIBTERMCAP} -LDADD= -ll -ledit -ltermcap +DPADD= ${LIBEDIT} ${LIBTERMCAP} +LDADD= -ledit -ltermcap -LFLAGS= -8 # 8-bit lex scanner for arithmetic CFLAGS+=-DSHELL -I. -I${.CURDIR} # for debug: # DEBUG_FLAGS+= -g -DDEBUG=2 -fno-inline Modified: projects/binutils-2.17/bin/sh/TOUR ============================================================================== --- projects/binutils-2.17/bin/sh/TOUR Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/sh/TOUR Wed Feb 9 19:57:00 2011 (r218496) @@ -44,10 +44,6 @@ C source files for entries looking like: back to the main command loop */ } - SHELLPROC { - x = 3; /* executed when the shell runs a shell procedure */ - } - It pulls this code out into routines which are when particular events occur. The intent is to improve modularity by isolating the information about which modules need to be explicitly @@ -80,12 +76,7 @@ EXCEPTIONS: Code for dealing with excep exceptions.c. The C language doesn't include exception handling, so I implement it using setjmp and longjmp. The global variable exception contains the type of exception. EXERROR is raised by -calling error. EXINT is an interrupt. EXSHELLPROC is an excep- -tion which is raised when a shell procedure is invoked. The pur- -pose of EXSHELLPROC is to perform the cleanup actions associated -with other exceptions. After these cleanup actions, the shell -can interpret a shell procedure itself without exec'ing a new -copy of the shell. +calling error. EXINT is an interrupt. INTERRUPTS: In an interactive shell, an interrupt will cause an EXINT exception to return to the main command loop. (Exception: @@ -270,14 +261,6 @@ When a program is run, the code in eval. variables which precede the command (as in "PATH=xxx command") in the variable table as the simplest way to strip duplicates, and then calls "environment" to get the value of the environment. -There are two consequences of this. First, if an assignment to -PATH precedes the command, the value of PATH before the assign- -ment must be remembered and passed to shellexec. Second, if the -program turns out to be a shell procedure, the strings from the -environment variables which preceded the command must be pulled -out of the table and replaced with strings obtained from malloc, -since the former will automatically be freed when the stack (see -the entry on memalloc.c) is emptied. BUILTIN COMMANDS: The procedures for handling these are scat- tered throughout the code, depending on which location appears Modified: projects/binutils-2.17/bin/sh/alias.c ============================================================================== --- projects/binutils-2.17/bin/sh/alias.c Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/sh/alias.c Wed Feb 9 19:57:00 2011 (r218496) @@ -145,15 +145,7 @@ unalias(const char *name) return (1); } -#ifdef mkinit -MKINIT void rmaliases(void); - -SHELLPROC { - rmaliases(); -} -#endif - -void +static void rmaliases(void) { struct alias *ap, *tmp; Modified: projects/binutils-2.17/bin/sh/alias.h ============================================================================== --- projects/binutils-2.17/bin/sh/alias.h Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/sh/alias.h Wed Feb 9 19:57:00 2011 (r218496) @@ -45,4 +45,3 @@ struct alias { struct alias *lookupalias(const char *, int); int aliascmd(int, char **); int unaliascmd(int, char **); -void rmaliases(void); Modified: projects/binutils-2.17/bin/sh/arith.h ============================================================================== --- projects/binutils-2.17/bin/sh/arith.h Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/sh/arith.h Wed Feb 9 19:57:00 2011 (r218496) @@ -34,8 +34,6 @@ #define DIGITS(var) (3 + (2 + CHAR_BIT * sizeof((var))) / 3) -extern const char *arith_buf, *arith_startbuf; - arith_t arith(const char *); void arith_lex_reset(void); int expcmd(int, char **); Copied: projects/binutils-2.17/bin/sh/arith_yacc.c (from r218495, head/bin/sh/arith_yacc.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/binutils-2.17/bin/sh/arith_yacc.c Wed Feb 9 19:57:00 2011 (r218496, copy of r218495, head/bin/sh/arith_yacc.c) @@ -0,0 +1,376 @@ +/*- + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * Copyright (c) 2007 + * Herbert Xu . All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Kenneth Almquist. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include "arith.h" +#include "arith_yacc.h" +#include "expand.h" +#include "shell.h" +#include "error.h" +#include "memalloc.h" +#include "output.h" +#include "options.h" +#include "var.h" + +#if ARITH_BOR + 11 != ARITH_BORASS || ARITH_ASS + 11 != ARITH_EQ +#error Arithmetic tokens are out of order. +#endif + +static const char *arith_startbuf; + +const char *arith_buf; +union yystype yylval; + +static int last_token; + +#define ARITH_PRECEDENCE(op, prec) [op - ARITH_BINOP_MIN] = prec + +static const char prec[ARITH_BINOP_MAX - ARITH_BINOP_MIN] = { + ARITH_PRECEDENCE(ARITH_MUL, 0), + ARITH_PRECEDENCE(ARITH_DIV, 0), + ARITH_PRECEDENCE(ARITH_REM, 0), + ARITH_PRECEDENCE(ARITH_ADD, 1), + ARITH_PRECEDENCE(ARITH_SUB, 1), + ARITH_PRECEDENCE(ARITH_LSHIFT, 2), + ARITH_PRECEDENCE(ARITH_RSHIFT, 2), + ARITH_PRECEDENCE(ARITH_LT, 3), + ARITH_PRECEDENCE(ARITH_LE, 3), + ARITH_PRECEDENCE(ARITH_GT, 3), + ARITH_PRECEDENCE(ARITH_GE, 3), + ARITH_PRECEDENCE(ARITH_EQ, 4), + ARITH_PRECEDENCE(ARITH_NE, 4), + ARITH_PRECEDENCE(ARITH_BAND, 5), + ARITH_PRECEDENCE(ARITH_BXOR, 6), + ARITH_PRECEDENCE(ARITH_BOR, 7), +}; + +#define ARITH_MAX_PREC 8 + +static __dead2 void yyerror(const char *s) +{ + error("arithmetic expression: %s: \"%s\"", s, arith_startbuf); + /* NOTREACHED */ +} + +static arith_t arith_lookupvarint(char *varname) +{ + const char *str; + char *p; + arith_t result; + + str = lookupvar(varname); + if (str == NULL || *str == '\0') + str = "0"; + errno = 0; + result = strtoarith_t(str, &p, 0); + if (errno != 0 || *p != '\0') + yyerror("variable conversion error"); + return result; +} + +static inline int arith_prec(int op) +{ + return prec[op - ARITH_BINOP_MIN]; +} + +static inline int higher_prec(int op1, int op2) +{ + return arith_prec(op1) < arith_prec(op2); +} + +static arith_t do_binop(int op, arith_t a, arith_t b) +{ + + switch (op) { + default: + case ARITH_REM: + case ARITH_DIV: + if (!b) + yyerror("division by zero"); + return op == ARITH_REM ? a % b : a / b; + case ARITH_MUL: + return a * b; + case ARITH_ADD: + return a + b; + case ARITH_SUB: + return a - b; + case ARITH_LSHIFT: + return a << b; + case ARITH_RSHIFT: + return a >> b; + case ARITH_LT: + return a < b; + case ARITH_LE: + return a <= b; + case ARITH_GT: + return a > b; + case ARITH_GE: + return a >= b; + case ARITH_EQ: + return a == b; + case ARITH_NE: + return a != b; + case ARITH_BAND: + return a & b; + case ARITH_BXOR: + return a ^ b; + case ARITH_BOR: + return a | b; + } +} + +static arith_t assignment(int var, int noeval); + +static arith_t primary(int token, union yystype *val, int op, int noeval) +{ + arith_t result; + +again: + switch (token) { + case ARITH_LPAREN: + result = assignment(op, noeval); + if (last_token != ARITH_RPAREN) + yyerror("expecting ')'"); + last_token = yylex(); + return result; + case ARITH_NUM: + last_token = op; + return val->val; + case ARITH_VAR: + last_token = op; + return noeval ? val->val : arith_lookupvarint(val->name); + case ARITH_ADD: + token = op; + *val = yylval; + op = yylex(); + goto again; + case ARITH_SUB: + *val = yylval; + return -primary(op, val, yylex(), noeval); + case ARITH_NOT: + *val = yylval; + return !primary(op, val, yylex(), noeval); + case ARITH_BNOT: + *val = yylval; + return ~primary(op, val, yylex(), noeval); + default: + yyerror("expecting primary"); + } +} + +static arith_t binop2(arith_t a, int op, int prec, int noeval) +{ + for (;;) { + union yystype val; + arith_t b; + int op2; + int token; + + token = yylex(); + val = yylval; + + b = primary(token, &val, yylex(), noeval); + + op2 = last_token; + if (op2 >= ARITH_BINOP_MIN && op2 < ARITH_BINOP_MAX && + higher_prec(op2, op)) { + b = binop2(b, op2, arith_prec(op), noeval); + op2 = last_token; + } + + a = noeval ? b : do_binop(op, a, b); + + if (op2 < ARITH_BINOP_MIN || op2 >= ARITH_BINOP_MAX || + arith_prec(op2) >= prec) + return a; + + op = op2; + } +} + +static arith_t binop(int token, union yystype *val, int op, int noeval) +{ + arith_t a = primary(token, val, op, noeval); + + op = last_token; + if (op < ARITH_BINOP_MIN || op >= ARITH_BINOP_MAX) + return a; + + return binop2(a, op, ARITH_MAX_PREC, noeval); +} + +static arith_t and(int token, union yystype *val, int op, int noeval) +{ + arith_t a = binop(token, val, op, noeval); + arith_t b; + + op = last_token; + if (op != ARITH_AND) + return a; + + token = yylex(); + *val = yylval; + + b = and(token, val, yylex(), noeval | !a); + + return a && b; +} + +static arith_t or(int token, union yystype *val, int op, int noeval) +{ + arith_t a = and(token, val, op, noeval); + arith_t b; + + op = last_token; + if (op != ARITH_OR) + return a; + + token = yylex(); + *val = yylval; + + b = or(token, val, yylex(), noeval | !!a); + + return a || b; +} + +static arith_t cond(int token, union yystype *val, int op, int noeval) +{ + arith_t a = or(token, val, op, noeval); + arith_t b; + arith_t c; + + if (last_token != ARITH_QMARK) + return a; + + b = assignment(yylex(), noeval | !a); + + if (last_token != ARITH_COLON) + yyerror("expecting ':'"); + + token = yylex(); + *val = yylval; + + c = cond(token, val, yylex(), noeval | !!a); + + return a ? b : c; +} + +static arith_t assignment(int var, int noeval) +{ + union yystype val = yylval; + int op = yylex(); + arith_t result; + char sresult[DIGITS(result) + 1]; + + if (var != ARITH_VAR) + return cond(var, &val, op, noeval); + + if (op != ARITH_ASS && (op < ARITH_ASS_MIN || op >= ARITH_ASS_MAX)) + return cond(var, &val, op, noeval); + + result = assignment(yylex(), noeval); + if (noeval) + return result; + + if (op != ARITH_ASS) + result = do_binop(op - 11, arith_lookupvarint(val.name), result); + snprintf(sresult, sizeof(sresult), ARITH_FORMAT_STR, result); + setvar(val.name, sresult, 0); + return result; +} + +arith_t arith(const char *s) +{ + struct stackmark smark; + arith_t result; + + setstackmark(&smark); + + arith_buf = arith_startbuf = s; + + result = assignment(yylex(), 0); + + if (last_token) + yyerror("expecting EOF"); + + popstackmark(&smark); + + return result; +} + +/* + * The exp(1) builtin. + */ +int +expcmd(int argc, char **argv) +{ + const char *p; + char *concat; + char **ap; + arith_t i; + + if (argc > 1) { + p = argv[1]; + if (argc > 2) { + /* + * Concatenate arguments. + */ + STARTSTACKSTR(concat); + ap = argv + 2; + for (;;) { + while (*p) + STPUTC(*p++, concat); + if ((p = *ap++) == NULL) + break; + STPUTC(' ', concat); + } + STPUTC('\0', concat); + p = grabstackstr(concat); + } + } else + p = ""; + + i = arith(p); + + out1fmt(ARITH_FORMAT_STR "\n", i); + return !i; +} + Copied: projects/binutils-2.17/bin/sh/arith_yacc.h (from r218495, head/bin/sh/arith_yacc.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/binutils-2.17/bin/sh/arith_yacc.h Wed Feb 9 19:57:00 2011 (r218496, copy of r218495, head/bin/sh/arith_yacc.h) @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * Copyright (c) 2007 + * Herbert Xu . All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Kenneth Almquist. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#define ARITH_ASS 1 + +#define ARITH_OR 2 +#define ARITH_AND 3 +#define ARITH_BAD 4 +#define ARITH_NUM 5 +#define ARITH_VAR 6 +#define ARITH_NOT 7 + +#define ARITH_BINOP_MIN 8 +#define ARITH_LE 8 +#define ARITH_GE 9 +#define ARITH_LT 10 +#define ARITH_GT 11 +#define ARITH_EQ 12 +#define ARITH_REM 13 +#define ARITH_BAND 14 +#define ARITH_LSHIFT 15 +#define ARITH_RSHIFT 16 +#define ARITH_MUL 17 +#define ARITH_ADD 18 +#define ARITH_BOR 19 +#define ARITH_SUB 20 +#define ARITH_BXOR 21 +#define ARITH_DIV 22 +#define ARITH_NE 23 +#define ARITH_BINOP_MAX 24 + +#define ARITH_ASS_MIN 24 +#define ARITH_REMASS 24 +#define ARITH_BANDASS 25 +#define ARITH_LSHIFTASS 26 +#define ARITH_RSHIFTASS 27 +#define ARITH_MULASS 28 +#define ARITH_ADDASS 29 +#define ARITH_BORASS 30 +#define ARITH_SUBASS 31 +#define ARITH_BXORASS 32 +#define ARITH_DIVASS 33 +#define ARITH_ASS_MAX 34 + +#define ARITH_LPAREN 34 +#define ARITH_RPAREN 35 +#define ARITH_BNOT 36 +#define ARITH_QMARK 37 +#define ARITH_COLON 38 + +union yystype { + arith_t val; + char *name; +}; + +extern union yystype yylval; + +int yylex(void); Copied: projects/binutils-2.17/bin/sh/arith_yylex.c (from r218495, head/bin/sh/arith_yylex.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/binutils-2.17/bin/sh/arith_yylex.c Wed Feb 9 19:57:00 2011 (r218496, copy of r218495, head/bin/sh/arith_yylex.c) @@ -0,0 +1,244 @@ +/*- + * Copyright (c) 2002 + * Herbert Xu. + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Kenneth Almquist. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include "shell.h" +#include "arith_yacc.h" +#include "expand.h" +#include "error.h" +#include "memalloc.h" +#include "parser.h" +#include "syntax.h" + +#if ARITH_BOR + 11 != ARITH_BORASS || ARITH_ASS + 11 != ARITH_EQ +#error Arithmetic tokens are out of order. +#endif + +extern const char *arith_buf; + +int +yylex() +{ + int value; + const char *buf = arith_buf; + const char *p; + + for (;;) { + value = *buf; + switch (value) { + case ' ': + case '\t': + case '\n': + buf++; + continue; + default: + return ARITH_BAD; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + yylval.val = strtoarith_t(buf, (char **)&arith_buf, 0); + return ARITH_NUM; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + p = buf; + while (buf++, is_in_name(*buf)) + ; + yylval.name = stalloc(buf - p + 1); + memcpy(yylval.name, p, buf - p); + yylval.name[buf - p] = '\0'; + value = ARITH_VAR; + goto out; + case '=': + value += ARITH_ASS - '='; +checkeq: + buf++; +checkeqcur: + if (*buf != '=') + goto out; + value += 11; + break; + case '>': + switch (*++buf) { + case '=': + value += ARITH_GE - '>'; + break; + case '>': + value += ARITH_RSHIFT - '>'; + goto checkeq; + default: + value += ARITH_GT - '>'; + goto out; + } + break; + case '<': + switch (*++buf) { + case '=': + value += ARITH_LE - '<'; + break; + case '<': + value += ARITH_LSHIFT - '<'; + goto checkeq; + default: + value += ARITH_LT - '<'; + goto out; + } + break; + case '|': + if (*++buf != '|') { + value += ARITH_BOR - '|'; + goto checkeqcur; + } + value += ARITH_OR - '|'; + break; + case '&': + if (*++buf != '&') { + value += ARITH_BAND - '&'; + goto checkeqcur; + } + value += ARITH_AND - '&'; + break; + case '!': + if (*++buf != '=') { + value += ARITH_NOT - '!'; + goto out; + } + value += ARITH_NE - '!'; + break; + case 0: + goto out; + case '(': + value += ARITH_LPAREN - '('; + break; + case ')': + value += ARITH_RPAREN - ')'; + break; + case '*': + value += ARITH_MUL - '*'; + goto checkeq; + case '/': + value += ARITH_DIV - '/'; + goto checkeq; + case '%': + value += ARITH_REM - '%'; + goto checkeq; + case '+': + value += ARITH_ADD - '+'; + goto checkeq; + case '-': + value += ARITH_SUB - '-'; + goto checkeq; + case '~': + value += ARITH_BNOT - '~'; + break; + case '^': + value += ARITH_BXOR - '^'; + goto checkeq; + case '?': + value += ARITH_QMARK - '?'; + break; + case ':': + value += ARITH_COLON - ':'; + break; + } + break; + } + + buf++; +out: + arith_buf = buf; + return value; +} Modified: projects/binutils-2.17/bin/sh/error.h ============================================================================== --- projects/binutils-2.17/bin/sh/error.h Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/sh/error.h Wed Feb 9 19:57:00 2011 (r218496) @@ -56,8 +56,7 @@ extern volatile sig_atomic_t exception; /* exceptions */ #define EXINT 0 /* SIGINT received */ #define EXERROR 1 /* a generic error */ -#define EXSHELLPROC 2 /* execute a shell procedure */ -#define EXEXEC 3 /* command execution failed */ +#define EXEXEC 2 /* command execution failed */ /* Modified: projects/binutils-2.17/bin/sh/eval.c ============================================================================== --- projects/binutils-2.17/bin/sh/eval.c Wed Feb 9 19:31:10 2011 (r218495) +++ projects/binutils-2.17/bin/sh/eval.c Wed Feb 9 19:57:00 2011 (r218496) @@ -111,10 +111,6 @@ RESET { loopnest = 0; funcnest = 0; } - -SHELLPROC { - exitstatus = 0; -} #endif @@ -732,7 +728,9 @@ evalcommand(union node *cmd, int flags, argc = 0; for (sp = arglist.list ; sp ; sp = sp->next) argc++; - argv = stalloc(sizeof (char *) * (argc + 1)); + /* Add one slot at the beginning for tryexec(). */ + argv = stalloc(sizeof (char *) * (argc + 2)); + argv++; for (sp = arglist.list ; sp ; sp = sp->next) { TRACE(("evalcommand arg: %s\n", sp->text)); @@ -814,7 +812,7 @@ evalcommand(union node *cmd, int flags, * bookinging effort, since most such runs add * directories in front of the new PATH. */ - clearcmdentry(0); + clearcmdentry(); do_clearcmdentry = 1; } @@ -856,7 +854,7 @@ evalcommand(union node *cmd, int flags, argc -= 2; } path = _PATH_STDPATH; - clearcmdentry(0); + clearcmdentry(); do_clearcmdentry = 1; } else if (!strcmp(argv[1], "--")) { if (argc == 2) @@ -927,14 +925,10 @@ evalcommand(union node *cmd, int flags, reffunc(cmdentry.u.func); savehandler = handler; if (setjmp(jmploc.loc)) { - if (exception == EXSHELLPROC) - freeparam(&saveparam); - else { - freeparam(&shellparam); - shellparam = saveparam; - if (exception == EXERROR || exception == EXEXEC) - popredir(); - } + freeparam(&shellparam); + shellparam = saveparam; + if (exception == EXERROR || exception == EXEXEC) + popredir(); unreffunc(cmdentry.u.func); poplocalvars(); localvars = savelocalvars; @@ -1016,11 +1010,9 @@ cmddone: out2 = &errout; freestdout(); handler = savehandler; - if (e != EXSHELLPROC) { - commandname = savecmdname; - if (jp) - exitshell(exitstatus); - } + commandname = savecmdname; + if (jp) + exitshell(exitstatus); if (flags == EV_BACKCMD) { backcmd->buf = memout.buf; backcmd->nleft = memout.nextc - memout.buf; @@ -1069,7 +1061,7 @@ out: if (lastarg) setvar("_", lastarg, 0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Feb 9 23:59:18 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F8E8106564A; Wed, 9 Feb 2011 23:59:18 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 151A28FC1F; Wed, 9 Feb 2011 23:59:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p19NxHZG002087; Wed, 9 Feb 2011 23:59:17 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p19NxHBT002085; Wed, 9 Feb 2011 23:59:17 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201102092359.p19NxHBT002085@svn.freebsd.org> From: Jeff Roberson Date: Wed, 9 Feb 2011 23:59:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218498 - projects/ofed/head/usr.sbin/ndp X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Feb 2011 23:59:18 -0000 Author: jeff Date: Wed Feb 9 23:59:17 2011 New Revision: 218498 URL: http://svn.freebsd.org/changeset/base/218498 Log: - Use link_ntoa() for non ethernet addresses. Suggested by: jhb Modified: projects/ofed/head/usr.sbin/ndp/ndp.c Modified: projects/ofed/head/usr.sbin/ndp/ndp.c ============================================================================== --- projects/ofed/head/usr.sbin/ndp/ndp.c Wed Feb 9 20:23:22 2011 (r218497) +++ projects/ofed/head/usr.sbin/ndp/ndp.c Wed Feb 9 23:59:17 2011 (r218498) @@ -830,14 +830,9 @@ ether_str(sdl) cp = (u_char *)LLADDR(sdl); snprintf(hbuf, sizeof(hbuf), "%x:%x:%x:%x:%x:%x", cp[0], cp[1], cp[2], cp[3], cp[4], cp[5]); - } else if (sdl->sdl_alen == 20) { - cp = (u_char *)LLADDR(sdl); - snprintf(hbuf, sizeof(hbuf), - "%x:%x:%x:%x:%x%x:%x:%x:%x:%x%x:%x:%x:%x:%x%x:%x:%x:%x:%x", - cp[0], cp[1], cp[2], cp[3], cp[4], cp[5], cp[6], cp[7], - cp[8], cp[9], cp[10], cp[11], cp[12], cp[13], cp[14], - cp[15], cp[16], cp[17], cp[18], cp[19]); - + } else if (sdl->sdl_alen) { + int n = sdl->sdl_nlen > 0 ? sdl->sdl_nlen + 1 : 0; + snprintf(hbuf, sizeof(hbuf), "%s", link_ntoa(sdl) + n); } else snprintf(hbuf, sizeof(hbuf), "(incomplete)"); From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 00:01:11 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 63C0B10656BD; Thu, 10 Feb 2011 00:01:11 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 37A4B8FC19; Thu, 10 Feb 2011 00:01:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1A01Bpk002217; Thu, 10 Feb 2011 00:01:11 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1A01Bau002213; Thu, 10 Feb 2011 00:01:11 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201102100001.p1A01Bau002213@svn.freebsd.org> From: Jeff Roberson Date: Thu, 10 Feb 2011 00:01:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218499 - in projects/ofed/head/sys: kern ofed/include/linux sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 00:01:11 -0000 Author: jeff Date: Thu Feb 10 00:01:10 2011 New Revision: 218499 URL: http://svn.freebsd.org/changeset/base/218499 Log: - Slightly obscure and comment intr_drain() so that it is clear that it is not part of the official BSD api and only exists for linux compat. Modified: projects/ofed/head/sys/kern/kern_intr.c projects/ofed/head/sys/ofed/include/linux/hardirq.h projects/ofed/head/sys/sys/interrupt.h Modified: projects/ofed/head/sys/kern/kern_intr.c ============================================================================== --- projects/ofed/head/sys/kern/kern_intr.c Wed Feb 9 23:59:17 2011 (r218498) +++ projects/ofed/head/sys/kern/kern_intr.c Thu Feb 10 00:01:10 2011 (r218499) @@ -744,10 +744,11 @@ intr_handler_source(void *cookie) * Sleep until an ithread finishes executing an interrupt handler. * * XXX Doesn't currently handle interrupt filters or fast interrupt - * handlers. + * handlers. This is intended for compatibility with linux drivers + * only. Do not use in BSD code. */ void -intr_drain(int irq) +_intr_drain(int irq) { struct mtx *mtx; struct intr_event *ie; Modified: projects/ofed/head/sys/ofed/include/linux/hardirq.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/hardirq.h Wed Feb 9 23:59:17 2011 (r218498) +++ projects/ofed/head/sys/ofed/include/linux/hardirq.h Thu Feb 10 00:01:10 2011 (r218499) @@ -34,6 +34,6 @@ #include #include -#define synchronize_irq(irq) intr_drain((irq)) +#define synchronize_irq(irq) _intr_drain((irq)) #endif /* _LINUX_HARDIRQ_H_ */ Modified: projects/ofed/head/sys/sys/interrupt.h ============================================================================== --- projects/ofed/head/sys/sys/interrupt.h Wed Feb 9 23:59:17 2011 (r218498) +++ projects/ofed/head/sys/sys/interrupt.h Thu Feb 10 00:01:10 2011 (r218499) @@ -176,7 +176,7 @@ int intr_event_remove_handler(void *cook int intr_getaffinity(int irq, void *mask); void *intr_handler_source(void *cookie); int intr_setaffinity(int irq, void *mask); -void intr_drain(int irq); +void _intr_drain(int irq); /* Linux compat only. */ int swi_add(struct intr_event **eventp, const char *name, driver_intr_t handler, void *arg, int pri, enum intr_type flags, void **cookiep); From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 00:01:50 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C7165106564A; Thu, 10 Feb 2011 00:01:50 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9B85C8FC08; Thu, 10 Feb 2011 00:01:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1A01oEs002284; Thu, 10 Feb 2011 00:01:50 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1A01oK1002282; Thu, 10 Feb 2011 00:01:50 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201102100001.p1A01oK1002282@svn.freebsd.org> From: Jeff Roberson Date: Thu, 10 Feb 2011 00:01:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218500 - projects/ofed/head/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 00:01:50 -0000 Author: jeff Date: Thu Feb 10 00:01:50 2011 New Revision: 218500 URL: http://svn.freebsd.org/changeset/base/218500 Log: - Add some comments for the new functions and code introduced to support non ethernet devices and the IB stack. Modified: projects/ofed/head/sys/net/if_vlan.c Modified: projects/ofed/head/sys/net/if_vlan.c ============================================================================== --- projects/ofed/head/sys/net/if_vlan.c Thu Feb 10 00:01:10 2011 (r218499) +++ projects/ofed/head/sys/net/if_vlan.c Thu Feb 10 00:01:50 2011 (r218500) @@ -595,6 +595,9 @@ restart: VLAN_UNLOCK(); } +/* + * Return the trunk device for a virtual interface. + */ static struct ifnet * vlan_trunkdev(struct ifnet *ifp) { @@ -611,6 +614,9 @@ vlan_trunkdev(struct ifnet *ifp) return (ifp); } +/* + * Return the 16bit vlan tag for this interface. + */ static int vlan_tag(struct ifnet *ifp, uint16_t *tagp) { @@ -623,6 +629,10 @@ vlan_tag(struct ifnet *ifp, uint16_t *ta return (0); } +/* + * Return a driver specific cookie for this interface. Synchronization + * with setcookie must be provided by the driver. + */ static void * vlan_cookie(struct ifnet *ifp) { @@ -634,6 +644,10 @@ vlan_cookie(struct ifnet *ifp) return (ifv->ifv_cookie); } +/* + * Store a cookie in our softc that drivers can use to store driver + * private per-instance data in. + */ static int vlan_setcookie(struct ifnet *ifp, void *cookie) { @@ -646,6 +660,9 @@ vlan_setcookie(struct ifnet *ifp, void * return (0); } +/* + * Return the vlan device present at the specific tag. + */ static struct ifnet * vlan_devat(struct ifnet *ifp, uint16_t tag) { @@ -1226,7 +1243,9 @@ exists: ifv->ifv_trunk = trunk; ifp = ifv->ifv_ifp; /* - * Initialize fields from our parent. + * Initialize fields from our parent. This duplicates some + * work with ether_ifattach() but allows for non-ethernet + * interfaces to also work. */ ifp->if_mtu = p->if_mtu - ifv->ifv_mtufudge; ifp->if_baudrate = p->if_baudrate; From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 00:05:11 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C4529106566C; Thu, 10 Feb 2011 00:05:11 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B04018FC16; Thu, 10 Feb 2011 00:05:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1A05BXx002416; Thu, 10 Feb 2011 00:05:11 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1A05B8w002402; Thu, 10 Feb 2011 00:05:11 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201102100005.p1A05B8w002402@svn.freebsd.org> From: Jeff Roberson Date: Thu, 10 Feb 2011 00:05:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218501 - in projects/ofed/head/sys: amd64/conf conf net ofed/drivers/infiniband/ulp/ipoib ofed/drivers/infiniband/ulp/sdp ofed/include/linux X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 00:05:11 -0000 Author: jeff Date: Thu Feb 10 00:05:11 2011 New Revision: 218501 URL: http://svn.freebsd.org/changeset/base/218501 Log: - Change ofed from a device line to an options line in the config so that we can test for it in the link layer address table to avoid the overhead when it is not compiled. - Introduce some more ofed configuration options so you don't have to manually edit headers to enable debugging etc. - Fix a bug with ipoib, when cm mode is enabled checksumming doesn't work on all cards. - Ignore the linux admin flag for cm enabled, if it's compiled in, use it when the remote host supports it. - Support transmitting mbufs with more than one sg entry in ipoib cm. - Normalize the MTU settings and document whether they include the header or not in the ipoib.h file where the variables are defined. Modified: projects/ofed/head/sys/amd64/conf/GENERIC projects/ofed/head/sys/conf/files projects/ofed/head/sys/conf/options projects/ofed/head/sys/net/if_llatbl.h projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c projects/ofed/head/sys/ofed/include/linux/module.h Modified: projects/ofed/head/sys/amd64/conf/GENERIC ============================================================================== --- projects/ofed/head/sys/amd64/conf/GENERIC Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/amd64/conf/GENERIC Thu Feb 10 00:05:11 2011 (r218501) @@ -59,6 +59,7 @@ options _KPOSIX_PRIORITY_SCHEDULING # P options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. options KBD_INSTALL_CDEV # install a CDEV entry in /dev options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +device hwpmc options AUDIT # Security event auditing options MAC # TrustedBSD MAC Framework options FLOWTABLE # per-cpu routing cache @@ -73,7 +74,7 @@ options GDB # Support remote GDB. options DEADLKRES # Enable the deadlock resolver options INVARIANTS # Enable calls of extra sanity checking options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS -options WITNESS # Enable checks to detect deadlocks and cycles +#options WITNESS # Enable checks to detect deadlocks and cycles options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed options ALT_BREAK_TO_DEBUGGER options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones @@ -89,11 +90,12 @@ device acpi device pci # Infiniband Bus and drivers -device infiniband -device ipoib -device mlx4 -device mthca -device sdp +options OFED # Infiniband protocol stack and support +options SDP # Sockets Direct Protocol for infiniband +device ipoib # IP over IB devices +options IPOIB_CM # Use connect mode ipoib +device mlx4 # ConnectX cards +device mthca # Infinihost cards # Floppy drives device fdc Modified: projects/ofed/head/sys/conf/files ============================================================================== --- projects/ofed/head/sys/conf/files Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/conf/files Thu Feb 10 00:05:11 2011 (r218501) @@ -2743,91 +2743,91 @@ nlm/nlm_prot_svc.c optional nfslockd | nlm/nlm_prot_xdr.c optional nfslockd | nfsd nlm/sm_inter_xdr.c optional nfslockd | nfsd -# OpenFabrics Enterprise Distribution (infiniband) -ofed/include/linux/linux_compat.c optional infiniband \ +# OpenFabrics Enterprise Distribution (Infiniband) +ofed/include/linux/linux_compat.c optional ofed \ no-depend compile-with "${OFED_C}" -ofed/include/linux/linux_idr.c optional infiniband \ +ofed/include/linux/linux_idr.c optional ofed \ no-depend compile-with "${OFED_C}" -ofed/include/linux/linux_radix.c optional infiniband \ +ofed/include/linux/linux_radix.c optional ofed \ no-depend compile-with "${OFED_C}" -ofed/drivers/infiniband/core/addr.c optional infiniband \ +ofed/drivers/infiniband/core/addr.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/agent.c optional infiniband \ +ofed/drivers/infiniband/core/agent.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/cache.c optional infiniband \ +ofed/drivers/infiniband/core/cache.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" # XXX Mad.c must be ordered before cm.c for sysinit sets to occur in # the correct order. -ofed/drivers/infiniband/core/mad.c optional infiniband \ +ofed/drivers/infiniband/core/mad.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/cm.c optional infiniband \ +ofed/drivers/infiniband/core/cm.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/cma.c optional infiniband \ +ofed/drivers/infiniband/core/cma.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/device.c optional infiniband \ +ofed/drivers/infiniband/core/device.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/fmr_pool.c optional infiniband \ +ofed/drivers/infiniband/core/fmr_pool.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/iwcm.c optional infiniband \ +ofed/drivers/infiniband/core/iwcm.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/local_sa.c optional infiniband \ +ofed/drivers/infiniband/core/local_sa.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/mad_rmpp.c optional infiniband \ +ofed/drivers/infiniband/core/mad_rmpp.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/multicast.c optional infiniband \ +ofed/drivers/infiniband/core/multicast.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/notice.c optional infiniband \ +ofed/drivers/infiniband/core/notice.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/packer.c optional infiniband \ +ofed/drivers/infiniband/core/packer.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/sa_query.c optional infiniband \ +ofed/drivers/infiniband/core/sa_query.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/smi.c optional infiniband \ +ofed/drivers/infiniband/core/smi.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/sysfs.c optional infiniband \ +ofed/drivers/infiniband/core/sysfs.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/ucm.c optional infiniband \ +ofed/drivers/infiniband/core/ucm.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/ucma.c optional infiniband \ +ofed/drivers/infiniband/core/ucma.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/ud_header.c optional infiniband \ +ofed/drivers/infiniband/core/ud_header.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/umem.c optional infiniband \ +ofed/drivers/infiniband/core/umem.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/user_mad.c optional infiniband \ +ofed/drivers/infiniband/core/user_mad.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/uverbs_cmd.c optional infiniband \ +ofed/drivers/infiniband/core/uverbs_cmd.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/uverbs_main.c optional infiniband \ +ofed/drivers/infiniband/core/uverbs_main.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/uverbs_marshall.c optional infiniband \ +ofed/drivers/infiniband/core/uverbs_marshall.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" -ofed/drivers/infiniband/core/verbs.c optional infiniband \ +ofed/drivers/infiniband/core/verbs.c optional ofed \ no-depend \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" Modified: projects/ofed/head/sys/conf/options ============================================================================== --- projects/ofed/head/sys/conf/options Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/conf/options Thu Feb 10 00:05:11 2011 (r218501) @@ -856,3 +856,11 @@ X86BIOS # Flattened device tree options FDT opt_platform.h FDT_DTB_STATIC opt_platform.h + +# OFED Infiniband stack +OFED opt_ofed.h +OFED_DEBUG_INIT opt_ofed.h +SDP opt_ofed.h +SDP_DEBUG opt_ofed.h +IPOIB_DEBUG opt_ofed.h +IPOIB_CM opt_ofed.h Modified: projects/ofed/head/sys/net/if_llatbl.h ============================================================================== --- projects/ofed/head/sys/net/if_llatbl.h Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/net/if_llatbl.h Thu Feb 10 00:05:11 2011 (r218501) @@ -30,6 +30,8 @@ __FBSDID("$FreeBSD$"); #ifndef _NET_IF_LLATBL_H_ #define _NET_IF_LLATBL_H_ +#include "opt_ofed.h" + #include #include @@ -72,7 +74,9 @@ struct llentry { union { uint64_t mac_aligned; uint16_t mac16[3]; +#ifdef OFED uint8_t mac8[20]; /* IB needs 20 bytes. */ +#endif } ll_addr; /* XXX af-private? */ Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Thu Feb 10 00:05:11 2011 (r218501) @@ -37,6 +37,7 @@ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_ofed.h" #include #include @@ -92,7 +93,13 @@ #define INFINIBAND_ALEN 20 /* Octets in IPoIB HW addr */ #define MAX_MB_FRAGS (8192 / MCLBYTES) +#ifdef IPOIB_CM #define CONFIG_INFINIBAND_IPOIB_CM +#endif + +#ifdef IPOIB_DEBUG +#define CONFIG_INFINIBAND_IPOIB_DEBUG +#endif enum ipoib_flush_level { IPOIB_FLUSH_LIGHT, @@ -106,9 +113,7 @@ enum { IPOIB_UD_HEAD_SIZE = IB_GRH_BYTES + IPOIB_ENCAP_LEN, IPOIB_UD_RX_SG = 1, /* max buffer needed for 4K mtu */ - IPOIB_CM_MTU = (16 * 1024) - 0x14, - IPOIB_CM_BUF_SIZE = IPOIB_CM_MTU + IPOIB_ENCAP_LEN, - IPOIB_CM_HEAD_SIZE = IPOIB_CM_BUF_SIZE % PAGE_SIZE, + IPOIB_CM_MAX_MTU = MJUM16BYTES, IPOIB_CM_RX_SG = 1, /* We only allocate a single mbuf. */ IPOIB_RX_RING_SIZE = 256, IPOIB_TX_RING_SIZE = 128, @@ -129,7 +134,6 @@ enum { IPOIB_FLAG_SUBINTERFACE = 5, IPOIB_MCAST_RUN = 6, IPOIB_STOP_REAPER = 7, - IPOIB_FLAG_ADMIN_CM = 9, IPOIB_FLAG_UMCAST = 10, IPOIB_FLAG_CSUM = 11, @@ -196,11 +200,6 @@ struct ipoib_tx_buf { u64 mapping[MAX_MB_FRAGS]; }; -struct ipoib_cm_tx_buf { - struct mbuf *mb; - u64 mapping; -}; - struct ib_cm_id; struct ipoib_cm_data { @@ -258,11 +257,11 @@ struct ipoib_cm_tx { struct list_head list; struct ipoib_dev_priv *priv; struct ipoib_path *path; - struct ipoib_cm_tx_buf *tx_ring; + struct ipoib_tx_buf *tx_ring; unsigned tx_head; unsigned tx_tail; unsigned long flags; - u32 mtu; + u32 mtu; /* remote specified mtu, with grh. */ }; struct ipoib_cm_rx_buf { @@ -291,7 +290,7 @@ struct ipoib_cm_dev_priv { struct ib_sge rx_sge[IPOIB_CM_RX_SG]; struct ib_recv_wr rx_wr; int nonsrq_conn_qp; - int max_cm_mtu; + int max_cm_mtu; /* Actual buf size. */ int num_frags; }; @@ -346,9 +345,9 @@ struct ipoib_dev_priv { union ib_gid local_gid; u16 local_lid; - unsigned int admin_mtu; - unsigned int mcast_mtu; - unsigned int max_ib_mtu; + unsigned int admin_mtu; /* User selected MTU, no GRH. */ + unsigned int mcast_mtu; /* Minus GRH bytes, from mcast group. */ + unsigned int max_ib_mtu; /* Without header, actual buf size. */ struct ipoib_rx_buf *rx_ring; @@ -414,8 +413,9 @@ struct ipoib_path { int valid; }; -#define IPOIB_UD_MTU(ib_mtu) (ib_mtu - IPOIB_ENCAP_LEN) -#define IPOIB_UD_BUF_SIZE(ib_mtu) (ib_mtu + IB_GRH_BYTES) +/* UD Only transmits encap len but we want the two sizes to be symmetrical. */ +#define IPOIB_UD_MTU(ib_mtu) (ib_mtu - IB_GRH_BYTES) +#define IPOIB_CM_MTU(ib_mtu) (ib_mtu - IPOIB_ENCAP_LEN) #define IPOIB_IS_MULTICAST(addr) ((addr)[4] == 0xff) @@ -501,6 +501,8 @@ void ipoib_path_iter_read(struct ipoib_p struct ipoib_path *path); #endif +int ipoib_change_mtu(struct ipoib_dev_priv *priv, int new_mtu); + int ipoib_mcast_attach(struct ipoib_dev_priv *priv, u16 mlid, union ib_gid *mgid, int set_qkey); @@ -515,6 +517,9 @@ void ipoib_pkey_poll(struct work_struct int ipoib_pkey_dev_delay_open(struct ipoib_dev_priv *priv); void ipoib_drain_cq(struct ipoib_dev_priv *priv); +int ipoib_dma_map_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req); +void ipoib_dma_unmap_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req); + void ipoib_set_ethtool_ops(struct ifnet *dev); int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca); @@ -530,14 +535,12 @@ extern int ipoib_max_conn_qp; static inline int ipoib_cm_admin_enabled(struct ipoib_dev_priv *priv) { - return IPOIB_CM_SUPPORTED(IF_LLADDR(priv->dev)) && - test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags); + return IPOIB_CM_SUPPORTED(IF_LLADDR(priv->dev)); } static inline int ipoib_cm_enabled(struct ipoib_dev_priv *priv, uint8_t *hwaddr) { - return IPOIB_CM_SUPPORTED(hwaddr) && - test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags); + return IPOIB_CM_SUPPORTED(hwaddr); } static inline int ipoib_cm_up(struct ipoib_path *path) Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c Thu Feb 10 00:05:11 2011 (r218501) @@ -32,6 +32,8 @@ #include "ipoib.h" +#ifdef CONFIG_INFINIBAND_IPOIB_CM + #include #include #include @@ -80,7 +82,7 @@ static void ipoib_cm_dma_unmap_rx(struct u64 mapping[IPOIB_CM_RX_SG]) { - ib_dma_unmap_single(priv->ca, mapping[0], IPOIB_CM_HEAD_SIZE, DMA_FROM_DEVICE); + ib_dma_unmap_single(priv->ca, mapping[0], priv->cm.max_cm_mtu, DMA_FROM_DEVICE); } @@ -135,7 +137,7 @@ static struct mbuf *ipoib_cm_alloc_rx_mb struct mbuf *mb; int buf_size; - buf_size = IPOIB_CM_HEAD_SIZE + 12; + buf_size = priv->cm.max_cm_mtu; if (buf_size <= MCLBYTES) buf_size = MCLBYTES; else if (buf_size <= MJUMPAGESIZE) @@ -150,7 +152,7 @@ static struct mbuf *ipoib_cm_alloc_rx_mb return NULL; mapping[0] = ib_dma_map_single(priv->ca, mtod(mb, void *), - IPOIB_CM_HEAD_SIZE, DMA_FROM_DEVICE); + buf_size, DMA_FROM_DEVICE); if (unlikely(ib_dma_mapping_error(priv->ca, mapping[0]))) { m_freem(mb); return NULL; @@ -293,18 +295,13 @@ static void ipoib_cm_init_rx_wr(struct i struct ib_recv_wr *wr, struct ib_sge *sge) { - int i; - for (i = 0; i < priv->cm.num_frags; ++i) - sge[i].lkey = priv->mr->lkey; - - sge[0].length = IPOIB_CM_HEAD_SIZE; - for (i = 1; i < priv->cm.num_frags; ++i) - sge[i].length = PAGE_SIZE; + sge[0].length = priv->cm.max_cm_mtu; + sge[0].lkey = priv->mr->lkey; wr->next = NULL; wr->sg_list = sge; - wr->num_sge = priv->cm.num_frags; + wr->num_sge = 1; } static int ipoib_cm_nonsrq_init_rx(struct ipoib_dev_priv *priv, @@ -388,7 +385,7 @@ static int ipoib_cm_send_rep(struct ipoi struct ib_cm_rep_param rep = {}; data.qpn = cpu_to_be32(priv->qp->qp_num); - data.mtu = cpu_to_be32(IPOIB_CM_BUF_SIZE); + data.mtu = cpu_to_be32(priv->cm.max_cm_mtu); rep.private_data = &data; rep.private_data_len = sizeof data; @@ -484,7 +481,7 @@ static int ipoib_cm_rx_handler(struct ib } } /* Adjust length of mb with fragments to match received data */ -static void mb_put_frags(struct mbuf *mb, unsigned int hdr_space, +static void mb_put_frags(struct mbuf *mb, unsigned int length, struct mbuf *tomb) { @@ -569,7 +566,7 @@ void ipoib_cm_handle_rx_wc(struct ipoib_ ipoib_dbg_data(priv, "received %d bytes, SLID 0x%04x\n", wc->byte_len, wc->slid); - mb_put_frags(mb, IPOIB_CM_HEAD_SIZE, wc->byte_len, newmb); + mb_put_frags(mb, wc->byte_len, newmb); ++dev->if_opackets; dev->if_obytes += mb->m_pkthdr.len; @@ -577,6 +574,9 @@ void ipoib_cm_handle_rx_wc(struct ipoib_ mb->m_pkthdr.rcvif = dev; proto = *mtod(mb, uint16_t *); m_adj(mb, IPOIB_ENCAP_LEN); + if (test_bit(IPOIB_FLAG_CSUM, &priv->flags) && likely(wc->csum_ok)) + mb->m_pkthdr.csum_flags = CSUM_IP_CHECKED | CSUM_IP_VALID; + IPOIB_MTAP_PROTO(dev, mb, proto); spin_unlock(&priv->lock); ipoib_demux(dev, mb, ntohs(proto)); @@ -601,38 +601,44 @@ repost: static inline int post_send(struct ipoib_dev_priv *priv, struct ipoib_cm_tx *tx, - unsigned int wr_id, - u64 addr, int len) + struct ipoib_tx_buf *tx_req, + unsigned int wr_id) { struct ib_send_wr *bad_wr; + struct mbuf *mb = tx_req->mb; + u64 *mapping = tx_req->mapping; + struct mbuf *m; + int i; - priv->tx_sge[0].addr = addr; - priv->tx_sge[0].length = len; - - priv->tx_wr.num_sge = 1; - priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM; + for (m = mb, i = 0; m != NULL; m = m->m_next, i++) { + priv->tx_sge[i].addr = mapping[i]; + priv->tx_sge[i].length = m->m_len; + } + priv->tx_wr.num_sge = i; + priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM; + priv->tx_wr.opcode = IB_WR_SEND; return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr); } void ipoib_cm_send(struct ipoib_dev_priv *priv, struct mbuf *mb, struct ipoib_cm_tx *tx) { - struct ipoib_cm_tx_buf *tx_req; + struct ipoib_tx_buf *tx_req; struct ifnet *dev = priv->dev; - u64 addr; - m_adj(mb, INFINIBAND_ALEN); - if (unlikely(mb->m_pkthdr.len > tx->mtu)) { + m_adj(mb, sizeof(struct ipoib_pseudoheader)); + if (unlikely(mb->m_pkthdr.len > IPOIB_CM_MTU(tx->mtu))) { ipoib_warn(priv, "packet len %d (> %d) too long to send, dropping\n", mb->m_pkthdr.len, tx->mtu); ++dev->if_oerrors; - ipoib_cm_mb_too_long(priv, mb, tx->mtu - IPOIB_ENCAP_LEN); + ipoib_cm_mb_too_long(priv, mb, IPOIB_CM_MTU(tx->mtu)); return; } ipoib_dbg_data(priv, "sending packet: head 0x%x length %d connection 0x%x\n", tx->tx_head, mb->m_pkthdr.len, tx->qp->qp_num); + /* * We put the mb into the tx_ring _before_ we call post_send() * because it's entirely possible that the completion handler will @@ -642,21 +648,22 @@ void ipoib_cm_send(struct ipoib_dev_priv */ tx_req = &tx->tx_ring[tx->tx_head & (ipoib_sendq_size - 1)]; tx_req->mb = mb; - addr = ib_dma_map_single(priv->ca, mtod(mb, void *), mb->m_pkthdr.len, - DMA_TO_DEVICE); - if (unlikely(ib_dma_mapping_error(priv->ca, addr))) { + if (unlikely(ipoib_dma_map_tx(priv->ca, tx_req))) { ++dev->if_oerrors; - m_freem(mb); + if (tx_req->mb) + m_freem(tx_req->mb); return; } - tx_req->mapping = addr; + if (mb->m_pkthdr.csum_flags & (CSUM_IP|CSUM_TCP|CSUM_UDP)) + priv->tx_wr.send_flags |= IB_SEND_IP_CSUM; + else + priv->tx_wr.send_flags &= ~IB_SEND_IP_CSUM; - if (unlikely(post_send(priv, tx, tx->tx_head & (ipoib_sendq_size - 1), - addr, mb->m_pkthdr.len))) { + if (unlikely(post_send(priv, tx, tx_req, tx->tx_head & (ipoib_sendq_size - 1)))) { ipoib_warn(priv, "post_send failed\n"); ++dev->if_oerrors; - ib_dma_unmap_single(priv->ca, addr, mb->m_pkthdr.len, DMA_TO_DEVICE); + ipoib_dma_unmap_tx(priv->ca, tx_req); m_freem(mb); } else { ++tx->tx_head; @@ -676,7 +683,7 @@ void ipoib_cm_handle_tx_wc(struct ipoib_ struct ipoib_cm_tx *tx = wc->qp->qp_context; unsigned int wr_id = wc->wr_id & ~IPOIB_OP_CM; struct ifnet *dev = priv->dev; - struct ipoib_cm_tx_buf *tx_req; + struct ipoib_tx_buf *tx_req; unsigned long flags; ipoib_dbg_data(priv, "cm send completion: id %d, status: %d\n", @@ -690,7 +697,7 @@ void ipoib_cm_handle_tx_wc(struct ipoib_ tx_req = &tx->tx_ring[wr_id]; - ib_dma_unmap_single(priv->ca, tx_req->mapping, tx_req->mb->m_pkthdr.len, DMA_TO_DEVICE); + ipoib_dma_unmap_tx(priv->ca, tx_req); /* FIXME: is this right? Shouldn't we only increment on success? */ ++dev->if_opackets; @@ -720,7 +727,6 @@ void ipoib_cm_handle_tx_wc(struct ipoib_ tx->path = NULL; rb_erase(&path->rb_node, &priv->path_tree); list_del(&path->list); - ipoib_path_free(priv, path); } if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { @@ -731,6 +737,8 @@ void ipoib_cm_handle_tx_wc(struct ipoib_ clear_bit(IPOIB_FLAG_OPER_UP, &tx->flags); spin_unlock_irqrestore(&priv->lock, flags); + if (path) + ipoib_path_free(priv, path); } } @@ -932,7 +940,7 @@ static struct ib_qp *ipoib_cm_create_tx_ .recv_cq = priv->recv_cq, .srq = priv->cm.srq, .cap.max_send_wr = ipoib_sendq_size, - .cap.max_send_sge = 1, + .cap.max_send_sge = MAX_MB_FRAGS, .sq_sig_type = IB_SIGNAL_ALL_WR, .qp_type = IB_QPT_RC, .qp_context = tx @@ -952,7 +960,7 @@ static int ipoib_cm_send_req(struct ipoi ipoib_dbg(priv, "cm send req\n"); data.qpn = cpu_to_be32(priv->qp->qp_num); - data.mtu = cpu_to_be32(IPOIB_CM_BUF_SIZE); + data.mtu = cpu_to_be32(priv->cm.max_cm_mtu); req.primary_path = pathrec; req.alternate_path = NULL; @@ -1065,7 +1073,7 @@ static void ipoib_cm_tx_destroy(struct i { struct ipoib_dev_priv *priv = p->priv; struct ifnet *dev = priv->dev; - struct ipoib_cm_tx_buf *tx_req; + struct ipoib_tx_buf *tx_req; unsigned long begin; ipoib_dbg(priv, "Destroy active connection 0x%x head 0x%x tail 0x%x\n", @@ -1092,8 +1100,7 @@ timeout: while ((int) p->tx_tail - (int) p->tx_head < 0) { tx_req = &p->tx_ring[p->tx_tail & (ipoib_sendq_size - 1)]; - ib_dma_unmap_single(priv->ca, tx_req->mapping, tx_req->mb->m_pkthdr.len, - DMA_TO_DEVICE); + ipoib_dma_unmap_tx(priv->ca, tx_req); m_freem(tx_req->mb); ++p->tx_tail; if (unlikely(--priv->tx_outstanding == ipoib_sendq_size >> 1) && @@ -1142,7 +1149,6 @@ static int ipoib_cm_tx_handler(struct ib tx->path = NULL; rb_erase(&path->rb_node, &priv->path_tree); list_del(&path->list); - ipoib_path_free(tx->priv, path); } if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { @@ -1151,6 +1157,8 @@ static int ipoib_cm_tx_handler(struct ib } spin_unlock_irqrestore(&priv->lock, flags); + if (path) + ipoib_path_free(tx->priv, path); break; default: break; @@ -1182,7 +1190,9 @@ void ipoib_cm_destroy_tx(struct ipoib_cm { struct ipoib_dev_priv *priv = tx->priv; if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { + spin_lock(&priv->lock); list_move(&tx->list, &priv->cm.reap_list); + spin_unlock(&priv->lock); queue_work(ipoib_workqueue, &priv->cm.reap_task); ipoib_dbg(priv, "Reap connection for gid %pI6\n", tx->path->pathrec.dgid.raw); @@ -1292,12 +1302,6 @@ ipoib_cm_mb_too_long(struct ipoib_dev_pr { int e = priv->cm.mb_queue.ifq_len; -/* XXX */ -#if 0 - if (mb->dst) - mb->dst->ops->update_pmtu(mb->dst, mtu); -#endif - IF_ENQUEUE(&priv->cm.mb_queue, mb); if (e == 0) queue_work(ipoib_workqueue, &priv->cm.mb_task); @@ -1403,13 +1407,12 @@ int ipoib_cm_dev_init(struct ipoib_dev_p attr.max_srq_sge = min_t(int, IPOIB_CM_RX_SG, attr.max_srq_sge); ipoib_cm_create_srq(priv, attr.max_srq_sge); if (ipoib_cm_has_srq(priv)) { - - priv->cm.max_cm_mtu = attr.max_srq_sge * PAGE_SIZE - 0x10; + priv->cm.max_cm_mtu = attr.max_srq_sge * MJUM16BYTES; priv->cm.num_frags = attr.max_srq_sge; ipoib_dbg(priv, "max_cm_mtu = 0x%x, num_frags=%d\n", priv->cm.max_cm_mtu, priv->cm.num_frags); } else { - priv->cm.max_cm_mtu = IPOIB_CM_MTU; + priv->cm.max_cm_mtu = IPOIB_CM_MAX_MTU; priv->cm.num_frags = IPOIB_CM_RX_SG; } @@ -1460,3 +1463,5 @@ void ipoib_cm_dev_cleanup(struct ipoib_d mtx_destroy(&priv->cm.mb_queue.ifq_mtx); } + +#endif /* CONFIG_INFINIBAND_IPOIB_CM */ Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c Thu Feb 10 00:05:11 2011 (r218501) @@ -90,8 +90,7 @@ void ipoib_free_ah(struct kref *kref) static void ipoib_ud_dma_unmap_rx(struct ipoib_dev_priv *priv, u64 mapping[IPOIB_UD_RX_SG]) { - ib_dma_unmap_single(priv->ca, mapping[0], - IPOIB_UD_BUF_SIZE(priv->max_ib_mtu), + ib_dma_unmap_single(priv->ca, mapping[0], priv->max_ib_mtu, DMA_FROM_DEVICE); } @@ -132,7 +131,7 @@ static struct mbuf *ipoib_alloc_rx_mb(st /* * XXX Should be calculated once and cached. */ - buf_size = IPOIB_UD_BUF_SIZE(priv->max_ib_mtu); + buf_size = priv->max_ib_mtu; if (buf_size <= MCLBYTES) buf_size = MCLBYTES; else if (buf_size <= MJUMPAGESIZE) @@ -254,8 +253,7 @@ repost: "for buf %d\n", wr_id); } -static int ipoib_dma_map_tx(struct ib_device *ca, - struct ipoib_tx_buf *tx_req) +int ipoib_dma_map_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req) { struct mbuf *mb = tx_req->mb; u64 *mapping = tx_req->mapping; @@ -293,8 +291,7 @@ static int ipoib_dma_map_tx(struct ib_de return error; } -static void ipoib_dma_unmap_tx(struct ib_device *ca, - struct ipoib_tx_buf *tx_req) +void ipoib_dma_unmap_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req) { struct mbuf *mb = tx_req->mb; u64 *mapping = tx_req->mapping; @@ -413,11 +410,10 @@ void ipoib_send_comp_handler(struct ib_c mod_timer(&priv->poll_timer, jiffies); } -static inline int post_send(struct ipoib_dev_priv *priv, - unsigned int wr_id, - struct ib_ah *address, u32 qpn, - struct ipoib_tx_buf *tx_req, - void *head, int hlen) +static inline int +post_send(struct ipoib_dev_priv *priv, unsigned int wr_id, + struct ib_ah *address, u32 qpn, struct ipoib_tx_buf *tx_req, void *head, + int hlen) { struct ib_send_wr *bad_wr; struct mbuf *mb = tx_req->mb; @@ -466,9 +462,9 @@ ipoib_send(struct ipoib_dev_priv *priv, } m_adj(mb, hlen); } else { - if (unlikely(mb->m_pkthdr.len > priv->mcast_mtu + IPOIB_ENCAP_LEN)) { + if (unlikely(mb->m_pkthdr.len > priv->mcast_mtu)) { ipoib_warn(priv, "packet len %d (> %d) too long to send, dropping\n", - mb->m_pkthdr.len, priv->mcast_mtu + IPOIB_ENCAP_LEN); + mb->m_pkthdr.len, priv->mcast_mtu); ++dev->if_oerrors; ipoib_cm_mb_too_long(priv, mb, priv->mcast_mtu); return; @@ -508,8 +504,9 @@ ipoib_send(struct ipoib_dev_priv *priv, dev->if_drv_flags |= IFF_DRV_OACTIVE; } - if (unlikely(post_send(priv, priv->tx_head & (ipoib_sendq_size - 1), - address->ah, qpn, tx_req, phead, hlen))) { + if (unlikely(post_send(priv, + priv->tx_head & (ipoib_sendq_size - 1), address->ah, qpn, + tx_req, phead, hlen))) { ipoib_warn(priv, "post_send failed\n"); ++dev->if_oerrors; --priv->tx_outstanding; @@ -518,8 +515,6 @@ ipoib_send(struct ipoib_dev_priv *priv, if (dev->if_drv_flags & IFF_DRV_OACTIVE) dev->if_drv_flags &= ~IFF_DRV_OACTIVE; } else { - /* dev->trans_start = jiffies; */ - address->last_send = priv->tx_head; ++priv->tx_head; } Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Thu Feb 10 00:05:11 2011 (r218501) @@ -221,14 +221,14 @@ ipoib_stop(struct ipoib_dev_priv *priv) return 0; } -static int +int ipoib_change_mtu(struct ipoib_dev_priv *priv, int new_mtu) { struct ifnet *dev = priv->dev; /* dev->if_mtu > 2K ==> connected mode */ if (ipoib_cm_admin_enabled(priv)) { - if (new_mtu > ipoib_cm_max_mtu(priv)) + if (new_mtu > IPOIB_CM_MTU(ipoib_cm_max_mtu(priv))) return -EINVAL; if (new_mtu > priv->mcast_mtu) @@ -596,7 +596,7 @@ path_rec_start(struct ipoib_dev_priv *pr p_rec = path->pathrec; p_rec.mtu_selector = IB_SA_GT; - switch (roundup_pow_of_two(dev->if_mtu + IPOIB_ENCAP_LEN)) { + switch (roundup_pow_of_two(dev->if_mtu + IB_GRH_BYTES)) { case 512: p_rec.mtu = IB_MTU_256; break; @@ -824,45 +824,6 @@ ipoib_dev_cleanup(struct ipoib_dev_priv priv->tx_ring = NULL; } -#if 0 -static int get_mb_hdr(struct mbuf *mb, void **iphdr, - void **tcph, u64 *hdr_flags, void *priv) -{ - unsigned int ip_len; - struct iphdr *iph; - - if (unlikely(mb->protocol != htons(ETH_P_IP))) - return -1; - - /* - * In the future we may add an else clause that verifies the - * checksum and allows devices which do not calculate checksum - * to use LRO. - */ - if (unlikely(mb->ip_summed != CHECKSUM_UNNECESSARY)) - return -1; - - /* Check for non-TCP packet */ - mb_reset_network_header(mb); - iph = ip_hdr(mb); - if (iph->protocol != IPPROTO_TCP) - return -1; - - ip_len = ip_hdrlen(mb); - mb_set_transport_header(mb, ip_len); - *tcph = tcp_hdr(mb); - - /* check if IP header and TCP header are complete */ - if (ntohs(iph->tot_len) < ip_len + tcp_hdrlen(mb)) - return -1; - - *hdr_flags = LRO_IPV4 | LRO_TCP; - *iphdr = iph; - - return 0; -} -#endif - static volatile int ipoib_unit; static struct ipoib_dev_priv * @@ -955,13 +916,13 @@ ipoib_set_dev_features(struct ipoib_dev_ priv->dev->if_hwassist = 0; priv->dev->if_capabilities = 0; +#ifndef CONFIG_INFINIBAND_IPOIB_CM if (priv->hca_caps & IB_DEVICE_UD_IP_CSUM) { set_bit(IPOIB_FLAG_CSUM, &priv->flags); priv->dev->if_hwassist = CSUM_IP | CSUM_TCP | CSUM_UDP; priv->dev->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_HWCSUM; } -#if 0 if (priv->dev->features & NETIF_F_SG && priv->hca_caps & IB_DEVICE_UD_TSO) priv->dev->if_capabilities |= IFCAP_TSO4 | CSUM_TSO; #endif @@ -993,8 +954,8 @@ ipoib_add_port(const char *format, struc } /* MTU will be reset when mcast join happens */ - priv->dev->if_mtu = IPOIB_UD_MTU(priv->max_ib_mtu); - priv->mcast_mtu = priv->admin_mtu = priv->dev->if_mtu; + priv->dev->if_mtu = IPOIB_UD_MTU(priv->max_ib_mtu); + priv->mcast_mtu = priv->admin_mtu = priv->dev->if_mtu; result = ib_query_pkey(hca, port, 0, &priv->pkey); if (result) { Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c Thu Feb 10 00:05:11 2011 (r218501) @@ -550,12 +550,8 @@ void ipoib_mcast_join_task(struct work_s priv->mcast_mtu = priv->admin_mtu; spin_unlock_irq(&priv->lock); - if (!ipoib_cm_admin_enabled(priv)) { - /* - * dev_set_mtu(dev, min(priv->mcast_mtu, priv->admin_mtu)); - * XXX - */ - } + if (!ipoib_cm_admin_enabled(priv)) + ipoib_change_mtu(priv, min(priv->mcast_mtu, priv->admin_mtu)); ipoib_dbg_mcast(priv, "successfully joined all multicast groups\n"); Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c Thu Feb 10 00:05:11 2011 (r218501) @@ -222,15 +222,8 @@ int ipoib_transport_dev_init(struct ipoi priv->tx_wr.send_flags = IB_SEND_SIGNALED; priv->rx_sge[0].lkey = priv->mr->lkey; - if (0 /* XXX ipoib_ud_need_sg(priv->max_ib_mtu)*/) { - priv->rx_sge[0].length = IPOIB_UD_HEAD_SIZE; - priv->rx_sge[1].length = PAGE_SIZE; - priv->rx_sge[1].lkey = priv->mr->lkey; - priv->rx_wr.num_sge = IPOIB_UD_RX_SG; - } else { - priv->rx_sge[0].length = IPOIB_UD_BUF_SIZE(priv->max_ib_mtu); - priv->rx_wr.num_sge = 1; - } + priv->rx_sge[0].length = priv->max_ib_mtu; + priv->rx_wr.num_sge = 1; priv->rx_wr.next = NULL; priv->rx_wr.sg_list = priv->rx_sge; Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h Thu Feb 10 00:05:11 2011 (r218501) @@ -3,6 +3,7 @@ #include "opt_ddb.h" #include "opt_inet.h" +#include "opt_ofed.h" #include #include @@ -51,10 +52,9 @@ #include #include -#define CONFIG_INFINIBAND_SDP_DEBUG 1 -#define CONFIG_INFINIBAND_SDP_DEBUG_DATA 1 - -#define SDP_DEBUG +#ifdef SDP_DEBUG +#define CONFIG_INFINIBAND_SDP_DEBUG +#endif #include "sdp_dbg.h" Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c Thu Feb 10 00:05:11 2011 (r218501) @@ -1957,5 +1957,5 @@ struct domain sdpdomain = { DOMAIN_SET(sdp); -int sdp_debug_level = 0; +int sdp_debug_level = 1; int sdp_data_debug_level = 0; Modified: projects/ofed/head/sys/ofed/include/linux/module.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/module.h Thu Feb 10 00:01:50 2011 (r218500) +++ projects/ofed/head/sys/ofed/include/linux/module.h Thu Feb 10 00:05:11 2011 (r218501) @@ -49,9 +49,10 @@ static inline void _module_run(void *arg) { + void (*fn)(void); +#ifdef OFED_DEBUG_INIT char name[1024]; caddr_t pc; - void (*fn)(void); long offset; pc = (caddr_t)arg; @@ -59,7 +60,7 @@ _module_run(void *arg) printf("Running ??? (%p)\n", pc); else printf("Running %s (%p)\n", name, pc); - +#endif fn = arg; DROP_GIANT(); fn(); From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 02:48:27 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 789001065673; Thu, 10 Feb 2011 02:48:27 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4C4F78FC12; Thu, 10 Feb 2011 02:48:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1A2mRUd006385; Thu, 10 Feb 2011 02:48:27 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1A2mRGu006382; Thu, 10 Feb 2011 02:48:27 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201102100248.p1A2mRGu006382@svn.freebsd.org> From: Warner Losh Date: Thu, 10 Feb 2011 02:48:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218504 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 02:48:27 -0000 Author: imp Date: Thu Feb 10 02:48:27 2011 New Revision: 218504 URL: http://svn.freebsd.org/changeset/base/218504 Log: Move error counting from subdisk to disk. Modified: projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Thu Feb 10 01:24:09 2011 (r218503) +++ projects/graid/head/sys/geom/raid/g_raid.h Thu Feb 10 02:48:27 2011 (r218504) @@ -151,6 +151,7 @@ struct g_raid_disk { u_int d_state; /* Disk state. */ u_int d_load; /* Disk average load. */ off_t d_last_offset; /* Last head offset. */ + int d_read_errs; /* Count of the read errors */ TAILQ_HEAD(, g_raid_subdisk) d_subdisks; /* List of subdisks. */ TAILQ_ENTRY(g_raid_disk) d_next; /* Next disk in the node. */ }; @@ -185,7 +186,6 @@ struct g_raid_subdisk { u_int sd_pos; /* Position in volume. */ u_int sd_state; /* Subdisk state. */ off_t sd_rebuild_pos; /* Rebuild position. */ - int sd_read_errs; /* Count of the read errors */ int sd_recovery; /* Count of recovery reqs. */ TAILQ_ENTRY(g_raid_subdisk) sd_next; /* Next subdisk on disk. */ }; Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Thu Feb 10 01:24:09 2011 (r218503) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Thu Feb 10 02:48:27 2011 (r218504) @@ -811,10 +811,10 @@ rebuild_round_done: * another disk drive, if available, before erroring out the * read. */ - sd->sd_read_errs++; + sd->sd_disk->d_read_errs++; G_RAID_LOGREQ(0, bp, "Read error (%d), %d read errors total", - bp->bio_error, sd->sd_read_errs); + bp->bio_error, sd->sd_disk->d_read_errs); /* * If there are too many read errors, we move to degraded. @@ -823,7 +823,7 @@ rebuild_round_done: * drive, which kicks off a resync? */ do_write = 1; - if (sd->sd_read_errs > g_raid1_read_err_thresh) { + if (sd->sd_disk->d_read_errs > g_raid1_read_err_thresh) { g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); if (pbp->bio_children == 1) do_write = 0; From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 07:56:56 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C5031065674; Thu, 10 Feb 2011 07:56:56 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1B4B88FC0A; Thu, 10 Feb 2011 07:56:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1A7uufs014149; Thu, 10 Feb 2011 07:56:56 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1A7utcf014147; Thu, 10 Feb 2011 07:56:55 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102100756.p1A7utcf014147@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 07:56:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218512 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 07:56:56 -0000 Author: mav Date: Thu Feb 10 07:56:55 2011 New Revision: 218512 URL: http://svn.freebsd.org/changeset/base/218512 Log: Explicitly write metadata on array startup. It deprecates all missing disks and guaranties that any later arrival will be handled as STALE with potential rebuild. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Thu Feb 10 07:38:38 2011 (r218511) +++ projects/graid/head/sys/geom/raid/md_intel.c Thu Feb 10 07:56:55 2011 (r218512) @@ -954,6 +954,8 @@ g_raid_md_intel_start(struct g_raid_soft } while (disk != NULL); mdi->mdio_started = 1; + G_RAID_DEBUG1(0, sc, "Array started."); + g_raid_md_write_intel(md, NULL, NULL, NULL); /* Pickup any STALE/SPARE disks to refill array if needed. */ g_raid_md_intel_refill(sc); @@ -1541,6 +1543,7 @@ makedisk: } /* Write metadata based on created entities. */ + G_RAID_DEBUG1(0, sc, "Array started."); g_raid_md_write_intel(md, NULL, NULL, NULL); /* Pickup any STALE/SPARE disks to refill array if needed. */ From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 08:19:38 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 16F0E106564A; Thu, 10 Feb 2011 08:19:38 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 05BF78FC0A; Thu, 10 Feb 2011 08:19:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1A8JbB9014833; Thu, 10 Feb 2011 08:19:37 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1A8JbPK014831; Thu, 10 Feb 2011 08:19:37 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102100819.p1A8JbPK014831@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 08:19:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218514 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 08:19:38 -0000 Author: mav Date: Thu Feb 10 08:19:37 2011 New Revision: 218514 URL: http://svn.freebsd.org/changeset/base/218514 Log: Write metadata on RAID1 volume state change. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Thu Feb 10 08:06:56 2011 (r218513) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Thu Feb 10 08:19:37 2011 (r218514) @@ -163,10 +163,12 @@ g_raid_tr_update_state_raid1(struct g_ra struct g_raid_subdisk *sd) { struct g_raid_tr_raid1_object *trs; + struct g_raid_softc *sc; struct g_raid_subdisk *tsd, *bestsd; u_int s; int i, na, ns; + sc = vol->v_softc; trs = (struct g_raid_tr_raid1_object *)vol->v_tr; if (trs->trso_stopping && (trs->trso_flags & TR_RAID1_F_DOING_SOME) == 0) @@ -194,13 +196,13 @@ g_raid_tr_update_state_raid1(struct g_ra } if (bestsd->sd_state >= G_RAID_SUBDISK_S_UNINITIALIZED) { /* We found reasonable candidate. */ - G_RAID_DEBUG1(1, vol->v_softc, + G_RAID_DEBUG1(1, sc, "Promote subdisk %s:%d from %s to ACTIVE.", vol->v_name, bestsd->sd_pos, g_raid_subdisk_state2str(bestsd->sd_state)); g_raid_change_subdisk_state(bestsd, G_RAID_SUBDISK_S_ACTIVE); - g_raid_write_metadata(vol->v_softc, + g_raid_write_metadata(sc, vol, bestsd, bestsd->sd_disk); } } @@ -222,6 +224,8 @@ g_raid_tr_update_state_raid1(struct g_ra G_RAID_VOLUME_E_UP : G_RAID_VOLUME_E_DOWN, G_RAID_EVENT_VOLUME); g_raid_change_volume_state(vol, s); + if (!trs->trso_starting && !trs->trso_stopping) + g_raid_write_metadata(sc, vol, NULL, NULL); } return (0); } From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 08:40:12 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BABAF106566B; Thu, 10 Feb 2011 08:40:12 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8EA278FC12; Thu, 10 Feb 2011 08:40:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1A8eCHs015314; Thu, 10 Feb 2011 08:40:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1A8eC8X015312; Thu, 10 Feb 2011 08:40:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102100840.p1A8eC8X015312@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 08:40:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218515 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 08:40:12 -0000 Author: mav Date: Thu Feb 10 08:40:12 2011 New Revision: 218515 URL: http://svn.freebsd.org/changeset/base/218515 Log: Make recovery read to reuse g_raid_tr_raid1_select_read_disk(). Add argument storing the bitmap of the disks to avoid (that were already tried). Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Thu Feb 10 08:19:37 2011 (r218514) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Thu Feb 10 08:40:12 2011 (r218515) @@ -500,7 +500,8 @@ g_raid_tr_stop_raid1(struct g_raid_tr_ob */ #define ABS(x) (((x) >= 0) ? (x) : (-(x))) static struct g_raid_subdisk * -g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol, struct bio *bp) +g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol, struct bio *bp, + u_int mask) { struct g_raid_subdisk *sd, *best; int i, prio, bestprio; @@ -515,6 +516,8 @@ g_raid_tr_raid1_select_read_disk(struct bp->bio_offset + bp->bio_length < sd->sd_rebuild_pos)) continue; + if ((mask & (1 << i)) != 0) + continue; prio = G_RAID_SUBDISK_LOAD(sd); prio += min(sd->sd_recovery, 255) << 22; prio += (G_RAID_SUBDISK_S_ACTIVE - sd->sd_state) << 16; @@ -540,7 +543,7 @@ g_raid_tr_iostart_raid1_read(struct g_ra struct g_raid_subdisk *sd; struct bio *cbp; - sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume, bp); + sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume, bp, 0); KASSERT(sd != NULL, ("No active disks in volume %s.", tr->tro_volume->v_name)); @@ -676,7 +679,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ struct bio *pbp; struct g_raid_tr_raid1_object *trs; uintptr_t *mask; - int i, error, do_write; + int error, do_write; trs = (struct g_raid_tr_raid1_object *)tr; vol = tr->tro_volume; @@ -843,20 +846,10 @@ rebuild_round_done: *mask = 0; } *mask |= 1 << sd->sd_pos; - for (i = 0; i < vol->v_disks_count; i++) { - nsd = &vol->v_subdisks[i]; - if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE && - !((nsd->sd_state == G_RAID_SUBDISK_S_REBUILD || - nsd->sd_state == G_RAID_SUBDISK_S_RESYNC) && - bp->bio_offset + bp->bio_length < - nsd->sd_rebuild_pos)) - continue; - if ((*mask & (1 << i)) != 0) - continue; - cbp = g_clone_bio(pbp); - if (cbp == NULL) - break; - G_RAID_LOGREQ(2, cbp, "Retrying read from %d", i); + nsd = g_raid_tr_raid1_select_read_disk(vol, pbp, *mask); + if (nsd != NULL && (cbp = g_clone_bio(pbp)) != NULL) { + G_RAID_LOGREQ(2, cbp, "Retrying read from %d", + nsd->sd_pos); if (pbp->bio_children == 2 && do_write) { sd->sd_recovery++; cbp->bio_caller1 = nsd; From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 10:04:39 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 37B98106564A; Thu, 10 Feb 2011 10:04:39 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 258988FC08; Thu, 10 Feb 2011 10:04:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1AA4dEB018619; Thu, 10 Feb 2011 10:04:39 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1AA4dCD018617; Thu, 10 Feb 2011 10:04:39 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102101004.p1AA4dCD018617@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 10:04:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218516 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 10:04:39 -0000 Author: mav Date: Thu Feb 10 10:04:38 2011 New Revision: 218516 URL: http://svn.freebsd.org/changeset/base/218516 Log: Report volume stripesize and stripeoffset. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Thu Feb 10 08:40:12 2011 (r218515) +++ projects/graid/head/sys/geom/raid/g_raid.c Thu Feb 10 10:04:38 2011 (r218516) @@ -1321,10 +1321,11 @@ out: static void g_raid_launch_provider(struct g_raid_volume *vol) { -// struct g_raid_disk *disk; + struct g_raid_disk *disk; struct g_raid_softc *sc; struct g_provider *pp; char name[G_RAID_MAX_VOLUMENAME]; + off_t off; sc = vol->v_softc; sx_assert(&sc->sc_lock, SX_LOCKED); @@ -1343,14 +1344,25 @@ g_raid_launch_provider(struct g_raid_vol pp->sectorsize = vol->v_sectorsize; pp->stripesize = 0; pp->stripeoffset = 0; -#if 0 - TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { - if (disk->d_consumer && disk->d_consumer->provider && - disk->d_consumer->provider->stripesize > pp->stripesize) { + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 || + vol->v_raid_level == G_RAID_VOLUME_RL_RAID3 || + vol->v_raid_level == G_RAID_VOLUME_RL_SINGLE || + vol->v_raid_level == G_RAID_VOLUME_RL_CONCAT) { + if ((disk = vol->v_subdisks[0].sd_disk) != NULL && + disk->d_consumer != NULL && + disk->d_consumer->provider != NULL) { pp->stripesize = disk->d_consumer->provider->stripesize; + off = disk->d_consumer->provider->stripeoffset; + pp->stripeoffset = off + vol->v_subdisks[0].sd_offset; + if (off > 0) + pp->stripeoffset %= off; } - } -#endif + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID3) { + pp->stripesize *= (vol->v_disks_count - 1); + pp->stripeoffset *= (vol->v_disks_count - 1); + } + } else + pp->stripesize = vol->v_strip_size; vol->v_provider = pp; g_error_provider(pp, 0); g_topology_unlock(); From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 10:51:12 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E77FB106566B; Thu, 10 Feb 2011 10:51:12 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D55C28FC15; Thu, 10 Feb 2011 10:51:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1AApCPR019854; Thu, 10 Feb 2011 10:51:12 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1AApCAo019852; Thu, 10 Feb 2011 10:51:12 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201102101051.p1AApCAo019852@svn.freebsd.org> From: Jeff Roberson Date: Thu, 10 Feb 2011 10:51:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218517 - projects/ofed/head/contrib/ofed/libibverbs/src X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 10:51:13 -0000 Author: jeff Date: Thu Feb 10 10:51:12 2011 New Revision: 218517 URL: http://svn.freebsd.org/changeset/base/218517 Log: - Put ibv_resolve_eth_gid in the 1.1 symbols for lack of a better place. Modified: projects/ofed/head/contrib/ofed/libibverbs/src/libibverbs.map Modified: projects/ofed/head/contrib/ofed/libibverbs/src/libibverbs.map ============================================================================== --- projects/ofed/head/contrib/ofed/libibverbs/src/libibverbs.map Thu Feb 10 10:04:38 2011 (r218516) +++ projects/ofed/head/contrib/ofed/libibverbs/src/libibverbs.map Thu Feb 10 10:51:12 2011 (r218517) @@ -83,6 +83,7 @@ IBVERBS_1.1 { ibv_get_device_guid; ibv_open_device; ibv_close_device; + ibv_resolve_eth_gid; ibv_init_ah_from_wc; ibv_create_ah_from_wc; From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 11:27:31 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DC66D106566B; Thu, 10 Feb 2011 11:27:31 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CA2D68FC1B; Thu, 10 Feb 2011 11:27:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1ABRViq020658; Thu, 10 Feb 2011 11:27:31 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1ABRVFb020654; Thu, 10 Feb 2011 11:27:31 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102101127.p1ABRVFb020654@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 11:27:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218518 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 11:27:31 -0000 Author: mav Date: Thu Feb 10 11:27:31 2011 New Revision: 218518 URL: http://svn.freebsd.org/changeset/base/218518 Log: Remove RAID10 RAID level constant, not defined by DDF specification. Use RAID1E constant instead. For even number of disks it is exactly the same, while it is really single level transformation, as we may handle it. Tune Intel metadata decoding, adding support for 3+ disks RAID1 and RAID1E with odd number of disks. None of them supported by Intel RAID BIOS or other drivers, but if I interpret numbers correctly, there is enough information to represent them. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Thu Feb 10 10:51:12 2011 (r218517) +++ projects/graid/head/sys/geom/raid/g_raid.c Thu Feb 10 11:27:31 2011 (r218518) @@ -275,8 +275,6 @@ g_raid_volume_level2str(int level, int q return ("RAID5"); case G_RAID_VOLUME_RL_RAID6: return ("RAID6"); - case G_RAID_VOLUME_RL_RAID10: - return ("RAID10"); case G_RAID_VOLUME_RL_RAID1E: return ("RAID1E"); case G_RAID_VOLUME_RL_SINGLE: @@ -310,9 +308,8 @@ g_raid_volume_str2level(const char *str, *level = G_RAID_VOLUME_RL_RAID5; else if (strcasecmp(str, "RAID6") == 0) *level = G_RAID_VOLUME_RL_RAID6; - else if (strcasecmp(str, "RAID10") == 0) - *level = G_RAID_VOLUME_RL_RAID10; - else if (strcasecmp(str, "RAID1E") == 0) + else if (strcasecmp(str, "RAID10") == 0 || + strcasecmp(str, "RAID1E") == 0) *level = G_RAID_VOLUME_RL_RAID1E; else if (strcasecmp(str, "SINGLE") == 0) *level = G_RAID_VOLUME_RL_SINGLE; Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Thu Feb 10 10:51:12 2011 (r218517) +++ projects/graid/head/sys/geom/raid/g_raid.h Thu Feb 10 11:27:31 2011 (r218518) @@ -216,7 +216,6 @@ struct g_raid_subdisk { #define G_RAID_VOLUME_RL_RAID4 0x04 #define G_RAID_VOLUME_RL_RAID5 0x05 #define G_RAID_VOLUME_RL_RAID6 0x06 -#define G_RAID_VOLUME_RL_RAID10 0x0a #define G_RAID_VOLUME_RL_RAID1E 0x11 #define G_RAID_VOLUME_RL_SINGLE 0x0f #define G_RAID_VOLUME_RL_CONCAT 0x1f Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Thu Feb 10 10:51:12 2011 (r218517) +++ projects/graid/head/sys/geom/raid/md_intel.c Thu Feb 10 11:27:31 2011 (r218518) @@ -898,11 +898,20 @@ g_raid_md_intel_start(struct g_raid_soft if (mmap->type == INTEL_T_RAID0) vol->v_raid_level = G_RAID_VOLUME_RL_RAID0; else if (mmap->type == INTEL_T_RAID1 && - mmap->total_disks < 4) /* >= 4 disks -> RAID10 */ - vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; - else if (mmap->type == INTEL_T_RAID1) /* SIC */ - vol->v_raid_level = G_RAID_VOLUME_RL_RAID10; - else if (mmap->type == INTEL_T_RAID5) + mmap->total_domains >= 2 && + mmap->total_domains <= mmap->total_disks) { + /* Assume total_domains is correct. */ + if (mmap->total_domains == mmap->total_disks) + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; + else + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E; + } else if (mmap->type == INTEL_T_RAID1) { + /* total_domains looks wrong. */ + if (mmap->total_disks <= 2) + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; + else + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E; + } else if (mmap->type == INTEL_T_RAID5) vol->v_raid_level = G_RAID_VOLUME_RL_RAID5; else vol->v_raid_level = G_RAID_VOLUME_RL_UNKNOWN; @@ -1353,7 +1362,7 @@ g_raid_md_ctl_intel(struct g_raid_md_obj if (level != G_RAID_VOLUME_RL_RAID0 && level != G_RAID_VOLUME_RL_RAID1 && level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID10) { + level != G_RAID_VOLUME_RL_RAID1E) { gctl_error(req, "Unsupported RAID level."); return (-5); } @@ -1517,8 +1526,10 @@ makedisk: vol->v_mediasize = size; else if (level == G_RAID_VOLUME_RL_RAID5) vol->v_mediasize = size * (numdisks - 1); - else /* RAID10 */ - vol->v_mediasize = size * (numdisks / 2); + else { /* RAID1E */ + vol->v_mediasize = ((size * numdisks) / strip / 2) * + strip; + } vol->v_sectorsize = sectorsize; g_raid_start_volume(vol); @@ -1576,7 +1587,7 @@ makedisk: if (level != G_RAID_VOLUME_RL_RAID0 && level != G_RAID_VOLUME_RL_RAID1 && level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID10) { + level != G_RAID_VOLUME_RL_RAID1E) { gctl_error(req, "Unsupported RAID level."); return (-5); } @@ -1695,8 +1706,10 @@ makedisk: vol->v_mediasize = size; else if (level == G_RAID_VOLUME_RL_RAID5) vol->v_mediasize = size * (numdisks - 1); - else /* RAID10 */ - vol->v_mediasize = size * (numdisks / 2); + else { /* RAID1E */ + vol->v_mediasize = ((size * numdisks) / strip / 2) * + strip; + } vol->v_sectorsize = sectorsize; g_raid_start_volume(vol); @@ -2141,15 +2154,15 @@ g_raid_md_write_intel(struct g_raid_md_o if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID0) mmap0->type = INTEL_T_RAID0; else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 || - vol->v_raid_level == G_RAID_VOLUME_RL_RAID10) + vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E) mmap0->type = INTEL_T_RAID1; else mmap0->type = INTEL_T_RAID5; mmap0->total_disks = vol->v_disks_count; - if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID10) - mmap0->total_domains = vol->v_disks_count / 2; - else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1) + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1) mmap0->total_domains = vol->v_disks_count; + else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E) + mmap0->total_domains = 2; else mmap0->total_domains = 1; mmap0->stripe_count = sd->sd_size / vol->v_strip_size / From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 12:34:28 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2ABB01065675; Thu, 10 Feb 2011 12:34:28 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 181328FC12; Thu, 10 Feb 2011 12:34:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1ACYRvW022199; Thu, 10 Feb 2011 12:34:27 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1ACYRS7022195; Thu, 10 Feb 2011 12:34:27 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102101234.p1ACYRS7022195@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 12:34:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218519 - in projects/graid/head: sbin/geom/class/raid sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 12:34:28 -0000 Author: mav Date: Thu Feb 10 12:34:27 2011 New Revision: 218519 URL: http://svn.freebsd.org/changeset/base/218519 Log: Add checks for number of disks in each configuration, supported by Intel RAID BIOS. Add "-f" flag to `graid label` and `graid add` allowing to bypass these checks. Modified: projects/graid/head/sbin/geom/class/raid/geom_raid.c projects/graid/head/sbin/geom/class/raid/graid.8 projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sbin/geom/class/raid/geom_raid.c ============================================================================== --- projects/graid/head/sbin/geom/class/raid/geom_raid.c Thu Feb 10 11:27:31 2011 (r218518) +++ projects/graid/head/sbin/geom/class/raid/geom_raid.c Thu Feb 10 12:34:27 2011 (r218519) @@ -47,19 +47,21 @@ uint32_t version = G_RAID_VERSION; struct g_command class_commands[] = { { "label", G_FLAG_VERBOSE, NULL, { + { 'f', "force", NULL, G_TYPE_BOOL }, { 'S', "size", G_VAL_OPTIONAL, G_TYPE_NUMBER }, { 's', "strip", G_VAL_OPTIONAL, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - "[-S size] [-s stripsize] format label level prov ..." + "[-fv] [-S size] [-s stripsize] format label level prov ..." }, { "add", G_FLAG_VERBOSE, NULL, { + { 'f', "force", NULL, G_TYPE_BOOL }, { 'S', "size", G_VAL_OPTIONAL, G_TYPE_NUMBER }, { 's', "strip", G_VAL_OPTIONAL, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - "[-S size] [-s stripsize] name label level" + "[-fv] [-S size] [-s stripsize] name label level" }, { "delete", G_FLAG_VERBOSE, NULL, { Modified: projects/graid/head/sbin/geom/class/raid/graid.8 ============================================================================== --- projects/graid/head/sbin/geom/class/raid/graid.8 Thu Feb 10 11:27:31 2011 (r218518) +++ projects/graid/head/sbin/geom/class/raid/graid.8 Thu Feb 10 12:34:27 2011 (r218519) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 5, 2011 +.Dd February 10, 2011 .Dt GRAID 8 .Os .Sh NAME @@ -33,6 +33,7 @@ .Sh SYNOPSIS .Nm .Cm label +.Op Fl f .Op Fl S Ar size .Op Fl s Ar strip .Ar format @@ -41,6 +42,7 @@ .Ar prov ... .Nm .Cm add +.Op Fl f .Op Fl S Ar size .Op Fl s Ar strip .Ar name @@ -114,6 +116,9 @@ and metadata format. .Pp Additional options include: .Bl -tag -width ".Fl s Ar strip" +.It Fl f +Enforce specified configuration creation if it is officially unsupported, +but technically can be created. .It Fl S Ar size Use .Ar size @@ -200,6 +205,8 @@ The format used by Intel RAID BIOS. Supports up to two volumes per array. Supports configurations: RAID0 (2+ disks), RAID1 (2 disks), RAID5 (3+ disks), RAID10 (4 disks). +Configurations not supported by Intel RAID BIOS, but enforsable on your own +risk: RAID1 (3+ disks), RAID1E (3+ disks), RAID10 (6+ disks). .El .Sh SUPPORTED RAID LEVELS The GEOM RAID class follows a modular design, allowing different RAID levels Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Thu Feb 10 11:27:31 2011 (r218518) +++ projects/graid/head/sys/geom/raid/md_intel.c Thu Feb 10 12:34:27 2011 (r218519) @@ -568,6 +568,43 @@ g_raid_md_intel_get_disk(struct g_raid_s return (disk); } +static int +g_raid_md_intel_supported(int level, int qual, int disks, int force) +{ + + switch (level) { + case G_RAID_VOLUME_RL_RAID0: + if (disks < 1) + return (0); + if (!force && (disks < 2 || disks > 6)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID1: + if (disks < 1) + return (0); + if (!force && (disks != 2)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID1E: + if (disks < 3) + return (0); + if (!force && (disks != 4)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID5: + if (disks < 3) + return (0); + if (!force && disks > 6) + return (0); + break; + default: + return (0); + } + if (qual != G_RAID_VOLUME_RLQ_NONE) + return (0); + return (1); +} + static struct g_raid_volume * g_raid_md_intel_get_volume(struct g_raid_softc *sc, int id) { @@ -1359,16 +1396,17 @@ g_raid_md_ctl_intel(struct g_raid_md_obj gctl_error(req, "Unknown RAID level '%s'.", levelname); return (-4); } - if (level != G_RAID_VOLUME_RL_RAID0 && - level != G_RAID_VOLUME_RL_RAID1 && - level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID1E) { - gctl_error(req, "Unsupported RAID level."); + numdisks = *nargs - 3; + force = gctl_get_paraml(req, "force", sizeof(*force)); + if (!g_raid_md_intel_supported(level, qual, numdisks, + force ? *force : 0)) { + gctl_error(req, "Unsupported RAID level " + "(0x%02x/0x%02x), or number of disks (%d).", + level, qual, numdisks); return (-5); } /* Search for disks, connect them and probe. */ - numdisks = *nargs - 3; size = 0x7fffffffffffffffllu; sectorsize = 0; for (i = 0; i < numdisks; i++) { @@ -1584,13 +1622,6 @@ makedisk: gctl_error(req, "Unknown RAID level '%s'.", levelname); return (-4); } - if (level != G_RAID_VOLUME_RL_RAID0 && - level != G_RAID_VOLUME_RL_RAID1 && - level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID1E) { - gctl_error(req, "Unsupported RAID level."); - return (-5); - } /* Look for existing volumes. */ i = 0; @@ -1608,10 +1639,19 @@ makedisk: return (-7); } + numdisks = vol1->v_disks_count; + force = gctl_get_paraml(req, "force", sizeof(*force)); + if (!g_raid_md_intel_supported(level, qual, numdisks, + force ? *force : 0)) { + gctl_error(req, "Unsupported RAID level " + "(0x%02x/0x%02x), or number of disks (%d).", + level, qual, numdisks); + return (-5); + } + /* Collect info about present disks. */ size = 0x7fffffffffffffffllu; sectorsize = 512; - numdisks = vol1->v_disks_count; for (i = 0; i < numdisks; i++) { disk = vol1->v_subdisks[i].sd_disk; pd = (struct g_raid_md_intel_perdisk *) From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 12:47:00 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DEABE106564A; Thu, 10 Feb 2011 12:47:00 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id AB2CB8FC14; Thu, 10 Feb 2011 12:47:00 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 570C746B09; Thu, 10 Feb 2011 07:47:00 -0500 (EST) Received: from jhbbsd.localnet (unknown [209.249.190.10]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 8883E8A02B; Thu, 10 Feb 2011 07:46:59 -0500 (EST) From: John Baldwin To: Jeff Roberson Date: Thu, 10 Feb 2011 07:45:12 -0500 User-Agent: KMail/1.13.5 (FreeBSD/7.4-CBSD-20110107; KDE/4.4.5; amd64; ; ) References: <201102100005.p1A05B8w002402@svn.freebsd.org> In-Reply-To: <201102100005.p1A05B8w002402@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201102100745.12090.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Thu, 10 Feb 2011 07:46:59 -0500 (EST) X-Virus-Scanned: clamav-milter 0.96.3 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=0.5 required=4.2 tests=BAYES_00,MAY_BE_FORGED, RDNS_DYNAMIC autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on bigwig.baldwin.cx Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r218501 - in projects/ofed/head/sys: amd64/conf conf net ofed/drivers/infiniband/ulp/ipoib ofed/drivers/infiniband/ulp/sdp ofed/include/linux X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 12:47:01 -0000 On Wednesday, February 09, 2011 7:05:11 pm Jeff Roberson wrote: > Author: jeff > Date: Thu Feb 10 00:05:11 2011 > New Revision: 218501 > URL: http://svn.freebsd.org/changeset/base/218501 > > Log: > - Change ofed from a device line to an options line in the config so that > we can test for it in the link layer address table to avoid the overhead > when it is not compiled. > - Introduce some more ofed configuration options so you don't have to > manually edit headers to enable debugging etc. > - Fix a bug with ipoib, when cm mode is enabled checksumming doesn't > work on all cards. > - Ignore the linux admin flag for cm enabled, if it's compiled in, use it > when the remote host supports it. > - Support transmitting mbufs with more than one sg entry in ipoib cm. > - Normalize the MTU settings and document whether they include the header > or not in the ipoib.h file where the variables are defined. FYI, if you'd rather keep 'ofed' as a device, there is a "feature" of config(8) that you can declare a 'DEV_' option in sys/conf/options and config(8) will enable that option if 'device foo' is in the kernel config. For example, 'device apic' enables the 'DEV_APIC' option. -- John Baldwin From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 14:29:35 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E458D1065670; Thu, 10 Feb 2011 14:29:34 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D0B7D8FC0A; Thu, 10 Feb 2011 14:29:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1AETYlY024735; Thu, 10 Feb 2011 14:29:34 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1AETYIr024728; Thu, 10 Feb 2011 14:29:34 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102101429.p1AETYIr024728@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 14:29:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218520 - in projects/graid/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib lib/liblzma lib/librtld_db lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/raid s... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 14:29:35 -0000 Author: mav Date: Thu Feb 10 14:29:34 2011 New Revision: 218520 URL: http://svn.freebsd.org/changeset/base/218520 Log: MFH r218470, r218472, r218479, r218480, r218481, r218486, r218491, r218504, r218512, r218514, r218515, r218516, r218518, r218519 Modified: projects/graid/8/sbin/geom/class/raid/geom_raid.c projects/graid/8/sbin/geom/class/raid/graid.8 projects/graid/8/sys/geom/raid/g_raid.c projects/graid/8/sys/geom/raid/g_raid.h projects/graid/8/sys/geom/raid/md_intel.c projects/graid/8/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/8/ (props changed) projects/graid/8/COPYRIGHT (props changed) projects/graid/8/LOCKS (props changed) projects/graid/8/MAINTAINERS (props changed) projects/graid/8/Makefile (props changed) projects/graid/8/Makefile.inc1 (props changed) projects/graid/8/ObsoleteFiles.inc (props changed) projects/graid/8/README (props changed) projects/graid/8/UPDATING (props changed) projects/graid/8/bin/ (props changed) projects/graid/8/bin/chio/ (props changed) projects/graid/8/bin/chmod/ (props changed) projects/graid/8/bin/cp/ (props changed) projects/graid/8/bin/csh/ (props changed) projects/graid/8/bin/date/ (props changed) projects/graid/8/bin/echo/ (props changed) projects/graid/8/bin/expr/ (props changed) projects/graid/8/bin/getfacl/ (props changed) projects/graid/8/bin/kill/ (props changed) projects/graid/8/bin/ln/ (props changed) projects/graid/8/bin/ls/ (props changed) projects/graid/8/bin/mv/ (props changed) projects/graid/8/bin/pax/ (props changed) projects/graid/8/bin/pkill/ (props changed) projects/graid/8/bin/ps/ (props changed) projects/graid/8/bin/pwait/ (props changed) projects/graid/8/bin/setfacl/ (props changed) projects/graid/8/bin/sh/ (props changed) projects/graid/8/bin/sleep/ (props changed) projects/graid/8/bin/test/ (props changed) projects/graid/8/cddl/ (props changed) projects/graid/8/cddl/compat/opensolaris/ (props changed) projects/graid/8/cddl/contrib/opensolaris/ (props changed) projects/graid/8/cddl/lib/ (props changed) projects/graid/8/cddl/lib/libnvpair/ (props changed) projects/graid/8/cddl/lib/libzpool/ (props changed) projects/graid/8/cddl/usr.bin/ (props changed) projects/graid/8/cddl/usr.sbin/ (props changed) projects/graid/8/contrib/ (props changed) projects/graid/8/contrib/amd/ (props changed) projects/graid/8/contrib/bc/ (props changed) projects/graid/8/contrib/bind9/ (props changed) projects/graid/8/contrib/binutils/ (props changed) projects/graid/8/contrib/bsnmp/ (props changed) projects/graid/8/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/8/contrib/bzip2/ (props changed) projects/graid/8/contrib/com_err/ (props changed) projects/graid/8/contrib/csup/ (props changed) projects/graid/8/contrib/cvs/ (props changed) projects/graid/8/contrib/diff/ (props changed) projects/graid/8/contrib/ee/ (props changed) projects/graid/8/contrib/expat/ (props changed) projects/graid/8/contrib/file/ (props changed) projects/graid/8/contrib/gcc/ (props changed) projects/graid/8/contrib/gcclibs/ (props changed) projects/graid/8/contrib/gdb/ (props changed) projects/graid/8/contrib/gdtoa/ (props changed) projects/graid/8/contrib/gnu-sort/ (props changed) projects/graid/8/contrib/gperf/ (props changed) projects/graid/8/contrib/groff/ (props changed) projects/graid/8/contrib/ipfilter/ (props changed) projects/graid/8/contrib/less/ (props changed) projects/graid/8/contrib/libbegemot/ (props changed) projects/graid/8/contrib/libf2c/ (props changed) projects/graid/8/contrib/libobjc/ (props changed) projects/graid/8/contrib/libpcap/ (props changed) projects/graid/8/contrib/libreadline/ (props changed) projects/graid/8/contrib/libstdc++/ (props changed) projects/graid/8/contrib/lukemftp/ (props changed) projects/graid/8/contrib/lukemftpd/ (props changed) projects/graid/8/contrib/ncurses/ (props changed) projects/graid/8/contrib/netcat/ (props changed) projects/graid/8/contrib/ngatm/ (props changed) projects/graid/8/contrib/ntp/ (props changed) projects/graid/8/contrib/nvi/ (props changed) projects/graid/8/contrib/one-true-awk/ (props changed) projects/graid/8/contrib/openbsm/ (props changed) projects/graid/8/contrib/openpam/ (props changed) projects/graid/8/contrib/opie/ (props changed) projects/graid/8/contrib/pam_modules/ (props changed) projects/graid/8/contrib/pf/ (props changed) projects/graid/8/contrib/pnpinfo/ (props changed) projects/graid/8/contrib/sendmail/ (props changed) projects/graid/8/contrib/smbfs/ (props changed) projects/graid/8/contrib/tcp_wrappers/ (props changed) projects/graid/8/contrib/tcpdump/ (props changed) projects/graid/8/contrib/tcsh/ (props changed) projects/graid/8/contrib/telnet/ (props changed) projects/graid/8/contrib/texinfo/ (props changed) projects/graid/8/contrib/top/ (props changed) projects/graid/8/contrib/top/install-sh (props changed) projects/graid/8/contrib/traceroute/ (props changed) projects/graid/8/contrib/wpa/ (props changed) projects/graid/8/contrib/xz/ (props changed) projects/graid/8/contrib/xz/AUTHORS (props changed) projects/graid/8/contrib/xz/COPYING (props changed) projects/graid/8/contrib/xz/ChangeLog (props changed) projects/graid/8/contrib/xz/FREEBSD-Xlist (props changed) projects/graid/8/contrib/xz/FREEBSD-upgrade (props changed) projects/graid/8/contrib/xz/README (props changed) projects/graid/8/contrib/xz/THANKS (props changed) projects/graid/8/contrib/xz/TODO (props changed) projects/graid/8/contrib/xz/po/ (props changed) projects/graid/8/contrib/xz/src/ (props changed) projects/graid/8/crypto/ (props changed) projects/graid/8/crypto/heimdal/ (props changed) projects/graid/8/crypto/openssh/ (props changed) projects/graid/8/crypto/openssl/ (props changed) projects/graid/8/etc/ (props changed) projects/graid/8/games/ (props changed) projects/graid/8/games/factor/ (props changed) projects/graid/8/games/fortune/ (props changed) projects/graid/8/games/grdc/ (props changed) projects/graid/8/games/pom/ (props changed) projects/graid/8/gnu/ (props changed) projects/graid/8/gnu/lib/csu/ (props changed) projects/graid/8/gnu/lib/libgcc/ (props changed) projects/graid/8/gnu/lib/libstdc++/ (props changed) projects/graid/8/gnu/usr.bin/ (props changed) projects/graid/8/gnu/usr.bin/Makefile (props changed) projects/graid/8/gnu/usr.bin/dialog/ (props changed) projects/graid/8/gnu/usr.bin/gdb/ (props changed) projects/graid/8/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/8/gnu/usr.bin/groff/ (props changed) projects/graid/8/gnu/usr.bin/patch/ (props changed) projects/graid/8/include/ (props changed) projects/graid/8/kerberos5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_krb5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_spnego/ (props changed) projects/graid/8/kerberos5/usr.bin/kdestroy/ (props changed) projects/graid/8/kerberos5/usr.bin/kpasswd/ (props changed) projects/graid/8/lib/ (props changed) projects/graid/8/lib/Makefile (props changed) projects/graid/8/lib/Makefile.inc (props changed) projects/graid/8/lib/bind/ (props changed) projects/graid/8/lib/csu/ (props changed) projects/graid/8/lib/libalias/ (props changed) projects/graid/8/lib/libarchive/ (props changed) projects/graid/8/lib/libauditd/ (props changed) projects/graid/8/lib/libautofs/ (props changed) projects/graid/8/lib/libbegemot/ (props changed) projects/graid/8/lib/libbluetooth/ (props changed) projects/graid/8/lib/libbsm/ (props changed) projects/graid/8/lib/libbsnmp/ (props changed) projects/graid/8/lib/libbz2/ (props changed) projects/graid/8/lib/libc/ (props changed) projects/graid/8/lib/libc/stdtime/ (props changed) projects/graid/8/lib/libc_r/ (props changed) projects/graid/8/lib/libcalendar/ (props changed) projects/graid/8/lib/libcam/ (props changed) projects/graid/8/lib/libcom_err/ (props changed) projects/graid/8/lib/libcompat/ (props changed) projects/graid/8/lib/libcrypt/ (props changed) projects/graid/8/lib/libdevinfo/ (props changed) projects/graid/8/lib/libdevstat/ (props changed) projects/graid/8/lib/libdisk/ (props changed) projects/graid/8/lib/libdwarf/ (props changed) projects/graid/8/lib/libedit/ (props changed) projects/graid/8/lib/libelf/ (props changed) projects/graid/8/lib/libexpat/ (props changed) projects/graid/8/lib/libfetch/ (props changed) projects/graid/8/lib/libftpio/ (props changed) projects/graid/8/lib/libgeom/ (props changed) projects/graid/8/lib/libgpib/ (props changed) projects/graid/8/lib/libgssapi/ (props changed) projects/graid/8/lib/libipsec/ (props changed) projects/graid/8/lib/libipx/ (props changed) projects/graid/8/lib/libjail/ (props changed) projects/graid/8/lib/libkiconv/ (props changed) projects/graid/8/lib/libkse/ (props changed) projects/graid/8/lib/libkvm/ (props changed) projects/graid/8/lib/liblzma/ (props changed) projects/graid/8/lib/liblzma/Makefile (props changed) projects/graid/8/lib/liblzma/Symbol.map (props changed) projects/graid/8/lib/liblzma/Versions.def (props changed) projects/graid/8/lib/liblzma/config.h (props changed) projects/graid/8/lib/libmagic/ (props changed) projects/graid/8/lib/libmd/ (props changed) projects/graid/8/lib/libmemstat/ (props changed) projects/graid/8/lib/libmilter/ (props changed) projects/graid/8/lib/libmp/ (props changed) projects/graid/8/lib/libncp/ (props changed) projects/graid/8/lib/libnetgraph/ (props changed) projects/graid/8/lib/libngatm/ (props changed) projects/graid/8/lib/libopie/ (props changed) projects/graid/8/lib/libpam/ (props changed) projects/graid/8/lib/libpcap/ (props changed) projects/graid/8/lib/libpmc/ (props changed) projects/graid/8/lib/libproc/ (props changed) projects/graid/8/lib/libradius/ (props changed) projects/graid/8/lib/librpcsec_gss/ (props changed) projects/graid/8/lib/librpcsvc/ (props changed) projects/graid/8/lib/librt/ (props changed) projects/graid/8/lib/librtld_db/ (props changed) projects/graid/8/lib/librtld_db/Makefile (props changed) projects/graid/8/lib/librtld_db/librtld_db.3 (props changed) projects/graid/8/lib/librtld_db/rtld_db.c (props changed) projects/graid/8/lib/librtld_db/rtld_db.h (props changed) projects/graid/8/lib/libsbuf/ (props changed) projects/graid/8/lib/libsdp/ (props changed) projects/graid/8/lib/libsm/ (props changed) projects/graid/8/lib/libsmb/ (props changed) projects/graid/8/lib/libsmdb/ (props changed) projects/graid/8/lib/libsmutil/ (props changed) projects/graid/8/lib/libstand/ (props changed) projects/graid/8/lib/libtacplus/ (props changed) projects/graid/8/lib/libtelnet/ (props changed) projects/graid/8/lib/libthr/ (props changed) projects/graid/8/lib/libthread_db/ (props changed) projects/graid/8/lib/libufs/ (props changed) projects/graid/8/lib/libugidfw/ (props changed) projects/graid/8/lib/libusb/ (props changed) projects/graid/8/lib/libusb/usb.h (props changed) projects/graid/8/lib/libusbhid/ (props changed) projects/graid/8/lib/libutil/ (props changed) projects/graid/8/lib/libvgl/ (props changed) projects/graid/8/lib/libwrap/ (props changed) projects/graid/8/lib/liby/ (props changed) projects/graid/8/lib/libypclnt/ (props changed) projects/graid/8/lib/libz/ (props changed) projects/graid/8/lib/libz/contrib/ (props changed) projects/graid/8/lib/msun/ (props changed) projects/graid/8/lib/ncurses/ (props changed) projects/graid/8/libexec/ (props changed) projects/graid/8/libexec/ftpd/ (props changed) projects/graid/8/libexec/rtld-elf/ (props changed) projects/graid/8/libexec/tftpd/ (props changed) projects/graid/8/release/ (props changed) projects/graid/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/8/release/picobsd/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed) projects/graid/8/release/picobsd/qemu/ (props changed) projects/graid/8/release/picobsd/tinyware/login/ (props changed) projects/graid/8/release/powerpc/ (props changed) projects/graid/8/rescue/ (props changed) projects/graid/8/sbin/ (props changed) projects/graid/8/sbin/atacontrol/ (props changed) projects/graid/8/sbin/bsdlabel/ (props changed) projects/graid/8/sbin/camcontrol/ (props changed) projects/graid/8/sbin/ddb/ (props changed) projects/graid/8/sbin/devd/ (props changed) projects/graid/8/sbin/devfs/ (props changed) projects/graid/8/sbin/dhclient/ (props changed) projects/graid/8/sbin/dump/ (props changed) projects/graid/8/sbin/dumpfs/ (props changed) projects/graid/8/sbin/fdisk/ (props changed) projects/graid/8/sbin/fsck/ (props changed) projects/graid/8/sbin/fsck_ffs/ (props changed) projects/graid/8/sbin/fsck_msdosfs/ (props changed) projects/graid/8/sbin/fsirand/ (props changed) projects/graid/8/sbin/geom/ (props changed) projects/graid/8/sbin/geom/class/multipath/ (props changed) projects/graid/8/sbin/geom/class/part/ (props changed) projects/graid/8/sbin/geom/class/sched/gsched.8 (props changed) projects/graid/8/sbin/geom/class/stripe/ (props changed) projects/graid/8/sbin/ggate/ (props changed) projects/graid/8/sbin/growfs/ (props changed) projects/graid/8/sbin/hastctl/ (props changed) projects/graid/8/sbin/hastd/ (props changed) projects/graid/8/sbin/ifconfig/ (props changed) projects/graid/8/sbin/ipfw/ (props changed) projects/graid/8/sbin/iscontrol/ (props changed) projects/graid/8/sbin/kldload/ (props changed) projects/graid/8/sbin/kldstat/ (props changed) projects/graid/8/sbin/mdconfig/ (props changed) projects/graid/8/sbin/mksnap_ffs/ (props changed) projects/graid/8/sbin/mount/ (props changed) projects/graid/8/sbin/mount_cd9660/ (props changed) projects/graid/8/sbin/mount_msdosfs/ (props changed) projects/graid/8/sbin/mount_nfs/ (props changed) projects/graid/8/sbin/natd/ (props changed) projects/graid/8/sbin/newfs/ (props changed) projects/graid/8/sbin/newfs_msdos/ (props changed) projects/graid/8/sbin/ping6/ (props changed) projects/graid/8/sbin/reboot/ (props changed) projects/graid/8/sbin/restore/ (props changed) projects/graid/8/sbin/route/ (props changed) projects/graid/8/sbin/routed/ (props changed) projects/graid/8/sbin/setkey/ (props changed) projects/graid/8/sbin/spppcontrol/ (props changed) projects/graid/8/sbin/sysctl/ (props changed) projects/graid/8/sbin/tunefs/ (props changed) projects/graid/8/sbin/umount/ (props changed) projects/graid/8/secure/ (props changed) projects/graid/8/secure/lib/libcrypto/ (props changed) projects/graid/8/secure/lib/libssl/ (props changed) projects/graid/8/secure/usr.bin/bdes/ (props changed) projects/graid/8/secure/usr.bin/openssl/ (props changed) projects/graid/8/share/ (props changed) projects/graid/8/share/dict/ (props changed) projects/graid/8/share/doc/papers/jail/ (props changed) projects/graid/8/share/doc/smm/01.setup/ (props changed) projects/graid/8/share/examples/ (props changed) projects/graid/8/share/examples/etc/ (props changed) projects/graid/8/share/examples/kld/syscall/ (props changed) projects/graid/8/share/man/ (props changed) projects/graid/8/share/man/man1/ (props changed) projects/graid/8/share/man/man3/ (props changed) projects/graid/8/share/man/man4/ (props changed) projects/graid/8/share/man/man5/ (props changed) projects/graid/8/share/man/man7/ (props changed) projects/graid/8/share/man/man8/ (props changed) projects/graid/8/share/man/man9/ (props changed) projects/graid/8/share/misc/ (props changed) projects/graid/8/share/mk/ (props changed) projects/graid/8/share/syscons/ (props changed) projects/graid/8/share/termcap/ (props changed) projects/graid/8/share/timedef/ (props changed) projects/graid/8/share/zoneinfo/ (props changed) projects/graid/8/sys/ (props changed) projects/graid/8/sys/amd64/include/xen/ (props changed) projects/graid/8/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/8/sys/contrib/dev/acpica/ (props changed) projects/graid/8/sys/contrib/pf/ (props changed) projects/graid/8/tools/ (props changed) projects/graid/8/tools/build/mk/ (props changed) projects/graid/8/tools/build/options/ (props changed) projects/graid/8/tools/debugscripts/ (props changed) projects/graid/8/tools/kerneldoc/subsys/ (props changed) projects/graid/8/tools/regression/acct/ (props changed) projects/graid/8/tools/regression/acltools/ (props changed) projects/graid/8/tools/regression/aio/aiotest/ (props changed) projects/graid/8/tools/regression/bin/ (props changed) projects/graid/8/tools/regression/bin/date/ (props changed) projects/graid/8/tools/regression/bin/sh/ (props changed) projects/graid/8/tools/regression/fifo/ (props changed) projects/graid/8/tools/regression/geom/ (props changed) projects/graid/8/tools/regression/lib/libc/ (props changed) projects/graid/8/tools/regression/lib/msun/test-conj.t (props changed) projects/graid/8/tools/regression/mqueue/mqtest1/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest2/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest3/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest4/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest5/ (props changed) projects/graid/8/tools/regression/netinet/ (props changed) projects/graid/8/tools/regression/poll/ (props changed) projects/graid/8/tools/regression/posixsem/ (props changed) projects/graid/8/tools/regression/priv/ (props changed) projects/graid/8/tools/regression/sockets/unix_gc/ (props changed) projects/graid/8/tools/regression/usr.bin/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/sed/ (props changed) projects/graid/8/tools/regression/usr.bin/tr/ (props changed) projects/graid/8/tools/test/ (props changed) projects/graid/8/tools/tools/ (props changed) projects/graid/8/tools/tools/ath/ (props changed) projects/graid/8/tools/tools/ath/common/dumpregs.h (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/graid/8/tools/tools/mctest/ (props changed) projects/graid/8/tools/tools/nanobsd/ (props changed) projects/graid/8/tools/tools/netrate/ (props changed) projects/graid/8/tools/tools/netrate/tcpp/ (props changed) projects/graid/8/tools/tools/termcap/termcap.pl (props changed) projects/graid/8/tools/tools/umastat/ (props changed) projects/graid/8/tools/tools/vimage/ (props changed) projects/graid/8/usr.bin/ (props changed) projects/graid/8/usr.bin/apply/ (props changed) projects/graid/8/usr.bin/ar/ (props changed) projects/graid/8/usr.bin/awk/ (props changed) projects/graid/8/usr.bin/biff/ (props changed) projects/graid/8/usr.bin/c89/ (props changed) projects/graid/8/usr.bin/c99/ (props changed) projects/graid/8/usr.bin/calendar/ (props changed) projects/graid/8/usr.bin/catman/ (props changed) projects/graid/8/usr.bin/chpass/Makefile (props changed) projects/graid/8/usr.bin/column/ (props changed) projects/graid/8/usr.bin/comm/ (props changed) projects/graid/8/usr.bin/cpio/ (props changed) projects/graid/8/usr.bin/csup/ (props changed) projects/graid/8/usr.bin/du/ (props changed) projects/graid/8/usr.bin/ee/ (props changed) projects/graid/8/usr.bin/enigma/ (props changed) projects/graid/8/usr.bin/fetch/ (props changed) projects/graid/8/usr.bin/find/ (props changed) projects/graid/8/usr.bin/finger/ (props changed) projects/graid/8/usr.bin/fold/ (props changed) projects/graid/8/usr.bin/fstat/ (props changed) projects/graid/8/usr.bin/gcore/ (props changed) projects/graid/8/usr.bin/getopt/ (props changed) projects/graid/8/usr.bin/gzip/ (props changed) projects/graid/8/usr.bin/hexdump/ (props changed) projects/graid/8/usr.bin/indent/ (props changed) projects/graid/8/usr.bin/jot/ (props changed) projects/graid/8/usr.bin/kdump/ (props changed) projects/graid/8/usr.bin/killall/ (props changed) projects/graid/8/usr.bin/ktrace/ (props changed) projects/graid/8/usr.bin/ldd/ (props changed) projects/graid/8/usr.bin/lex/ (props changed) projects/graid/8/usr.bin/locale/ (props changed) projects/graid/8/usr.bin/locate/ (props changed) projects/graid/8/usr.bin/lockf/ (props changed) projects/graid/8/usr.bin/look/ (props changed) projects/graid/8/usr.bin/mail/ (props changed) projects/graid/8/usr.bin/make/ (props changed) projects/graid/8/usr.bin/makewhatis/ (props changed) projects/graid/8/usr.bin/minigzip/ (props changed) projects/graid/8/usr.bin/ncal/ (props changed) projects/graid/8/usr.bin/netstat/ (props changed) projects/graid/8/usr.bin/pathchk/ (props changed) projects/graid/8/usr.bin/perror/ (props changed) projects/graid/8/usr.bin/procstat/ (props changed) projects/graid/8/usr.bin/rpcgen/ (props changed) projects/graid/8/usr.bin/ruptime/ (props changed) projects/graid/8/usr.bin/script/ (props changed) projects/graid/8/usr.bin/sed/ (props changed) projects/graid/8/usr.bin/sockstat/ (props changed) projects/graid/8/usr.bin/split/ (props changed) projects/graid/8/usr.bin/stat/ (props changed) projects/graid/8/usr.bin/systat/ (props changed) projects/graid/8/usr.bin/tar/ (props changed) projects/graid/8/usr.bin/tftp/ (props changed) projects/graid/8/usr.bin/top/ (props changed) projects/graid/8/usr.bin/touch/ (props changed) projects/graid/8/usr.bin/tr/ (props changed) projects/graid/8/usr.bin/truss/ (props changed) projects/graid/8/usr.bin/uname/ (props changed) projects/graid/8/usr.bin/unifdef/ (props changed) projects/graid/8/usr.bin/uniq/ (props changed) projects/graid/8/usr.bin/unzip/ (props changed) projects/graid/8/usr.bin/uudecode/ (props changed) projects/graid/8/usr.bin/vmstat/ (props changed) projects/graid/8/usr.bin/w/ (props changed) projects/graid/8/usr.bin/whois/ (props changed) projects/graid/8/usr.bin/xinstall/ (props changed) projects/graid/8/usr.bin/xlint/ (props changed) projects/graid/8/usr.bin/xz/ (props changed) projects/graid/8/usr.bin/yacc/ (props changed) projects/graid/8/usr.sbin/ (props changed) projects/graid/8/usr.sbin/IPXrouted/ (props changed) projects/graid/8/usr.sbin/Makefile (props changed) projects/graid/8/usr.sbin/Makefile.inc (props changed) projects/graid/8/usr.sbin/ac/ (props changed) projects/graid/8/usr.sbin/accton/ (props changed) projects/graid/8/usr.sbin/acpi/ (props changed) projects/graid/8/usr.sbin/adduser/ (props changed) projects/graid/8/usr.sbin/amd/ (props changed) projects/graid/8/usr.sbin/ancontrol/ (props changed) projects/graid/8/usr.sbin/apm/ (props changed) projects/graid/8/usr.sbin/apmd/ (props changed) projects/graid/8/usr.sbin/arp/ (props changed) projects/graid/8/usr.sbin/asf/ (props changed) projects/graid/8/usr.sbin/audit/ (props changed) projects/graid/8/usr.sbin/auditd/ (props changed) projects/graid/8/usr.sbin/auditreduce/ (props changed) projects/graid/8/usr.sbin/authpf/ (props changed) projects/graid/8/usr.sbin/bluetooth/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidcontrol/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidd/ (props changed) projects/graid/8/usr.sbin/boot0cfg/ (props changed) projects/graid/8/usr.sbin/boot98cfg/ (props changed) projects/graid/8/usr.sbin/bootparamd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/8/usr.sbin/btxld/ (props changed) projects/graid/8/usr.sbin/burncd/ (props changed) projects/graid/8/usr.sbin/cdcontrol/ (props changed) projects/graid/8/usr.sbin/chkgrp/ (props changed) projects/graid/8/usr.sbin/chown/ (props changed) projects/graid/8/usr.sbin/chroot/ (props changed) projects/graid/8/usr.sbin/ckdist/ (props changed) projects/graid/8/usr.sbin/clear_locks/ (props changed) projects/graid/8/usr.sbin/config/ (props changed) projects/graid/8/usr.sbin/config/SMM.doc/ (props changed) projects/graid/8/usr.sbin/cpucontrol/ (props changed) projects/graid/8/usr.sbin/crashinfo/ (props changed) projects/graid/8/usr.sbin/cron/ (props changed) projects/graid/8/usr.sbin/crunch/ (props changed) projects/graid/8/usr.sbin/crunch/examples/ (props changed) projects/graid/8/usr.sbin/ctm/ (props changed) projects/graid/8/usr.sbin/cxgbtool/ (props changed) projects/graid/8/usr.sbin/daemon/ (props changed) projects/graid/8/usr.sbin/dconschat/ (props changed) projects/graid/8/usr.sbin/devinfo/ (props changed) projects/graid/8/usr.sbin/digictl/ (props changed) projects/graid/8/usr.sbin/diskinfo/ (props changed) projects/graid/8/usr.sbin/dnssec-dsfromkey/ (props changed) projects/graid/8/usr.sbin/dnssec-keyfromlabel/ (props changed) projects/graid/8/usr.sbin/dnssec-keygen/ (props changed) projects/graid/8/usr.sbin/dnssec-signzone/ (props changed) projects/graid/8/usr.sbin/dumpcis/ (props changed) projects/graid/8/usr.sbin/dumpcis/cardinfo.h (props changed) projects/graid/8/usr.sbin/dumpcis/cis.h (props changed) projects/graid/8/usr.sbin/editmap/ (props changed) projects/graid/8/usr.sbin/edquota/ (props changed) projects/graid/8/usr.sbin/eeprom/ (props changed) projects/graid/8/usr.sbin/extattr/ (props changed) projects/graid/8/usr.sbin/extattrctl/ (props changed) projects/graid/8/usr.sbin/faithd/ (props changed) projects/graid/8/usr.sbin/fdcontrol/ (props changed) projects/graid/8/usr.sbin/fdformat/ (props changed) projects/graid/8/usr.sbin/fdread/ (props changed) projects/graid/8/usr.sbin/fdwrite/ (props changed) projects/graid/8/usr.sbin/fifolog/ (props changed) projects/graid/8/usr.sbin/flowctl/ (props changed) projects/graid/8/usr.sbin/freebsd-update/ (props changed) projects/graid/8/usr.sbin/ftp-proxy/ (props changed) projects/graid/8/usr.sbin/fwcontrol/ (props changed) projects/graid/8/usr.sbin/getfmac/ (props changed) projects/graid/8/usr.sbin/getpmac/ (props changed) projects/graid/8/usr.sbin/gssd/ (props changed) projects/graid/8/usr.sbin/gstat/ (props changed) projects/graid/8/usr.sbin/i2c/ (props changed) projects/graid/8/usr.sbin/ifmcstat/ (props changed) projects/graid/8/usr.sbin/inetd/ (props changed) projects/graid/8/usr.sbin/iostat/ (props changed) projects/graid/8/usr.sbin/ip6addrctl/ (props changed) projects/graid/8/usr.sbin/ipfwpcap/ (props changed) projects/graid/8/usr.sbin/jail/ (props changed) projects/graid/8/usr.sbin/jexec/ (props changed) projects/graid/8/usr.sbin/jls/ (props changed) projects/graid/8/usr.sbin/kbdcontrol/ (props changed) projects/graid/8/usr.sbin/kbdmap/ (props changed) projects/graid/8/usr.sbin/kernbb/ (props changed) projects/graid/8/usr.sbin/keyserv/ (props changed) projects/graid/8/usr.sbin/kgmon/ (props changed) projects/graid/8/usr.sbin/kgzip/ (props changed) projects/graid/8/usr.sbin/kldxref/ (props changed) projects/graid/8/usr.sbin/lastlogin/ (props changed) projects/graid/8/usr.sbin/lmcconfig/ (props changed) projects/graid/8/usr.sbin/lpr/ (props changed) projects/graid/8/usr.sbin/lptcontrol/ (props changed) projects/graid/8/usr.sbin/mailstats/ (props changed) projects/graid/8/usr.sbin/mailwrapper/ (props changed) projects/graid/8/usr.sbin/makefs/ (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/8/usr.sbin/makefs/getid.c (props changed) projects/graid/8/usr.sbin/makemap/ (props changed) projects/graid/8/usr.sbin/manctl/ (props changed) projects/graid/8/usr.sbin/memcontrol/ (props changed) projects/graid/8/usr.sbin/mergemaster/ (props changed) projects/graid/8/usr.sbin/mfiutil/ (props changed) projects/graid/8/usr.sbin/mixer/ (props changed) projects/graid/8/usr.sbin/mld6query/ (props changed) projects/graid/8/usr.sbin/mlxcontrol/ (props changed) projects/graid/8/usr.sbin/mount_nwfs/ (props changed) projects/graid/8/usr.sbin/mount_portalfs/ (props changed) projects/graid/8/usr.sbin/mount_smbfs/ (props changed) projects/graid/8/usr.sbin/mountd/ (props changed) projects/graid/8/usr.sbin/moused/ (props changed) projects/graid/8/usr.sbin/mptable/ (props changed) projects/graid/8/usr.sbin/mptutil/ (props changed) projects/graid/8/usr.sbin/mtest/ (props changed) projects/graid/8/usr.sbin/mtree/ (props changed) projects/graid/8/usr.sbin/named/ (props changed) projects/graid/8/usr.sbin/named-checkconf/ (props changed) projects/graid/8/usr.sbin/named-checkzone/ (props changed) projects/graid/8/usr.sbin/named.reload/ (props changed) projects/graid/8/usr.sbin/ndiscvt/ (props changed) projects/graid/8/usr.sbin/ndp/ (props changed) projects/graid/8/usr.sbin/newsyslog/ (props changed) projects/graid/8/usr.sbin/nfscbd/ (props changed) projects/graid/8/usr.sbin/nfsd/ (props changed) projects/graid/8/usr.sbin/nfsdumpstate/ (props changed) projects/graid/8/usr.sbin/nfsrevoke/ (props changed) projects/graid/8/usr.sbin/nfsuserd/ (props changed) projects/graid/8/usr.sbin/ngctl/ (props changed) projects/graid/8/usr.sbin/nghook/ (props changed) projects/graid/8/usr.sbin/nologin/ (props changed) projects/graid/8/usr.sbin/nscd/ (props changed) projects/graid/8/usr.sbin/ntp/ (props changed) projects/graid/8/usr.sbin/nvram/ (props changed) projects/graid/8/usr.sbin/ofwdump/ (props changed) projects/graid/8/usr.sbin/pciconf/ (props changed) projects/graid/8/usr.sbin/periodic/ (props changed) projects/graid/8/usr.sbin/pkg_install/ (props changed) projects/graid/8/usr.sbin/pmcannotate/ (props changed) projects/graid/8/usr.sbin/pmccontrol/ (props changed) projects/graid/8/usr.sbin/pmcstat/ (props changed) projects/graid/8/usr.sbin/pnpinfo/ (props changed) projects/graid/8/usr.sbin/portsnap/ (props changed) projects/graid/8/usr.sbin/powerd/ (props changed) projects/graid/8/usr.sbin/ppp/ (props changed) projects/graid/8/usr.sbin/pppctl/ (props changed) projects/graid/8/usr.sbin/praliases/ (props changed) projects/graid/8/usr.sbin/praudit/ (props changed) projects/graid/8/usr.sbin/procctl/ (props changed) projects/graid/8/usr.sbin/pstat/ (props changed) projects/graid/8/usr.sbin/pw/ (props changed) projects/graid/8/usr.sbin/pwd_mkdb/ (props changed) projects/graid/8/usr.sbin/quot/ (props changed) projects/graid/8/usr.sbin/quotaon/ (props changed) projects/graid/8/usr.sbin/rarpd/ (props changed) projects/graid/8/usr.sbin/repquota/ (props changed) projects/graid/8/usr.sbin/rip6query/ (props changed) projects/graid/8/usr.sbin/rmt/ (props changed) projects/graid/8/usr.sbin/rndc/ (props changed) projects/graid/8/usr.sbin/rndc-confgen/ (props changed) projects/graid/8/usr.sbin/route6d/ (props changed) projects/graid/8/usr.sbin/rpc.lockd/ (props changed) projects/graid/8/usr.sbin/rpc.statd/ (props changed) projects/graid/8/usr.sbin/rpc.umntall/ (props changed) projects/graid/8/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/8/usr.sbin/rpc.ypupdated/ (props changed) projects/graid/8/usr.sbin/rpc.ypxfrd/ (props changed) projects/graid/8/usr.sbin/rpcbind/ (props changed) projects/graid/8/usr.sbin/rrenumd/ (props changed) projects/graid/8/usr.sbin/rtadvd/ (props changed) projects/graid/8/usr.sbin/rtprio/ (props changed) projects/graid/8/usr.sbin/rtsold/ (props changed) projects/graid/8/usr.sbin/rwhod/ (props changed) projects/graid/8/usr.sbin/sa/ (props changed) projects/graid/8/usr.sbin/sade/ (props changed) projects/graid/8/usr.sbin/sendmail/ (props changed) projects/graid/8/usr.sbin/service/ (props changed) projects/graid/8/usr.sbin/service/Makefile (props changed) projects/graid/8/usr.sbin/service/service.8 (props changed) projects/graid/8/usr.sbin/service/service.sh (props changed) projects/graid/8/usr.sbin/services_mkdb/ (props changed) projects/graid/8/usr.sbin/services_mkdb/Makefile (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.8 (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.c (props changed) projects/graid/8/usr.sbin/services_mkdb/uniq.c (props changed) projects/graid/8/usr.sbin/setfib/ (props changed) projects/graid/8/usr.sbin/setfmac/ (props changed) projects/graid/8/usr.sbin/setpmac/ (props changed) projects/graid/8/usr.sbin/sicontrol/ (props changed) projects/graid/8/usr.sbin/smbmsg/ (props changed) projects/graid/8/usr.sbin/snapinfo/ (props changed) projects/graid/8/usr.sbin/spkrtest/ (props changed) projects/graid/8/usr.sbin/spray/ (props changed) projects/graid/8/usr.sbin/sysinstall/ (props changed) projects/graid/8/usr.sbin/syslogd/ (props changed) projects/graid/8/usr.sbin/tcpdchk/ (props changed) projects/graid/8/usr.sbin/tcpdmatch/ (props changed) projects/graid/8/usr.sbin/tcpdrop/ (props changed) projects/graid/8/usr.sbin/tcpdump/ (props changed) projects/graid/8/usr.sbin/timed/ (props changed) projects/graid/8/usr.sbin/traceroute/ (props changed) projects/graid/8/usr.sbin/traceroute6/ (props changed) projects/graid/8/usr.sbin/trpt/ (props changed) projects/graid/8/usr.sbin/tzsetup/ (props changed) projects/graid/8/usr.sbin/uathload/ (props changed) projects/graid/8/usr.sbin/ugidfw/ (props changed) projects/graid/8/usr.sbin/uhsoctl/ (props changed) projects/graid/8/usr.sbin/usbconfig/ (props changed) projects/graid/8/usr.sbin/usbdevs/ (props changed) projects/graid/8/usr.sbin/vidcontrol/ (props changed) projects/graid/8/usr.sbin/vipw/ (props changed) projects/graid/8/usr.sbin/wake/ (props changed) projects/graid/8/usr.sbin/watch/ (props changed) projects/graid/8/usr.sbin/watchdogd/ (props changed) projects/graid/8/usr.sbin/wlandebug/ (props changed) projects/graid/8/usr.sbin/wlconfig/ (props changed) projects/graid/8/usr.sbin/wpa/ (props changed) projects/graid/8/usr.sbin/yp_mkdb/ (props changed) projects/graid/8/usr.sbin/ypbind/ (props changed) projects/graid/8/usr.sbin/yppoll/ (props changed) projects/graid/8/usr.sbin/yppush/ (props changed) projects/graid/8/usr.sbin/ypserv/ (props changed) projects/graid/8/usr.sbin/ypset/ (props changed) projects/graid/8/usr.sbin/zic/ (props changed) projects/graid/8/usr.sbin/zzz/ (props changed) Modified: projects/graid/8/sbin/geom/class/raid/geom_raid.c ============================================================================== --- projects/graid/8/sbin/geom/class/raid/geom_raid.c Thu Feb 10 12:34:27 2011 (r218519) +++ projects/graid/8/sbin/geom/class/raid/geom_raid.c Thu Feb 10 14:29:34 2011 (r218520) @@ -47,19 +47,21 @@ uint32_t version = G_RAID_VERSION; struct g_command class_commands[] = { { "label", G_FLAG_VERBOSE, NULL, { + { 'f', "force", NULL, G_TYPE_BOOL }, { 'S', "size", G_VAL_OPTIONAL, G_TYPE_NUMBER }, { 's', "strip", G_VAL_OPTIONAL, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - NULL, "[-S size] [-s stripsize] format label level prov ..." + NULL, "[-fv] [-S size] [-s stripsize] format label level prov ..." }, { "add", G_FLAG_VERBOSE, NULL, { + { 'f', "force", NULL, G_TYPE_BOOL }, { 'S', "size", G_VAL_OPTIONAL, G_TYPE_NUMBER }, { 's', "strip", G_VAL_OPTIONAL, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - NULL, "[-S size] [-s stripsize] name label level" + NULL, "[-fv] [-S size] [-s stripsize] name label level" }, { "delete", G_FLAG_VERBOSE, NULL, { Modified: projects/graid/8/sbin/geom/class/raid/graid.8 ============================================================================== --- projects/graid/8/sbin/geom/class/raid/graid.8 Thu Feb 10 12:34:27 2011 (r218519) +++ projects/graid/8/sbin/geom/class/raid/graid.8 Thu Feb 10 14:29:34 2011 (r218520) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 5, 2011 +.Dd February 10, 2011 .Dt GRAID 8 .Os .Sh NAME @@ -33,6 +33,7 @@ .Sh SYNOPSIS .Nm .Cm label +.Op Fl f .Op Fl S Ar size .Op Fl s Ar strip .Ar format @@ -41,6 +42,7 @@ .Ar prov ... .Nm .Cm add +.Op Fl f .Op Fl S Ar size .Op Fl s Ar strip .Ar name @@ -114,6 +116,9 @@ and metadata format. .Pp Additional options include: .Bl -tag -width ".Fl s Ar strip" +.It Fl f +Enforce specified configuration creation if it is officially unsupported, +but technically can be created. .It Fl S Ar size Use .Ar size @@ -200,6 +205,8 @@ The format used by Intel RAID BIOS. Supports up to two volumes per array. Supports configurations: RAID0 (2+ disks), RAID1 (2 disks), RAID5 (3+ disks), RAID10 (4 disks). +Configurations not supported by Intel RAID BIOS, but enforsable on your own +risk: RAID1 (3+ disks), RAID1E (3+ disks), RAID10 (6+ disks). .El .Sh SUPPORTED RAID LEVELS The GEOM RAID class follows a modular design, allowing different RAID levels Modified: projects/graid/8/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.c Thu Feb 10 12:34:27 2011 (r218519) +++ projects/graid/8/sys/geom/raid/g_raid.c Thu Feb 10 14:29:34 2011 (r218520) @@ -275,8 +275,6 @@ g_raid_volume_level2str(int level, int q return ("RAID5"); case G_RAID_VOLUME_RL_RAID6: return ("RAID6"); - case G_RAID_VOLUME_RL_RAID10: - return ("RAID10"); case G_RAID_VOLUME_RL_RAID1E: return ("RAID1E"); case G_RAID_VOLUME_RL_SINGLE: @@ -310,9 +308,8 @@ g_raid_volume_str2level(const char *str, *level = G_RAID_VOLUME_RL_RAID5; else if (strcasecmp(str, "RAID6") == 0) *level = G_RAID_VOLUME_RL_RAID6; - else if (strcasecmp(str, "RAID10") == 0) - *level = G_RAID_VOLUME_RL_RAID10; - else if (strcasecmp(str, "RAID1E") == 0) + else if (strcasecmp(str, "RAID10") == 0 || + strcasecmp(str, "RAID1E") == 0) *level = G_RAID_VOLUME_RL_RAID1E; else if (strcasecmp(str, "SINGLE") == 0) *level = G_RAID_VOLUME_RL_SINGLE; @@ -910,6 +907,7 @@ g_raid_start_request(struct bio *bp) sc = bp->bio_to->geom->softc; sx_assert(&sc->sc_lock, SX_LOCKED); vol = bp->bio_to->private; + /* * Check to see if this item is in a locked range. If so, * queue it to our locked queue and return. We'll requeue @@ -1073,7 +1071,7 @@ void g_raid_subdisk_iostart(struct g_raid_subdisk *sd, struct bio *bp) { struct g_consumer *cp; - struct g_raid_disk *disk; + struct g_raid_disk *disk, *tdisk; bp->bio_caller1 = sd; @@ -1103,6 +1101,17 @@ nodisk: bp->bio_from = cp; bp->bio_to = cp->provider; cp->index++; + + /* Update average disks load. */ + TAILQ_FOREACH(tdisk, &sd->sd_softc->sc_disks, d_next) { + if (tdisk->d_consumer == NULL) + tdisk->d_load = 0; + else + tdisk->d_load = (tdisk->d_consumer->index * + G_RAID_SUBDISK_LOAD_SCALE + tdisk->d_load * 7) / 8; + } + + disk->d_last_offset = bp->bio_offset + bp->bio_length; if (dumping) { G_RAID_LOGREQ(3, bp, "Sending dumping request."); if (bp->bio_cmd == BIO_WRITE) { @@ -1309,10 +1318,11 @@ out: static void g_raid_launch_provider(struct g_raid_volume *vol) { -// struct g_raid_disk *disk; + struct g_raid_disk *disk; struct g_raid_softc *sc; struct g_provider *pp; char name[G_RAID_MAX_VOLUMENAME]; + off_t off; sc = vol->v_softc; sx_assert(&sc->sc_lock, SX_LOCKED); @@ -1331,14 +1341,25 @@ g_raid_launch_provider(struct g_raid_vol pp->sectorsize = vol->v_sectorsize; pp->stripesize = 0; pp->stripeoffset = 0; -#if 0 - TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { - if (disk->d_consumer && disk->d_consumer->provider && - disk->d_consumer->provider->stripesize > pp->stripesize) { + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 || + vol->v_raid_level == G_RAID_VOLUME_RL_RAID3 || + vol->v_raid_level == G_RAID_VOLUME_RL_SINGLE || + vol->v_raid_level == G_RAID_VOLUME_RL_CONCAT) { + if ((disk = vol->v_subdisks[0].sd_disk) != NULL && + disk->d_consumer != NULL && + disk->d_consumer->provider != NULL) { pp->stripesize = disk->d_consumer->provider->stripesize; + off = disk->d_consumer->provider->stripeoffset; + pp->stripeoffset = off + vol->v_subdisks[0].sd_offset; + if (off > 0) + pp->stripeoffset %= off; } - } -#endif + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID3) { + pp->stripesize *= (vol->v_disks_count - 1); + pp->stripeoffset *= (vol->v_disks_count - 1); + } + } else + pp->stripesize = vol->v_strip_size; vol->v_provider = pp; g_error_provider(pp, 0); g_topology_unlock(); Modified: projects/graid/8/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.h Thu Feb 10 12:34:27 2011 (r218519) +++ projects/graid/8/sys/geom/raid/g_raid.h Thu Feb 10 14:29:34 2011 (r218520) @@ -98,6 +98,7 @@ extern struct g_class g_raid_class; * doing some desirable action such as bad * block remapping after we detect a bad part * of the disk. + * G_RAID_BIO_FLAG_LOCKED I/O holds range lock that should re released. * * and the following meta item: * G_RAID_BIO_FLAG_SPECIAL And of the I/O flags that need to make it @@ -107,8 +108,9 @@ extern struct g_class g_raid_class; */ #define G_RAID_BIO_FLAG_SYNC 0x01 #define G_RAID_BIO_FLAG_REMAP 0x02 -#define G_RAID_BIO_FLAG_SPECIAL \ +#define G_RAID_BIO_FLAG_SPECIAL \ (G_RAID_BIO_FLAG_SYNC|G_RAID_BIO_FLAG_REMAP) +#define G_RAID_BIO_FLAG_LOCKED 0x80 struct g_raid_lock { off_t l_offset; @@ -145,10 +147,11 @@ struct g_raid_disk { struct g_consumer *d_consumer; /* GEOM disk consumer. */ void *d_md_data; /* Disk's metadata storage. */ struct g_kerneldump d_kd; /* Kernel dumping method/args. */ - u_int d_state; /* Disk state. */ uint64_t d_flags; /* Additional flags. */ + u_int d_state; /* Disk state. */ u_int d_load; /* Disk average load. */ off_t d_last_offset; /* Last head offset. */ + int d_read_errs; /* Count of the read errors */ TAILQ_HEAD(, g_raid_subdisk) d_subdisks; /* List of subdisks. */ TAILQ_ENTRY(g_raid_disk) d_next; /* Next disk in the node. */ }; @@ -167,6 +170,13 @@ struct g_raid_disk { #define G_RAID_SUBDISK_E_DISCONNECTED 0x03 /* A subdisk removed from volume. */ #define G_RAID_SUBDISK_E_FIRST_TR_PRIVATE 0x80 /* translation private events */ +#define G_RAID_SUBDISK_POS(sd) \ + ((sd)->sd_disk ? ((sd)->sd_disk->d_last_offset - (sd)->sd_offset) : 0) +#define G_RAID_SUBDISK_TRACK_SIZE (1 * 1024 * 1024) +#define G_RAID_SUBDISK_LOAD(sd) \ + ((sd)->sd_disk ? ((sd)->sd_disk->d_load) : 0) +#define G_RAID_SUBDISK_LOAD_SCALE 256 + struct g_raid_subdisk { struct g_raid_softc *sd_softc; /* Back-pointer to softc. */ struct g_raid_disk *sd_disk; /* Where this subdisk lives. */ @@ -176,7 +186,7 @@ struct g_raid_subdisk { u_int sd_pos; /* Position in volume. */ u_int sd_state; /* Subdisk state. */ off_t sd_rebuild_pos; /* Rebuild position. */ - int sd_read_errs; /* Count of the read errors */ + int sd_recovery; /* Count of recovery reqs. */ TAILQ_ENTRY(g_raid_subdisk) sd_next; /* Next subdisk on disk. */ }; @@ -206,7 +216,6 @@ struct g_raid_subdisk { #define G_RAID_VOLUME_RL_RAID4 0x04 #define G_RAID_VOLUME_RL_RAID5 0x05 #define G_RAID_VOLUME_RL_RAID6 0x06 -#define G_RAID_VOLUME_RL_RAID10 0x0a #define G_RAID_VOLUME_RL_RAID1E 0x11 #define G_RAID_VOLUME_RL_SINGLE 0x0f #define G_RAID_VOLUME_RL_CONCAT 0x1f Modified: projects/graid/8/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/8/sys/geom/raid/md_intel.c Thu Feb 10 12:34:27 2011 (r218519) +++ projects/graid/8/sys/geom/raid/md_intel.c Thu Feb 10 14:29:34 2011 (r218520) @@ -568,6 +568,43 @@ g_raid_md_intel_get_disk(struct g_raid_s return (disk); } +static int +g_raid_md_intel_supported(int level, int qual, int disks, int force) +{ + + switch (level) { + case G_RAID_VOLUME_RL_RAID0: + if (disks < 1) + return (0); + if (!force && (disks < 2 || disks > 6)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID1: + if (disks < 1) + return (0); + if (!force && (disks != 2)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID1E: + if (disks < 3) + return (0); + if (!force && (disks != 4)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID5: + if (disks < 3) + return (0); + if (!force && disks > 6) + return (0); + break; + default: + return (0); + } + if (qual != G_RAID_VOLUME_RLQ_NONE) + return (0); + return (1); +} + static struct g_raid_volume * g_raid_md_intel_get_volume(struct g_raid_softc *sc, int id) { @@ -898,11 +935,20 @@ g_raid_md_intel_start(struct g_raid_soft if (mmap->type == INTEL_T_RAID0) vol->v_raid_level = G_RAID_VOLUME_RL_RAID0; else if (mmap->type == INTEL_T_RAID1 && - mmap->total_disks < 4) /* >= 4 disks -> RAID10 */ - vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; - else if (mmap->type == INTEL_T_RAID1) /* SIC */ - vol->v_raid_level = G_RAID_VOLUME_RL_RAID10; - else if (mmap->type == INTEL_T_RAID5) + mmap->total_domains >= 2 && + mmap->total_domains <= mmap->total_disks) { + /* Assume total_domains is correct. */ + if (mmap->total_domains == mmap->total_disks) + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; + else + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E; + } else if (mmap->type == INTEL_T_RAID1) { + /* total_domains looks wrong. */ + if (mmap->total_disks <= 2) + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; + else + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E; + } else if (mmap->type == INTEL_T_RAID5) vol->v_raid_level = G_RAID_VOLUME_RL_RAID5; else vol->v_raid_level = G_RAID_VOLUME_RL_UNKNOWN; @@ -954,6 +1000,8 @@ g_raid_md_intel_start(struct g_raid_soft } while (disk != NULL); mdi->mdio_started = 1; + G_RAID_DEBUG1(0, sc, "Array started."); + g_raid_md_write_intel(md, NULL, NULL, NULL); /* Pickup any STALE/SPARE disks to refill array if needed. */ g_raid_md_intel_refill(sc); @@ -1348,16 +1396,17 @@ g_raid_md_ctl_intel(struct g_raid_md_obj gctl_error(req, "Unknown RAID level '%s'.", levelname); return (-4); } - if (level != G_RAID_VOLUME_RL_RAID0 && - level != G_RAID_VOLUME_RL_RAID1 && - level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID10) { - gctl_error(req, "Unsupported RAID level."); + numdisks = *nargs - 3; + force = gctl_get_paraml(req, "force", sizeof(*force)); + if (!g_raid_md_intel_supported(level, qual, numdisks, + force ? *force : 0)) { + gctl_error(req, "Unsupported RAID level " + "(0x%02x/0x%02x), or number of disks (%d).", + level, qual, numdisks); return (-5); } /* Search for disks, connect them and probe. */ - numdisks = *nargs - 3; size = 0x7fffffffffffffffllu; sectorsize = 0; for (i = 0; i < numdisks; i++) { @@ -1515,8 +1564,10 @@ makedisk: vol->v_mediasize = size; else if (level == G_RAID_VOLUME_RL_RAID5) vol->v_mediasize = size * (numdisks - 1); - else /* RAID10 */ - vol->v_mediasize = size * (numdisks / 2); + else { /* RAID1E */ + vol->v_mediasize = ((size * numdisks) / strip / 2) * + strip; + } vol->v_sectorsize = sectorsize; g_raid_start_volume(vol); @@ -1541,6 +1592,7 @@ makedisk: } /* Write metadata based on created entities. */ + G_RAID_DEBUG1(0, sc, "Array started."); g_raid_md_write_intel(md, NULL, NULL, NULL); /* Pickup any STALE/SPARE disks to refill array if needed. */ @@ -1570,13 +1622,6 @@ makedisk: gctl_error(req, "Unknown RAID level '%s'.", levelname); return (-4); } - if (level != G_RAID_VOLUME_RL_RAID0 && - level != G_RAID_VOLUME_RL_RAID1 && - level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID10) { - gctl_error(req, "Unsupported RAID level."); - return (-5); - } /* Look for existing volumes. */ i = 0; @@ -1594,10 +1639,19 @@ makedisk: return (-7); } + numdisks = vol1->v_disks_count; + force = gctl_get_paraml(req, "force", sizeof(*force)); + if (!g_raid_md_intel_supported(level, qual, numdisks, + force ? *force : 0)) { + gctl_error(req, "Unsupported RAID level " + "(0x%02x/0x%02x), or number of disks (%d).", + level, qual, numdisks); + return (-5); + } + /* Collect info about present disks. */ size = 0x7fffffffffffffffllu; sectorsize = 512; - numdisks = vol1->v_disks_count; for (i = 0; i < numdisks; i++) { disk = vol1->v_subdisks[i].sd_disk; pd = (struct g_raid_md_intel_perdisk *) @@ -1692,8 +1746,10 @@ makedisk: vol->v_mediasize = size; else if (level == G_RAID_VOLUME_RL_RAID5) vol->v_mediasize = size * (numdisks - 1); - else /* RAID10 */ - vol->v_mediasize = size * (numdisks / 2); + else { /* RAID1E */ + vol->v_mediasize = ((size * numdisks) / strip / 2) * + strip; + } vol->v_sectorsize = sectorsize; g_raid_start_volume(vol); @@ -2138,15 +2194,15 @@ g_raid_md_write_intel(struct g_raid_md_o if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID0) mmap0->type = INTEL_T_RAID0; else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 || - vol->v_raid_level == G_RAID_VOLUME_RL_RAID10) + vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E) mmap0->type = INTEL_T_RAID1; else mmap0->type = INTEL_T_RAID5; mmap0->total_disks = vol->v_disks_count; - if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID10) - mmap0->total_domains = vol->v_disks_count / 2; - else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1) + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1) mmap0->total_domains = vol->v_disks_count; + else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E) + mmap0->total_domains = 2; else mmap0->total_domains = 1; mmap0->stripe_count = sd->sd_size / vol->v_strip_size / Modified: projects/graid/8/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/8/sys/geom/raid/tr_raid1.c Thu Feb 10 12:34:27 2011 (r218519) +++ projects/graid/8/sys/geom/raid/tr_raid1.c Thu Feb 10 14:29:34 2011 (r218520) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -162,10 +163,12 @@ g_raid_tr_update_state_raid1(struct g_ra struct g_raid_subdisk *sd) { struct g_raid_tr_raid1_object *trs; + struct g_raid_softc *sc; struct g_raid_subdisk *tsd, *bestsd; u_int s; int i, na, ns; + sc = vol->v_softc; trs = (struct g_raid_tr_raid1_object *)vol->v_tr; if (trs->trso_stopping && (trs->trso_flags & TR_RAID1_F_DOING_SOME) == 0) @@ -193,13 +196,13 @@ g_raid_tr_update_state_raid1(struct g_ra } if (bestsd->sd_state >= G_RAID_SUBDISK_S_UNINITIALIZED) { /* We found reasonable candidate. */ - G_RAID_DEBUG1(1, vol->v_softc, + G_RAID_DEBUG1(1, sc, "Promote subdisk %s:%d from %s to ACTIVE.", vol->v_name, bestsd->sd_pos, g_raid_subdisk_state2str(bestsd->sd_state)); g_raid_change_subdisk_state(bestsd, G_RAID_SUBDISK_S_ACTIVE); - g_raid_write_metadata(vol->v_softc, + g_raid_write_metadata(sc, vol, bestsd, bestsd->sd_disk); } } @@ -221,11 +224,32 @@ g_raid_tr_update_state_raid1(struct g_ra G_RAID_VOLUME_E_UP : G_RAID_VOLUME_E_DOWN, G_RAID_EVENT_VOLUME); g_raid_change_volume_state(vol, s); + if (!trs->trso_starting && !trs->trso_stopping) + g_raid_write_metadata(sc, vol, NULL, NULL); } return (0); } static void +g_raid_tr_raid1_fail_disk(struct g_raid_softc *sc, struct g_raid_subdisk *sd, + struct g_raid_disk *disk) +{ + /* + * We don't fail the last disk in the pack, since it still has decent + * data on it and that's better than failing the disk if it is the root + * file system. + * + * XXX should this be controlled via a tunable? It makes sense for + * the volume that has / on it. I can't think of a case where we'd + * want the volume to go away on this kind of event. + */ + if (g_raid_nsubdisks(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE) == 1 && + g_raid_get_subdisk(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE) == sd) + return; + g_raid_fail_disk(sc, sd, disk); +} + +static void g_raid_tr_raid1_rebuild_some(struct g_raid_tr_object *tr, struct g_raid_subdisk *sd) { @@ -471,22 +495,46 @@ g_raid_tr_stop_raid1(struct g_raid_tr_ob } /* - * Select the disk to do the reads to. For now, we just pick the first one in - * the list that's active always. This ensures we favor one disk on boot, and - * have more deterministic recovery from the weird edge cases of power - * failure. In the future, we can imagine policies that go for the least - * loaded disk to improve performance, or we need to limit reads to a disk - * during some kind of error recovery with that disk. + * Select the disk to read from. Take into account: subdisk state, running + * error recovery, average disk load, head position and possible cache hits. */ +#define ABS(x) (((x) >= 0) ? (x) : (-(x))) static struct g_raid_subdisk * -g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol) +g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol, struct bio *bp, + u_int mask) { - int i; + struct g_raid_subdisk *sd, *best; + int i, prio, bestprio; - for (i = 0; i < vol->v_disks_count; i++) - if (vol->v_subdisks[i].sd_state == G_RAID_SUBDISK_S_ACTIVE) - return (&vol->v_subdisks[i]); - return (NULL); + best = NULL; + bestprio = INT_MAX; + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_state != G_RAID_SUBDISK_S_ACTIVE && + !((sd->sd_state == G_RAID_SUBDISK_S_REBUILD || + sd->sd_state == G_RAID_SUBDISK_S_RESYNC) && + bp->bio_offset + bp->bio_length < + sd->sd_rebuild_pos)) + continue; + if ((mask & (1 << i)) != 0) + continue; + prio = G_RAID_SUBDISK_LOAD(sd); + prio += min(sd->sd_recovery, 255) << 22; + prio += (G_RAID_SUBDISK_S_ACTIVE - sd->sd_state) << 16; + /* If disk head is precisely in position - highly prefer it. */ + if (G_RAID_SUBDISK_POS(sd) == bp->bio_offset) + prio -= 2 * G_RAID_SUBDISK_LOAD_SCALE; + else + /* If disk head is close to position - prefer it. */ + if (ABS(G_RAID_SUBDISK_POS(sd) - bp->bio_offset) < + G_RAID_SUBDISK_TRACK_SIZE) + prio -= 1 * G_RAID_SUBDISK_LOAD_SCALE; + if (prio < bestprio) { + best = sd; + bestprio = prio; + } + } + return (best); } static void @@ -495,7 +543,7 @@ g_raid_tr_iostart_raid1_read(struct g_ra struct g_raid_subdisk *sd; struct bio *cbp; - sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume); + sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume, bp, 0); KASSERT(sd != NULL, ("No active disks in volume %s.", tr->tro_volume->v_name)); @@ -630,10 +678,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ struct g_raid_volume *vol; struct bio *pbp; struct g_raid_tr_raid1_object *trs; - int i, error; + uintptr_t *mask; + int error, do_write; trs = (struct g_raid_tr_raid1_object *)tr; - pbp = bp->bio_parent; + vol = tr->tro_volume; if (bp->bio_cflags & G_RAID_BIO_FLAG_SYNC) { /* * This operation is part of a rebuild or resync operation. @@ -650,20 +699,30 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * 5MB of data, for inactive ones, we do 50MB. */ if (trs->trso_type == TR_RAID1_REBUILD) { - vol = tr->tro_volume; if (bp->bio_cmd == BIO_READ) { + + /* Immediately abort rebuild, if requested. */ + if (trs->trso_flags & TR_RAID1_F_ABORT) { + trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; + g_raid_tr_raid1_rebuild_abort(tr); + return; + } + + /* On read error, skip and cross fingers. */ + if (bp->bio_error != 0) { + G_RAID_LOGREQ(0, bp, + "Read error during rebuild (%d), " + "possible data loss!", + bp->bio_error); + goto rebuild_round_done; + } + /* * The read operation finished, queue the * write and get out. */ G_RAID_LOGREQ(4, bp, "rebuild read done. %d", bp->bio_error); - if (bp->bio_error != 0 || - trs->trso_flags & TR_RAID1_F_ABORT) { - trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; - g_raid_tr_raid1_rebuild_abort(tr); - return; - } bp->bio_cmd = BIO_WRITE; bp->bio_cflags = G_RAID_BIO_FLAG_SYNC; bp->bio_offset = bp->bio_offset; @@ -685,7 +744,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ trs->trso_flags & TR_RAID1_F_ABORT) { if ((trs->trso_flags & TR_RAID1_F_ABORT) == 0) { - g_raid_fail_disk(sd->sd_softc, + g_raid_tr_raid1_fail_disk(sd->sd_softc, nsd, nsd->sd_disk); } trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; @@ -693,6 +752,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ return; } /* XXX A lot of the following is needed when we kick of the work -- refactor */ +rebuild_round_done: + nsd = trs->trso_failed_sd; trs->trso_flags &= ~TR_RAID1_F_LOCKED; g_raid_unlock_range(sd->sd_volume, bp->bio_offset, bp->bio_length); @@ -749,6 +810,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ } return; } + pbp = bp->bio_parent; pbp->bio_inbed++; if (bp->bio_cmd == BIO_READ && bp->bio_error != 0) { /* @@ -756,11 +818,10 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * another disk drive, if available, before erroring out the * read. */ - vol = tr->tro_volume; - sd->sd_read_errs++; + sd->sd_disk->d_read_errs++; G_RAID_LOGREQ(0, bp, "Read error (%d), %d read errors total", - bp->bio_error, sd->sd_read_errs); + bp->bio_error, sd->sd_disk->d_read_errs); /* * If there are too many read errors, we move to degraded. @@ -768,33 +829,37 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * everything to get it back in sync), or just degrade the * drive, which kicks off a resync? */ - if (sd->sd_read_errs > g_raid1_read_err_thresh) { - g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + do_write = 1; + if (sd->sd_disk->d_read_errs > g_raid1_read_err_thresh) { + g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); if (pbp->bio_children == 1) - goto remapdone; + do_write = 0; } /* * Find the other disk, and try to do the I/O to it. */ - for (nsd = NULL, i = 0; i < vol->v_disks_count; i++) { - if (pbp->bio_children > 1) - break; - nsd = &vol->v_subdisks[i]; - if (sd == nsd) - continue; - if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE) - continue; - cbp = g_clone_bio(pbp); - if (cbp == NULL) - break; - G_RAID_LOGREQ(2, cbp, "Retrying read"); - pbp->bio_driver1 = sd; /* Save original subdisk. */ - cbp->bio_caller1 = nsd; - cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - /* Lock callback starts I/O */ - g_raid_lock_range(sd->sd_volume, - cbp->bio_offset, cbp->bio_length, pbp, cbp); + mask = (uintptr_t *)(&pbp->bio_driver2); + if (pbp->bio_children == 1) { + /* Save original subdisk. */ + pbp->bio_driver1 = do_write ? sd : NULL; + *mask = 0; + } + *mask |= 1 << sd->sd_pos; + nsd = g_raid_tr_raid1_select_read_disk(vol, pbp, *mask); + if (nsd != NULL && (cbp = g_clone_bio(pbp)) != NULL) { + G_RAID_LOGREQ(2, cbp, "Retrying read from %d", + nsd->sd_pos); + if (pbp->bio_children == 2 && do_write) { + sd->sd_recovery++; + cbp->bio_caller1 = nsd; + pbp->bio_pflags = G_RAID_BIO_FLAG_LOCKED; + /* Lock callback starts I/O */ + g_raid_lock_range(sd->sd_volume, + cbp->bio_offset, cbp->bio_length, pbp, cbp); + } else { + g_raid_subdisk_iostart(nsd, cbp); + } return; } /* @@ -805,10 +870,12 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ G_RAID_LOGREQ(2, bp, "Couldn't retry read, failing it"); } - if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 && - pbp->bio_children > 1) { + if (bp->bio_cmd == BIO_READ && + bp->bio_error == 0 && + pbp->bio_children > 1 && + pbp->bio_driver1 != NULL) { /* - * If it was a read, and bio_children is 2, then we just + * If it was a read, and bio_children is >1, then we just * recovered the data from the second drive. We should try to * write that data to the first drive if sector remapping is * enabled. A write should put the data in a new place on the @@ -823,16 +890,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (cbp != NULL) { cbp->bio_cmd = BIO_WRITE; cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - G_RAID_LOGREQ(3, cbp, + G_RAID_LOGREQ(2, cbp, "Attempting bad sector remap on failing drive."); g_raid_subdisk_iostart(pbp->bio_driver1, cbp); return; } } -remapdone: - if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) { + if (pbp->bio_pflags & G_RAID_BIO_FLAG_LOCKED) { /* - * We're done with a remap write, mark the range as unlocked. + * We're done with a recovery, mark the range as unlocked. * For any write errors, we agressively fail the disk since * there was both a READ and a WRITE error at this location. * Both types of errors generally indicates the drive is on @@ -840,12 +906,16 @@ remapdone: * it now. However, we need to reset error to 0 in that case * because we're not failing the original I/O which succeeded. */ - if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) { + if (bp->bio_cmd == BIO_WRITE && bp->bio_error) { G_RAID_LOGREQ(0, bp, "Remap write failed: " "failing subdisk."); - g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); bp->bio_error = 0; } + if (pbp->bio_driver1 != NULL) { + ((struct g_raid_subdisk *)pbp->bio_driver1) + ->sd_recovery--; + } G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); g_raid_unlock_range(sd->sd_volume, bp->bio_offset, bp->bio_length); From owner-svn-src-projects@FreeBSD.ORG Thu Feb 10 15:07:18 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 445E3106564A; Thu, 10 Feb 2011 15:07:18 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 311CF8FC15; Thu, 10 Feb 2011 15:07:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1AF7Ifs025755; Thu, 10 Feb 2011 15:07:18 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1AF7ISk025748; Thu, 10 Feb 2011 15:07:18 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102101507.p1AF7ISk025748@svn.freebsd.org> From: Alexander Motin Date: Thu, 10 Feb 2011 15:07:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218522 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac sbin/geom/class/raid share/misc sys/geom/raid tools/tools/nanobsd usr.sbin usr.sbin/bs... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 15:07:18 -0000 Author: mav Date: Thu Feb 10 15:07:17 2011 New Revision: 218522 URL: http://svn.freebsd.org/changeset/base/218522 Log: MFH r218470, r218472, r218479, r218480, r218481, r218486, r218491, r218504, r218512, r218514, r218515, r218516, r218518, r218519 Modified: projects/graid/7/sbin/geom/class/raid/geom_raid.c projects/graid/7/sbin/geom/class/raid/graid.8 projects/graid/7/sys/geom/raid/g_raid.c projects/graid/7/sys/geom/raid/g_raid.h projects/graid/7/sys/geom/raid/md_intel.c projects/graid/7/sys/geom/raid/tr_raid1.c Directory Properties: projects/graid/7/ (props changed) projects/graid/7/COPYRIGHT (props changed) projects/graid/7/Makefile (props changed) projects/graid/7/Makefile.inc1 (props changed) projects/graid/7/ObsoleteFiles.inc (props changed) projects/graid/7/UPDATING (props changed) projects/graid/7/bin/ (props changed) projects/graid/7/bin/chflags/ (props changed) projects/graid/7/bin/chio/ (props changed) projects/graid/7/bin/cp/ (props changed) projects/graid/7/bin/csh/ (props changed) projects/graid/7/bin/dd/ (props changed) projects/graid/7/bin/df/ (props changed) projects/graid/7/bin/echo/ (props changed) projects/graid/7/bin/expr/ (props changed) projects/graid/7/bin/kill/ (props changed) projects/graid/7/bin/ln/ (props changed) projects/graid/7/bin/ls/ (props changed) projects/graid/7/bin/pax/ (props changed) projects/graid/7/bin/ps/ (props changed) projects/graid/7/bin/rm/ (props changed) projects/graid/7/bin/sh/ (props changed) projects/graid/7/bin/test/ (props changed) projects/graid/7/cddl/contrib/opensolaris/ (props changed) projects/graid/7/cddl/lib/libzpool/ (props changed) projects/graid/7/contrib/bind9/ (props changed) projects/graid/7/contrib/binutils/ (props changed) projects/graid/7/contrib/bsnmp/ (props changed) projects/graid/7/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/7/contrib/cpio/ (props changed) projects/graid/7/contrib/csup/ (props changed) projects/graid/7/contrib/expat/ (props changed) projects/graid/7/contrib/gcc/ (props changed) projects/graid/7/contrib/gdb/ (props changed) projects/graid/7/contrib/gdtoa/ (props changed) projects/graid/7/contrib/groff/ (props changed) projects/graid/7/contrib/ipfilter/ (props changed) projects/graid/7/contrib/less/ (props changed) projects/graid/7/contrib/libpcap/ (props changed) projects/graid/7/contrib/ncurses/ (props changed) projects/graid/7/contrib/netcat/ (props changed) projects/graid/7/contrib/ntp/ (props changed) projects/graid/7/contrib/nvi/ (props changed) projects/graid/7/contrib/pf/ (props changed) projects/graid/7/contrib/sendmail/ (props changed) projects/graid/7/contrib/smbfs/ (props changed) projects/graid/7/contrib/tcp_wrappers/ (props changed) projects/graid/7/contrib/tcsh/ (props changed) projects/graid/7/contrib/telnet/ (props changed) projects/graid/7/contrib/top/ (props changed) projects/graid/7/contrib/traceroute/ (props changed) projects/graid/7/contrib/wpa_supplicant/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.conf (props changed) projects/graid/7/crypto/openssh/ (props changed) projects/graid/7/crypto/openssl/ (props changed) projects/graid/7/etc/ (props changed) projects/graid/7/games/factor/ (props changed) projects/graid/7/games/fortune/ (props changed) projects/graid/7/games/grdc/ (props changed) projects/graid/7/gnu/ (props changed) projects/graid/7/gnu/lib/libstdc++/ (props changed) projects/graid/7/gnu/usr.bin/ (props changed) projects/graid/7/gnu/usr.bin/cc/ (props changed) projects/graid/7/gnu/usr.bin/cpio/ (props changed) projects/graid/7/gnu/usr.bin/cvs/ (props changed) projects/graid/7/gnu/usr.bin/gdb/ (props changed) projects/graid/7/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/7/gnu/usr.bin/grep/ (props changed) projects/graid/7/gnu/usr.bin/groff/ (props changed) projects/graid/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/graid/7/gnu/usr.bin/man/ (props changed) projects/graid/7/gnu/usr.bin/sort/ (props changed) projects/graid/7/include/ (props changed) projects/graid/7/kerberos5/ (props changed) projects/graid/7/lib/ (props changed) projects/graid/7/lib/bind/ (props changed) projects/graid/7/lib/csu/ (props changed) projects/graid/7/lib/libarchive/ (props changed) projects/graid/7/lib/libbluetooth/ (props changed) projects/graid/7/lib/libc/ (props changed) projects/graid/7/lib/libc/stdtime/ (props changed) projects/graid/7/lib/libc_r/ (props changed) projects/graid/7/lib/libcam/ (props changed) projects/graid/7/lib/libdisk/ (props changed) projects/graid/7/lib/libdwarf/ (props changed) projects/graid/7/lib/libelf/ (props changed) projects/graid/7/lib/libexpat/ (props changed) projects/graid/7/lib/libfetch/ (props changed) projects/graid/7/lib/libftpio/ (props changed) projects/graid/7/lib/libgeom/ (props changed) projects/graid/7/lib/libgssapi/ (props changed) projects/graid/7/lib/libkse/ (props changed) projects/graid/7/lib/libkvm/ (props changed) projects/graid/7/lib/libmagic/ (props changed) projects/graid/7/lib/libmemstat/ (props changed) projects/graid/7/lib/libpmc/ (props changed) projects/graid/7/lib/libradius/ (props changed) projects/graid/7/lib/libsm/ (props changed) projects/graid/7/lib/libstand/ (props changed) projects/graid/7/lib/libthr/ (props changed) projects/graid/7/lib/libthread_db/ (props changed) projects/graid/7/lib/libufs/ (props changed) projects/graid/7/lib/libutil/ (props changed) projects/graid/7/lib/msun/ (props changed) projects/graid/7/libexec/ (props changed) projects/graid/7/libexec/ftpd/ (props changed) projects/graid/7/libexec/rpc.rquotad/ (props changed) projects/graid/7/libexec/rpc.rstatd/ (props changed) projects/graid/7/libexec/rtld-elf/ (props changed) projects/graid/7/libexec/tftpd/ (props changed) projects/graid/7/release/ (props changed) projects/graid/7/release/doc/ (props changed) projects/graid/7/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/7/release/picobsd/tinyware/login/ (props changed) projects/graid/7/rescue/ (props changed) projects/graid/7/sbin/ (props changed) projects/graid/7/sbin/atacontrol/ (props changed) projects/graid/7/sbin/bsdlabel/ (props changed) projects/graid/7/sbin/clri/ (props changed) projects/graid/7/sbin/ddb/ (props changed) projects/graid/7/sbin/devd/ (props changed) projects/graid/7/sbin/devfs/ (props changed) projects/graid/7/sbin/dhclient/ (props changed) projects/graid/7/sbin/dumpfs/ (props changed) projects/graid/7/sbin/fdisk/ (props changed) projects/graid/7/sbin/fdisk_pc98/ (props changed) projects/graid/7/sbin/fsck/ (props changed) projects/graid/7/sbin/fsck_ffs/ (props changed) projects/graid/7/sbin/fsck_msdosfs/ (props changed) projects/graid/7/sbin/geom/ (props changed) projects/graid/7/sbin/geom/class/label/ (props changed) projects/graid/7/sbin/geom/class/part/ (props changed) projects/graid/7/sbin/geom/class/stripe/ (props changed) projects/graid/7/sbin/geom/misc/ (props changed) projects/graid/7/sbin/growfs/ (props changed) projects/graid/7/sbin/ifconfig/ (props changed) projects/graid/7/sbin/init/ (props changed) projects/graid/7/sbin/ipf/ (props changed) projects/graid/7/sbin/ipfw/ (props changed) projects/graid/7/sbin/md5/ (props changed) projects/graid/7/sbin/mdconfig/ (props changed) projects/graid/7/sbin/mksnap_ffs/ (props changed) projects/graid/7/sbin/mount/ (props changed) projects/graid/7/sbin/mount_msdosfs/ (props changed) projects/graid/7/sbin/natd/ (props changed) projects/graid/7/sbin/newfs/ (props changed) projects/graid/7/sbin/newfs_msdos/ (props changed) projects/graid/7/sbin/ping6/ (props changed) projects/graid/7/sbin/reboot/ (props changed) projects/graid/7/sbin/restore/ (props changed) projects/graid/7/sbin/route/ (props changed) projects/graid/7/sbin/savecore/ (props changed) projects/graid/7/sbin/sconfig/ (props changed) projects/graid/7/sbin/shutdown/ (props changed) projects/graid/7/sbin/sysctl/ (props changed) projects/graid/7/sbin/tunefs/ (props changed) projects/graid/7/secure/lib/libcrypto/ (props changed) projects/graid/7/secure/lib/libssh/ (props changed) projects/graid/7/secure/lib/libssl/ (props changed) projects/graid/7/secure/libexec/sftp-server/ (props changed) projects/graid/7/secure/usr.bin/bdes/ (props changed) projects/graid/7/secure/usr.bin/openssl/ (props changed) projects/graid/7/secure/usr.bin/ssh/ (props changed) projects/graid/7/secure/usr.sbin/sshd/ (props changed) projects/graid/7/share/ (props changed) projects/graid/7/share/colldef/ (props changed) projects/graid/7/share/dict/ (props changed) projects/graid/7/share/doc/bind9/ (props changed) projects/graid/7/share/doc/papers/jail/ (props changed) projects/graid/7/share/doc/smm/01.setup/ (props changed) projects/graid/7/share/examples/ (props changed) projects/graid/7/share/man/ (props changed) projects/graid/7/share/man/man1/ (props changed) projects/graid/7/share/man/man3/ (props changed) projects/graid/7/share/man/man4/ (props changed) projects/graid/7/share/man/man5/ (props changed) projects/graid/7/share/man/man7/ (props changed) projects/graid/7/share/man/man8/ (props changed) projects/graid/7/share/man/man9/ (props changed) projects/graid/7/share/misc/ (props changed) projects/graid/7/share/misc/iso639 (props changed) projects/graid/7/share/misc/pci_vendors (props changed) projects/graid/7/share/mk/ (props changed) projects/graid/7/share/mklocale/ (props changed) projects/graid/7/share/monetdef/ (props changed) projects/graid/7/share/msgdef/ (props changed) projects/graid/7/share/numericdef/ (props changed) projects/graid/7/share/sendmail/ (props changed) projects/graid/7/share/syscons/ (props changed) projects/graid/7/share/syscons/keymaps/ (props changed) projects/graid/7/share/termcap/ (props changed) projects/graid/7/share/timedef/ (props changed) projects/graid/7/share/zoneinfo/ (props changed) projects/graid/7/sys/ (props changed) projects/graid/7/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/7/sys/contrib/dev/acpica/ (props changed) projects/graid/7/sys/contrib/pf/ (props changed) projects/graid/7/tools/ (props changed) projects/graid/7/tools/build/ (props changed) projects/graid/7/tools/build/options/ (props changed) projects/graid/7/tools/debugscripts/ (props changed) projects/graid/7/tools/regression/acct/ (props changed) projects/graid/7/tools/regression/atm/ (props changed) projects/graid/7/tools/regression/bin/ (props changed) projects/graid/7/tools/regression/bin/date/ (props changed) projects/graid/7/tools/regression/bin/sh/ (props changed) projects/graid/7/tools/regression/file/ (props changed) projects/graid/7/tools/regression/file/flock/ (props changed) projects/graid/7/tools/regression/lib/libc/ (props changed) projects/graid/7/tools/regression/usr.bin/ (props changed) projects/graid/7/tools/regression/usr.bin/jot/ (props changed) projects/graid/7/tools/regression/usr.bin/tr/ (props changed) projects/graid/7/tools/sched/ (props changed) projects/graid/7/tools/test/ (props changed) projects/graid/7/tools/tools/ (props changed) projects/graid/7/tools/tools/aac/ (props changed) projects/graid/7/tools/tools/crypto/ (props changed) projects/graid/7/tools/tools/editing/ (props changed) projects/graid/7/tools/tools/nanobsd/ (props changed) projects/graid/7/tools/tools/nanobsd/FlashDevice.sub (props changed) projects/graid/7/tools/tools/nanobsd/nanobsd.sh (props changed) projects/graid/7/tools/tools/netrate/ (props changed) projects/graid/7/tools/tools/umastat/ (props changed) projects/graid/7/tools/tools/usb/ (props changed) projects/graid/7/usr.bin/ (props changed) projects/graid/7/usr.bin/basename/ (props changed) projects/graid/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) projects/graid/7/usr.bin/calendar/ (props changed) projects/graid/7/usr.bin/catman/ (props changed) projects/graid/7/usr.bin/cksum/ (props changed) projects/graid/7/usr.bin/comm/ (props changed) projects/graid/7/usr.bin/cpuset/ (props changed) projects/graid/7/usr.bin/csup/ (props changed) projects/graid/7/usr.bin/dirname/ (props changed) projects/graid/7/usr.bin/du/ (props changed) projects/graid/7/usr.bin/fetch/ (props changed) projects/graid/7/usr.bin/file/ (props changed) projects/graid/7/usr.bin/find/ (props changed) projects/graid/7/usr.bin/finger/ (props changed) projects/graid/7/usr.bin/fold/ (props changed) projects/graid/7/usr.bin/fstat/ (props changed) projects/graid/7/usr.bin/gcore/ (props changed) projects/graid/7/usr.bin/gprof/ (props changed) projects/graid/7/usr.bin/gzip/ (props changed) projects/graid/7/usr.bin/hexdump/ (props changed) projects/graid/7/usr.bin/id/ (props changed) projects/graid/7/usr.bin/indent/ (props changed) projects/graid/7/usr.bin/ipcrm/ (props changed) projects/graid/7/usr.bin/ipcs/ (props changed) projects/graid/7/usr.bin/jot/ (props changed) projects/graid/7/usr.bin/kdump/ (props changed) projects/graid/7/usr.bin/ktrace/ (props changed) projects/graid/7/usr.bin/ldd/ (props changed) projects/graid/7/usr.bin/less/ (props changed) projects/graid/7/usr.bin/locate/ (props changed) projects/graid/7/usr.bin/lockf/ (props changed) projects/graid/7/usr.bin/logger/ (props changed) projects/graid/7/usr.bin/make/ (props changed) projects/graid/7/usr.bin/ncal/ (props changed) projects/graid/7/usr.bin/netstat/ (props changed) projects/graid/7/usr.bin/newgrp/ (props changed) projects/graid/7/usr.bin/nsupdate/ (props changed) projects/graid/7/usr.bin/pkill/ (props changed) projects/graid/7/usr.bin/procstat/ (props changed) projects/graid/7/usr.bin/quota/ (props changed) projects/graid/7/usr.bin/rpcgen/ (props changed) projects/graid/7/usr.bin/ruptime/ (props changed) projects/graid/7/usr.bin/script/ (props changed) projects/graid/7/usr.bin/sed/ (props changed) projects/graid/7/usr.bin/shar/ (props changed) projects/graid/7/usr.bin/sockstat/ (props changed) projects/graid/7/usr.bin/stat/ (props changed) projects/graid/7/usr.bin/su/ (props changed) projects/graid/7/usr.bin/systat/ (props changed) projects/graid/7/usr.bin/tail/ (props changed) projects/graid/7/usr.bin/tar/ (props changed) projects/graid/7/usr.bin/tftp/ (props changed) projects/graid/7/usr.bin/tip/ (props changed) projects/graid/7/usr.bin/top/ (props changed) projects/graid/7/usr.bin/truncate/ (props changed) projects/graid/7/usr.bin/truss/ (props changed) projects/graid/7/usr.bin/uname/ (props changed) projects/graid/7/usr.bin/unifdef/ (props changed) projects/graid/7/usr.bin/units/ (props changed) projects/graid/7/usr.bin/uudecode/ (props changed) projects/graid/7/usr.bin/vmstat/ (props changed) projects/graid/7/usr.bin/w/ (props changed) projects/graid/7/usr.bin/wc/ (props changed) projects/graid/7/usr.bin/whereis/ (props changed) projects/graid/7/usr.bin/whois/ (props changed) projects/graid/7/usr.bin/window/ (props changed) projects/graid/7/usr.bin/xargs/ (props changed) projects/graid/7/usr.bin/ypcat/ (props changed) projects/graid/7/usr.bin/ypmatch/ (props changed) projects/graid/7/usr.bin/ypwhich/ (props changed) projects/graid/7/usr.sbin/ (props changed) projects/graid/7/usr.sbin/Makefile (props changed) projects/graid/7/usr.sbin/acpi/ (props changed) projects/graid/7/usr.sbin/adduser/ (props changed) projects/graid/7/usr.sbin/arp/ (props changed) projects/graid/7/usr.sbin/bluetooth/ (props changed) projects/graid/7/usr.sbin/bluetooth/btpand/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcsecd/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcseriald/ (props changed) projects/graid/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) projects/graid/7/usr.sbin/bluetooth/sdpd/ (props changed) projects/graid/7/usr.sbin/boot0cfg/ (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/graid/7/usr.sbin/burncd/ (props changed) projects/graid/7/usr.sbin/cdcontrol/ (props changed) projects/graid/7/usr.sbin/chown/ (props changed) projects/graid/7/usr.sbin/chroot/ (props changed) projects/graid/7/usr.sbin/config/ (props changed) projects/graid/7/usr.sbin/config/SMM.doc/ (props changed) projects/graid/7/usr.sbin/cpucontrol/ (props changed) projects/graid/7/usr.sbin/crashinfo/ (props changed) projects/graid/7/usr.sbin/cron/ (props changed) projects/graid/7/usr.sbin/cron/cron/ (props changed) projects/graid/7/usr.sbin/crunch/ (props changed) projects/graid/7/usr.sbin/cxgbtool/ (props changed) projects/graid/7/usr.sbin/eeprom/ (props changed) projects/graid/7/usr.sbin/extattr/ (props changed) projects/graid/7/usr.sbin/faithd/ (props changed) projects/graid/7/usr.sbin/fdcontrol/ (props changed) projects/graid/7/usr.sbin/fdformat/ (props changed) projects/graid/7/usr.sbin/fdread/ (props changed) projects/graid/7/usr.sbin/fdwrite/ (props changed) projects/graid/7/usr.sbin/fifolog/ (props changed) projects/graid/7/usr.sbin/freebsd-update/ (props changed) projects/graid/7/usr.sbin/fwcontrol/ (props changed) projects/graid/7/usr.sbin/gstat/ (props changed) projects/graid/7/usr.sbin/iostat/ (props changed) projects/graid/7/usr.sbin/jail/ (props changed) projects/graid/7/usr.sbin/jexec/ (props changed) projects/graid/7/usr.sbin/jls/ (props changed) projects/graid/7/usr.sbin/lpr/ (props changed) projects/graid/7/usr.sbin/mailwrapper/ (props changed) projects/graid/7/usr.sbin/makefs/ (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/7/usr.sbin/makefs/getid.c (props changed) projects/graid/7/usr.sbin/mergemaster/ (props changed) projects/graid/7/usr.sbin/mfiutil/ (props changed) projects/graid/7/usr.sbin/mountd/ (props changed) projects/graid/7/usr.sbin/mptutil/ (props changed) projects/graid/7/usr.sbin/mtree/ (props changed) projects/graid/7/usr.sbin/ndiscvt/ (props changed) projects/graid/7/usr.sbin/ndp/ (props changed) projects/graid/7/usr.sbin/newsyslog/ (props changed) projects/graid/7/usr.sbin/nscd/ (props changed) projects/graid/7/usr.sbin/ntp/ (props changed) projects/graid/7/usr.sbin/pciconf/ (props changed) projects/graid/7/usr.sbin/pkg_install/ (props changed) projects/graid/7/usr.sbin/pmccontrol/ (props changed) projects/graid/7/usr.sbin/pmcstat/ (props changed) projects/graid/7/usr.sbin/portsnap/ (props changed) projects/graid/7/usr.sbin/powerd/ (props changed) projects/graid/7/usr.sbin/ppp/ (props changed) projects/graid/7/usr.sbin/pstat/ (props changed) projects/graid/7/usr.sbin/pw/ (props changed) projects/graid/7/usr.sbin/pwd_mkdb/ (props changed) projects/graid/7/usr.sbin/rpc.lockd/ (props changed) projects/graid/7/usr.sbin/rpc.statd/ (props changed) projects/graid/7/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/7/usr.sbin/rtadvd/ (props changed) projects/graid/7/usr.sbin/rtsold/ (props changed) projects/graid/7/usr.sbin/sade/ (props changed) projects/graid/7/usr.sbin/service/ (props changed) projects/graid/7/usr.sbin/setfib/ (props changed) projects/graid/7/usr.sbin/sysinstall/ (props changed) projects/graid/7/usr.sbin/syslogd/ (props changed) projects/graid/7/usr.sbin/traceroute/ (props changed) projects/graid/7/usr.sbin/traceroute6/ (props changed) projects/graid/7/usr.sbin/tzsetup/ (props changed) projects/graid/7/usr.sbin/ugidfw/ (props changed) projects/graid/7/usr.sbin/wpa/wpa_supplicant/ (props changed) projects/graid/7/usr.sbin/ypserv/ (props changed) projects/graid/7/usr.sbin/zic/ (props changed) Modified: projects/graid/7/sbin/geom/class/raid/geom_raid.c ============================================================================== --- projects/graid/7/sbin/geom/class/raid/geom_raid.c Thu Feb 10 14:46:37 2011 (r218521) +++ projects/graid/7/sbin/geom/class/raid/geom_raid.c Thu Feb 10 15:07:17 2011 (r218522) @@ -49,19 +49,21 @@ static intmax_t zero = 0; struct g_command class_commands[] = { { "label", G_FLAG_VERBOSE, NULL, { + { 'f', "force", NULL, G_TYPE_BOOL }, { 'S', "size", &zero, G_TYPE_NUMBER }, { 's', "strip", &zero, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - NULL, "[-S size] [-s stripsize] format label level prov ..." + NULL, "[-fv] [-S size] [-s stripsize] format label level prov ..." }, { "add", G_FLAG_VERBOSE, NULL, { + { 'f', "force", NULL, G_TYPE_BOOL }, { 'S', "size", &zero, G_TYPE_NUMBER }, { 's', "strip", &zero, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - NULL, "[-S size] [-s stripsize] name label level" + NULL, "[-fv] [-S size] [-s stripsize] name label level" }, { "delete", G_FLAG_VERBOSE, NULL, { Modified: projects/graid/7/sbin/geom/class/raid/graid.8 ============================================================================== --- projects/graid/7/sbin/geom/class/raid/graid.8 Thu Feb 10 14:46:37 2011 (r218521) +++ projects/graid/7/sbin/geom/class/raid/graid.8 Thu Feb 10 15:07:17 2011 (r218522) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 5, 2011 +.Dd February 10, 2011 .Dt GRAID 8 .Os .Sh NAME @@ -33,6 +33,7 @@ .Sh SYNOPSIS .Nm .Cm label +.Op Fl f .Op Fl S Ar size .Op Fl s Ar strip .Ar format @@ -41,6 +42,7 @@ .Ar prov ... .Nm .Cm add +.Op Fl f .Op Fl S Ar size .Op Fl s Ar strip .Ar name @@ -114,6 +116,9 @@ and metadata format. .Pp Additional options include: .Bl -tag -width ".Fl s Ar strip" +.It Fl f +Enforce specified configuration creation if it is officially unsupported, +but technically can be created. .It Fl S Ar size Use .Ar size @@ -200,6 +205,8 @@ The format used by Intel RAID BIOS. Supports up to two volumes per array. Supports configurations: RAID0 (2+ disks), RAID1 (2 disks), RAID5 (3+ disks), RAID10 (4 disks). +Configurations not supported by Intel RAID BIOS, but enforsable on your own +risk: RAID1 (3+ disks), RAID1E (3+ disks), RAID10 (6+ disks). .El .Sh SUPPORTED RAID LEVELS The GEOM RAID class follows a modular design, allowing different RAID levels Modified: projects/graid/7/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.c Thu Feb 10 14:46:37 2011 (r218521) +++ projects/graid/7/sys/geom/raid/g_raid.c Thu Feb 10 15:07:17 2011 (r218522) @@ -275,8 +275,6 @@ g_raid_volume_level2str(int level, int q return ("RAID5"); case G_RAID_VOLUME_RL_RAID6: return ("RAID6"); - case G_RAID_VOLUME_RL_RAID10: - return ("RAID10"); case G_RAID_VOLUME_RL_RAID1E: return ("RAID1E"); case G_RAID_VOLUME_RL_SINGLE: @@ -310,9 +308,8 @@ g_raid_volume_str2level(const char *str, *level = G_RAID_VOLUME_RL_RAID5; else if (strcasecmp(str, "RAID6") == 0) *level = G_RAID_VOLUME_RL_RAID6; - else if (strcasecmp(str, "RAID10") == 0) - *level = G_RAID_VOLUME_RL_RAID10; - else if (strcasecmp(str, "RAID1E") == 0) + else if (strcasecmp(str, "RAID10") == 0 || + strcasecmp(str, "RAID1E") == 0) *level = G_RAID_VOLUME_RL_RAID1E; else if (strcasecmp(str, "SINGLE") == 0) *level = G_RAID_VOLUME_RL_SINGLE; @@ -909,6 +906,7 @@ g_raid_start_request(struct bio *bp) sc = bp->bio_to->geom->softc; sx_assert(&sc->sc_lock, SX_LOCKED); vol = bp->bio_to->private; + /* * Check to see if this item is in a locked range. If so, * queue it to our locked queue and return. We'll requeue @@ -1072,7 +1070,7 @@ void g_raid_subdisk_iostart(struct g_raid_subdisk *sd, struct bio *bp) { struct g_consumer *cp; - struct g_raid_disk *disk; + struct g_raid_disk *disk, *tdisk; bp->bio_caller1 = sd; @@ -1102,6 +1100,17 @@ nodisk: bp->bio_from = cp; bp->bio_to = cp->provider; cp->index++; + + /* Update average disks load. */ + TAILQ_FOREACH(tdisk, &sd->sd_softc->sc_disks, d_next) { + if (tdisk->d_consumer == NULL) + tdisk->d_load = 0; + else + tdisk->d_load = (tdisk->d_consumer->index * + G_RAID_SUBDISK_LOAD_SCALE + tdisk->d_load * 7) / 8; + } + + disk->d_last_offset = bp->bio_offset + bp->bio_length; if (dumping) { G_RAID_LOGREQ(3, bp, "Sending dumping request."); if (bp->bio_cmd == BIO_WRITE) { @@ -1308,10 +1317,11 @@ out: static void g_raid_launch_provider(struct g_raid_volume *vol) { -// struct g_raid_disk *disk; + struct g_raid_disk *disk; struct g_raid_softc *sc; struct g_provider *pp; char name[G_RAID_MAX_VOLUMENAME]; + off_t off; sc = vol->v_softc; sx_assert(&sc->sc_lock, SX_LOCKED); @@ -1330,14 +1340,25 @@ g_raid_launch_provider(struct g_raid_vol pp->sectorsize = vol->v_sectorsize; pp->stripesize = 0; pp->stripeoffset = 0; -#if 0 - TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { - if (disk->d_consumer && disk->d_consumer->provider && - disk->d_consumer->provider->stripesize > pp->stripesize) { + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 || + vol->v_raid_level == G_RAID_VOLUME_RL_RAID3 || + vol->v_raid_level == G_RAID_VOLUME_RL_SINGLE || + vol->v_raid_level == G_RAID_VOLUME_RL_CONCAT) { + if ((disk = vol->v_subdisks[0].sd_disk) != NULL && + disk->d_consumer != NULL && + disk->d_consumer->provider != NULL) { pp->stripesize = disk->d_consumer->provider->stripesize; + off = disk->d_consumer->provider->stripeoffset; + pp->stripeoffset = off + vol->v_subdisks[0].sd_offset; + if (off > 0) + pp->stripeoffset %= off; } - } -#endif + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID3) { + pp->stripesize *= (vol->v_disks_count - 1); + pp->stripeoffset *= (vol->v_disks_count - 1); + } + } else + pp->stripesize = vol->v_strip_size; vol->v_provider = pp; g_error_provider(pp, 0); g_topology_unlock(); Modified: projects/graid/7/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.h Thu Feb 10 14:46:37 2011 (r218521) +++ projects/graid/7/sys/geom/raid/g_raid.h Thu Feb 10 15:07:17 2011 (r218522) @@ -98,6 +98,7 @@ extern struct g_class g_raid_class; * doing some desirable action such as bad * block remapping after we detect a bad part * of the disk. + * G_RAID_BIO_FLAG_LOCKED I/O holds range lock that should re released. * * and the following meta item: * G_RAID_BIO_FLAG_SPECIAL And of the I/O flags that need to make it @@ -107,8 +108,9 @@ extern struct g_class g_raid_class; */ #define G_RAID_BIO_FLAG_SYNC 0x01 #define G_RAID_BIO_FLAG_REMAP 0x02 -#define G_RAID_BIO_FLAG_SPECIAL \ +#define G_RAID_BIO_FLAG_SPECIAL \ (G_RAID_BIO_FLAG_SYNC|G_RAID_BIO_FLAG_REMAP) +#define G_RAID_BIO_FLAG_LOCKED 0x80 struct g_raid_lock { off_t l_offset; @@ -145,10 +147,11 @@ struct g_raid_disk { struct g_consumer *d_consumer; /* GEOM disk consumer. */ void *d_md_data; /* Disk's metadata storage. */ struct g_kerneldump d_kd; /* Kernel dumping method/args. */ - u_int d_state; /* Disk state. */ uint64_t d_flags; /* Additional flags. */ + u_int d_state; /* Disk state. */ u_int d_load; /* Disk average load. */ off_t d_last_offset; /* Last head offset. */ + int d_read_errs; /* Count of the read errors */ TAILQ_HEAD(, g_raid_subdisk) d_subdisks; /* List of subdisks. */ TAILQ_ENTRY(g_raid_disk) d_next; /* Next disk in the node. */ }; @@ -167,6 +170,13 @@ struct g_raid_disk { #define G_RAID_SUBDISK_E_DISCONNECTED 0x03 /* A subdisk removed from volume. */ #define G_RAID_SUBDISK_E_FIRST_TR_PRIVATE 0x80 /* translation private events */ +#define G_RAID_SUBDISK_POS(sd) \ + ((sd)->sd_disk ? ((sd)->sd_disk->d_last_offset - (sd)->sd_offset) : 0) +#define G_RAID_SUBDISK_TRACK_SIZE (1 * 1024 * 1024) +#define G_RAID_SUBDISK_LOAD(sd) \ + ((sd)->sd_disk ? ((sd)->sd_disk->d_load) : 0) +#define G_RAID_SUBDISK_LOAD_SCALE 256 + struct g_raid_subdisk { struct g_raid_softc *sd_softc; /* Back-pointer to softc. */ struct g_raid_disk *sd_disk; /* Where this subdisk lives. */ @@ -176,7 +186,7 @@ struct g_raid_subdisk { u_int sd_pos; /* Position in volume. */ u_int sd_state; /* Subdisk state. */ off_t sd_rebuild_pos; /* Rebuild position. */ - int sd_read_errs; /* Count of the read errors */ + int sd_recovery; /* Count of recovery reqs. */ TAILQ_ENTRY(g_raid_subdisk) sd_next; /* Next subdisk on disk. */ }; @@ -206,7 +216,6 @@ struct g_raid_subdisk { #define G_RAID_VOLUME_RL_RAID4 0x04 #define G_RAID_VOLUME_RL_RAID5 0x05 #define G_RAID_VOLUME_RL_RAID6 0x06 -#define G_RAID_VOLUME_RL_RAID10 0x0a #define G_RAID_VOLUME_RL_RAID1E 0x11 #define G_RAID_VOLUME_RL_SINGLE 0x0f #define G_RAID_VOLUME_RL_CONCAT 0x1f Modified: projects/graid/7/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/7/sys/geom/raid/md_intel.c Thu Feb 10 14:46:37 2011 (r218521) +++ projects/graid/7/sys/geom/raid/md_intel.c Thu Feb 10 15:07:17 2011 (r218522) @@ -568,6 +568,43 @@ g_raid_md_intel_get_disk(struct g_raid_s return (disk); } +static int +g_raid_md_intel_supported(int level, int qual, int disks, int force) +{ + + switch (level) { + case G_RAID_VOLUME_RL_RAID0: + if (disks < 1) + return (0); + if (!force && (disks < 2 || disks > 6)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID1: + if (disks < 1) + return (0); + if (!force && (disks != 2)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID1E: + if (disks < 3) + return (0); + if (!force && (disks != 4)) + return (0); + break; + case G_RAID_VOLUME_RL_RAID5: + if (disks < 3) + return (0); + if (!force && disks > 6) + return (0); + break; + default: + return (0); + } + if (qual != G_RAID_VOLUME_RLQ_NONE) + return (0); + return (1); +} + static struct g_raid_volume * g_raid_md_intel_get_volume(struct g_raid_softc *sc, int id) { @@ -898,11 +935,20 @@ g_raid_md_intel_start(struct g_raid_soft if (mmap->type == INTEL_T_RAID0) vol->v_raid_level = G_RAID_VOLUME_RL_RAID0; else if (mmap->type == INTEL_T_RAID1 && - mmap->total_disks < 4) /* >= 4 disks -> RAID10 */ - vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; - else if (mmap->type == INTEL_T_RAID1) /* SIC */ - vol->v_raid_level = G_RAID_VOLUME_RL_RAID10; - else if (mmap->type == INTEL_T_RAID5) + mmap->total_domains >= 2 && + mmap->total_domains <= mmap->total_disks) { + /* Assume total_domains is correct. */ + if (mmap->total_domains == mmap->total_disks) + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; + else + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E; + } else if (mmap->type == INTEL_T_RAID1) { + /* total_domains looks wrong. */ + if (mmap->total_disks <= 2) + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1; + else + vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E; + } else if (mmap->type == INTEL_T_RAID5) vol->v_raid_level = G_RAID_VOLUME_RL_RAID5; else vol->v_raid_level = G_RAID_VOLUME_RL_UNKNOWN; @@ -954,6 +1000,8 @@ g_raid_md_intel_start(struct g_raid_soft } while (disk != NULL); mdi->mdio_started = 1; + G_RAID_DEBUG1(0, sc, "Array started."); + g_raid_md_write_intel(md, NULL, NULL, NULL); /* Pickup any STALE/SPARE disks to refill array if needed. */ g_raid_md_intel_refill(sc); @@ -1348,16 +1396,17 @@ g_raid_md_ctl_intel(struct g_raid_md_obj gctl_error(req, "Unknown RAID level '%s'.", levelname); return (-4); } - if (level != G_RAID_VOLUME_RL_RAID0 && - level != G_RAID_VOLUME_RL_RAID1 && - level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID10) { - gctl_error(req, "Unsupported RAID level."); + numdisks = *nargs - 3; + force = gctl_get_paraml(req, "force", sizeof(*force)); + if (!g_raid_md_intel_supported(level, qual, numdisks, + force ? *force : 0)) { + gctl_error(req, "Unsupported RAID level " + "(0x%02x/0x%02x), or number of disks (%d).", + level, qual, numdisks); return (-5); } /* Search for disks, connect them and probe. */ - numdisks = *nargs - 3; size = 0x7fffffffffffffffllu; sectorsize = 0; for (i = 0; i < numdisks; i++) { @@ -1515,8 +1564,10 @@ makedisk: vol->v_mediasize = size; else if (level == G_RAID_VOLUME_RL_RAID5) vol->v_mediasize = size * (numdisks - 1); - else /* RAID10 */ - vol->v_mediasize = size * (numdisks / 2); + else { /* RAID1E */ + vol->v_mediasize = ((size * numdisks) / strip / 2) * + strip; + } vol->v_sectorsize = sectorsize; g_raid_start_volume(vol); @@ -1541,6 +1592,7 @@ makedisk: } /* Write metadata based on created entities. */ + G_RAID_DEBUG1(0, sc, "Array started."); g_raid_md_write_intel(md, NULL, NULL, NULL); /* Pickup any STALE/SPARE disks to refill array if needed. */ @@ -1570,13 +1622,6 @@ makedisk: gctl_error(req, "Unknown RAID level '%s'.", levelname); return (-4); } - if (level != G_RAID_VOLUME_RL_RAID0 && - level != G_RAID_VOLUME_RL_RAID1 && - level != G_RAID_VOLUME_RL_RAID5 && - level != G_RAID_VOLUME_RL_RAID10) { - gctl_error(req, "Unsupported RAID level."); - return (-5); - } /* Look for existing volumes. */ i = 0; @@ -1594,10 +1639,19 @@ makedisk: return (-7); } + numdisks = vol1->v_disks_count; + force = gctl_get_paraml(req, "force", sizeof(*force)); + if (!g_raid_md_intel_supported(level, qual, numdisks, + force ? *force : 0)) { + gctl_error(req, "Unsupported RAID level " + "(0x%02x/0x%02x), or number of disks (%d).", + level, qual, numdisks); + return (-5); + } + /* Collect info about present disks. */ size = 0x7fffffffffffffffllu; sectorsize = 512; - numdisks = vol1->v_disks_count; for (i = 0; i < numdisks; i++) { disk = vol1->v_subdisks[i].sd_disk; pd = (struct g_raid_md_intel_perdisk *) @@ -1692,8 +1746,10 @@ makedisk: vol->v_mediasize = size; else if (level == G_RAID_VOLUME_RL_RAID5) vol->v_mediasize = size * (numdisks - 1); - else /* RAID10 */ - vol->v_mediasize = size * (numdisks / 2); + else { /* RAID1E */ + vol->v_mediasize = ((size * numdisks) / strip / 2) * + strip; + } vol->v_sectorsize = sectorsize; g_raid_start_volume(vol); @@ -2138,15 +2194,15 @@ g_raid_md_write_intel(struct g_raid_md_o if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID0) mmap0->type = INTEL_T_RAID0; else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 || - vol->v_raid_level == G_RAID_VOLUME_RL_RAID10) + vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E) mmap0->type = INTEL_T_RAID1; else mmap0->type = INTEL_T_RAID5; mmap0->total_disks = vol->v_disks_count; - if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID10) - mmap0->total_domains = vol->v_disks_count / 2; - else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1) + if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1) mmap0->total_domains = vol->v_disks_count; + else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E) + mmap0->total_domains = 2; else mmap0->total_domains = 1; mmap0->stripe_count = sd->sd_size / vol->v_strip_size / Modified: projects/graid/7/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/7/sys/geom/raid/tr_raid1.c Thu Feb 10 14:46:37 2011 (r218521) +++ projects/graid/7/sys/geom/raid/tr_raid1.c Thu Feb 10 15:07:17 2011 (r218522) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -162,10 +163,12 @@ g_raid_tr_update_state_raid1(struct g_ra struct g_raid_subdisk *sd) { struct g_raid_tr_raid1_object *trs; + struct g_raid_softc *sc; struct g_raid_subdisk *tsd, *bestsd; u_int s; int i, na, ns; + sc = vol->v_softc; trs = (struct g_raid_tr_raid1_object *)vol->v_tr; if (trs->trso_stopping && (trs->trso_flags & TR_RAID1_F_DOING_SOME) == 0) @@ -193,13 +196,13 @@ g_raid_tr_update_state_raid1(struct g_ra } if (bestsd->sd_state >= G_RAID_SUBDISK_S_UNINITIALIZED) { /* We found reasonable candidate. */ - G_RAID_DEBUG1(1, vol->v_softc, + G_RAID_DEBUG1(1, sc, "Promote subdisk %s:%d from %s to ACTIVE.", vol->v_name, bestsd->sd_pos, g_raid_subdisk_state2str(bestsd->sd_state)); g_raid_change_subdisk_state(bestsd, G_RAID_SUBDISK_S_ACTIVE); - g_raid_write_metadata(vol->v_softc, + g_raid_write_metadata(sc, vol, bestsd, bestsd->sd_disk); } } @@ -221,11 +224,32 @@ g_raid_tr_update_state_raid1(struct g_ra G_RAID_VOLUME_E_UP : G_RAID_VOLUME_E_DOWN, G_RAID_EVENT_VOLUME); g_raid_change_volume_state(vol, s); + if (!trs->trso_starting && !trs->trso_stopping) + g_raid_write_metadata(sc, vol, NULL, NULL); } return (0); } static void +g_raid_tr_raid1_fail_disk(struct g_raid_softc *sc, struct g_raid_subdisk *sd, + struct g_raid_disk *disk) +{ + /* + * We don't fail the last disk in the pack, since it still has decent + * data on it and that's better than failing the disk if it is the root + * file system. + * + * XXX should this be controlled via a tunable? It makes sense for + * the volume that has / on it. I can't think of a case where we'd + * want the volume to go away on this kind of event. + */ + if (g_raid_nsubdisks(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE) == 1 && + g_raid_get_subdisk(sd->sd_volume, G_RAID_SUBDISK_S_ACTIVE) == sd) + return; + g_raid_fail_disk(sc, sd, disk); +} + +static void g_raid_tr_raid1_rebuild_some(struct g_raid_tr_object *tr, struct g_raid_subdisk *sd) { @@ -471,22 +495,46 @@ g_raid_tr_stop_raid1(struct g_raid_tr_ob } /* - * Select the disk to do the reads to. For now, we just pick the first one in - * the list that's active always. This ensures we favor one disk on boot, and - * have more deterministic recovery from the weird edge cases of power - * failure. In the future, we can imagine policies that go for the least - * loaded disk to improve performance, or we need to limit reads to a disk - * during some kind of error recovery with that disk. + * Select the disk to read from. Take into account: subdisk state, running + * error recovery, average disk load, head position and possible cache hits. */ +#define ABS(x) (((x) >= 0) ? (x) : (-(x))) static struct g_raid_subdisk * -g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol) +g_raid_tr_raid1_select_read_disk(struct g_raid_volume *vol, struct bio *bp, + u_int mask) { - int i; + struct g_raid_subdisk *sd, *best; + int i, prio, bestprio; - for (i = 0; i < vol->v_disks_count; i++) - if (vol->v_subdisks[i].sd_state == G_RAID_SUBDISK_S_ACTIVE) - return (&vol->v_subdisks[i]); - return (NULL); + best = NULL; + bestprio = INT_MAX; + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_state != G_RAID_SUBDISK_S_ACTIVE && + !((sd->sd_state == G_RAID_SUBDISK_S_REBUILD || + sd->sd_state == G_RAID_SUBDISK_S_RESYNC) && + bp->bio_offset + bp->bio_length < + sd->sd_rebuild_pos)) + continue; + if ((mask & (1 << i)) != 0) + continue; + prio = G_RAID_SUBDISK_LOAD(sd); + prio += min(sd->sd_recovery, 255) << 22; + prio += (G_RAID_SUBDISK_S_ACTIVE - sd->sd_state) << 16; + /* If disk head is precisely in position - highly prefer it. */ + if (G_RAID_SUBDISK_POS(sd) == bp->bio_offset) + prio -= 2 * G_RAID_SUBDISK_LOAD_SCALE; + else + /* If disk head is close to position - prefer it. */ + if (ABS(G_RAID_SUBDISK_POS(sd) - bp->bio_offset) < + G_RAID_SUBDISK_TRACK_SIZE) + prio -= 1 * G_RAID_SUBDISK_LOAD_SCALE; + if (prio < bestprio) { + best = sd; + bestprio = prio; + } + } + return (best); } static void @@ -495,7 +543,7 @@ g_raid_tr_iostart_raid1_read(struct g_ra struct g_raid_subdisk *sd; struct bio *cbp; - sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume); + sd = g_raid_tr_raid1_select_read_disk(tr->tro_volume, bp, 0); KASSERT(sd != NULL, ("No active disks in volume %s.", tr->tro_volume->v_name)); @@ -630,10 +678,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ struct g_raid_volume *vol; struct bio *pbp; struct g_raid_tr_raid1_object *trs; - int i, error; + uintptr_t *mask; + int error, do_write; trs = (struct g_raid_tr_raid1_object *)tr; - pbp = bp->bio_parent; + vol = tr->tro_volume; if (bp->bio_cflags & G_RAID_BIO_FLAG_SYNC) { /* * This operation is part of a rebuild or resync operation. @@ -650,20 +699,30 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * 5MB of data, for inactive ones, we do 50MB. */ if (trs->trso_type == TR_RAID1_REBUILD) { - vol = tr->tro_volume; if (bp->bio_cmd == BIO_READ) { + + /* Immediately abort rebuild, if requested. */ + if (trs->trso_flags & TR_RAID1_F_ABORT) { + trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; + g_raid_tr_raid1_rebuild_abort(tr); + return; + } + + /* On read error, skip and cross fingers. */ + if (bp->bio_error != 0) { + G_RAID_LOGREQ(0, bp, + "Read error during rebuild (%d), " + "possible data loss!", + bp->bio_error); + goto rebuild_round_done; + } + /* * The read operation finished, queue the * write and get out. */ G_RAID_LOGREQ(4, bp, "rebuild read done. %d", bp->bio_error); - if (bp->bio_error != 0 || - trs->trso_flags & TR_RAID1_F_ABORT) { - trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; - g_raid_tr_raid1_rebuild_abort(tr); - return; - } bp->bio_cmd = BIO_WRITE; bp->bio_cflags = G_RAID_BIO_FLAG_SYNC; bp->bio_offset = bp->bio_offset; @@ -685,7 +744,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ trs->trso_flags & TR_RAID1_F_ABORT) { if ((trs->trso_flags & TR_RAID1_F_ABORT) == 0) { - g_raid_fail_disk(sd->sd_softc, + g_raid_tr_raid1_fail_disk(sd->sd_softc, nsd, nsd->sd_disk); } trs->trso_flags &= ~TR_RAID1_F_DOING_SOME; @@ -693,6 +752,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ return; } /* XXX A lot of the following is needed when we kick of the work -- refactor */ +rebuild_round_done: + nsd = trs->trso_failed_sd; trs->trso_flags &= ~TR_RAID1_F_LOCKED; g_raid_unlock_range(sd->sd_volume, bp->bio_offset, bp->bio_length); @@ -749,6 +810,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ } return; } + pbp = bp->bio_parent; pbp->bio_inbed++; if (bp->bio_cmd == BIO_READ && bp->bio_error != 0) { /* @@ -756,11 +818,10 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * another disk drive, if available, before erroring out the * read. */ - vol = tr->tro_volume; - sd->sd_read_errs++; + sd->sd_disk->d_read_errs++; G_RAID_LOGREQ(0, bp, "Read error (%d), %d read errors total", - bp->bio_error, sd->sd_read_errs); + bp->bio_error, sd->sd_disk->d_read_errs); /* * If there are too many read errors, we move to degraded. @@ -768,33 +829,37 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ * everything to get it back in sync), or just degrade the * drive, which kicks off a resync? */ - if (sd->sd_read_errs > g_raid1_read_err_thresh) { - g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + do_write = 1; + if (sd->sd_disk->d_read_errs > g_raid1_read_err_thresh) { + g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); if (pbp->bio_children == 1) - goto remapdone; + do_write = 0; } /* * Find the other disk, and try to do the I/O to it. */ - for (nsd = NULL, i = 0; i < vol->v_disks_count; i++) { - if (pbp->bio_children > 1) - break; - nsd = &vol->v_subdisks[i]; - if (sd == nsd) - continue; - if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE) - continue; - cbp = g_clone_bio(pbp); - if (cbp == NULL) - break; - G_RAID_LOGREQ(2, cbp, "Retrying read"); - pbp->bio_driver1 = sd; /* Save original subdisk. */ - cbp->bio_caller1 = nsd; - cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - /* Lock callback starts I/O */ - g_raid_lock_range(sd->sd_volume, - cbp->bio_offset, cbp->bio_length, pbp, cbp); + mask = (uintptr_t *)(&pbp->bio_driver2); + if (pbp->bio_children == 1) { + /* Save original subdisk. */ + pbp->bio_driver1 = do_write ? sd : NULL; + *mask = 0; + } + *mask |= 1 << sd->sd_pos; + nsd = g_raid_tr_raid1_select_read_disk(vol, pbp, *mask); + if (nsd != NULL && (cbp = g_clone_bio(pbp)) != NULL) { + G_RAID_LOGREQ(2, cbp, "Retrying read from %d", + nsd->sd_pos); + if (pbp->bio_children == 2 && do_write) { + sd->sd_recovery++; + cbp->bio_caller1 = nsd; + pbp->bio_pflags = G_RAID_BIO_FLAG_LOCKED; + /* Lock callback starts I/O */ + g_raid_lock_range(sd->sd_volume, + cbp->bio_offset, cbp->bio_length, pbp, cbp); + } else { + g_raid_subdisk_iostart(nsd, cbp); + } return; } /* @@ -805,10 +870,12 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ */ G_RAID_LOGREQ(2, bp, "Couldn't retry read, failing it"); } - if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 && - pbp->bio_children > 1) { + if (bp->bio_cmd == BIO_READ && + bp->bio_error == 0 && + pbp->bio_children > 1 && + pbp->bio_driver1 != NULL) { /* - * If it was a read, and bio_children is 2, then we just + * If it was a read, and bio_children is >1, then we just * recovered the data from the second drive. We should try to * write that data to the first drive if sector remapping is * enabled. A write should put the data in a new place on the @@ -823,16 +890,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ if (cbp != NULL) { cbp->bio_cmd = BIO_WRITE; cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP; - G_RAID_LOGREQ(3, cbp, + G_RAID_LOGREQ(2, cbp, "Attempting bad sector remap on failing drive."); g_raid_subdisk_iostart(pbp->bio_driver1, cbp); return; } } -remapdone: - if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) { + if (pbp->bio_pflags & G_RAID_BIO_FLAG_LOCKED) { /* - * We're done with a remap write, mark the range as unlocked. + * We're done with a recovery, mark the range as unlocked. * For any write errors, we agressively fail the disk since * there was both a READ and a WRITE error at this location. * Both types of errors generally indicates the drive is on @@ -840,12 +906,16 @@ remapdone: * it now. However, we need to reset error to 0 in that case * because we're not failing the original I/O which succeeded. */ - if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) { + if (bp->bio_cmd == BIO_WRITE && bp->bio_error) { G_RAID_LOGREQ(0, bp, "Remap write failed: " "failing subdisk."); - g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk); + g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); bp->bio_error = 0; } + if (pbp->bio_driver1 != NULL) { + ((struct g_raid_subdisk *)pbp->bio_driver1) + ->sd_recovery--; + } G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error); g_raid_unlock_range(sd->sd_volume, bp->bio_offset, bp->bio_length); From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 07:26:40 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BA640106566C; Fri, 11 Feb 2011 07:26:40 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A91378FC1A; Fri, 11 Feb 2011 07:26:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1B7QetC049862; Fri, 11 Feb 2011 07:26:40 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1B7QeXi049860; Fri, 11 Feb 2011 07:26:40 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102110726.p1B7QeXi049860@svn.freebsd.org> From: Alexander Motin Date: Fri, 11 Feb 2011 07:26:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218546 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 07:26:40 -0000 Author: mav Date: Fri Feb 11 07:26:40 2011 New Revision: 218546 URL: http://svn.freebsd.org/changeset/base/218546 Log: Add some safety belts against g_raid_fail_disk() misuse. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 07:26:17 2011 (r218545) +++ projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 07:26:40 2011 (r218546) @@ -1961,6 +1961,17 @@ void g_raid_fail_disk(struct g_raid_soft struct g_raid_subdisk *sd, struct g_raid_disk *disk) { + if (disk == NULL) + disk = sd->sd_disk; + if (disk == NULL) { + G_RAID_DEBUG1(0, sc, "Warning! Fail request to an absent disk!"); + return; + } + if (disk->d_state != G_RAID_DISK_S_ACTIVE) { + G_RAID_DEBUG1(0, sc, "Warning! Fail request to a disk in a " + "wrong state (%s)!", g_raid_disk_state2str(disk->d_state)); + return; + } if (sc->sc_md) G_RAID_MD_FAIL_DISK(sc->sc_md, sd, disk); } From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 07:46:55 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3EC18106564A; Fri, 11 Feb 2011 07:46:55 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2D1058FC0A; Fri, 11 Feb 2011 07:46:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1B7ktKu050306; Fri, 11 Feb 2011 07:46:55 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1B7kttN050304; Fri, 11 Feb 2011 07:46:55 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102110746.p1B7kttN050304@svn.freebsd.org> From: Alexander Motin Date: Fri, 11 Feb 2011 07:46:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218547 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 07:46:55 -0000 Author: mav Date: Fri Feb 11 07:46:54 2011 New Revision: 218547 URL: http://svn.freebsd.org/changeset/base/218547 Log: Report number of disk read errors and volume dirty status at `graid list`. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 07:26:40 2011 (r218546) +++ projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 07:46:54 2011 (r218547) @@ -2009,6 +2009,8 @@ g_raid_dumpconf(struct sbuf *sb, const c vol->v_strip_size); sbuf_printf(sb, "%s%s\n", indent, g_raid_volume_state2str(vol->v_state)); + sbuf_printf(sb, "%s%s\n", indent, + vol->v_dirty ? "Yes" : "No"); sx_xunlock(&sc->sc_lock); g_topology_lock(); } else if (cp != NULL) { @@ -2036,6 +2038,8 @@ g_raid_dumpconf(struct sbuf *sb, const c sbuf_printf(sb, ")"); } sbuf_printf(sb, "\n"); + sbuf_printf(sb, "%s%d\n", indent, + disk->d_read_errs); sx_xunlock(&sc->sc_lock); g_topology_lock(); } else { From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 11:22:14 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 939B3106566B; Fri, 11 Feb 2011 11:22:14 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 81B4D8FC1C; Fri, 11 Feb 2011 11:22:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1BBMEBn057814; Fri, 11 Feb 2011 11:22:14 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1BBMEIh057808; Fri, 11 Feb 2011 11:22:14 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201102111122.p1BBMEIh057808@svn.freebsd.org> From: Jeff Roberson Date: Fri, 11 Feb 2011 11:22:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218552 - projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 11:22:14 -0000 Author: jeff Date: Fri Feb 11 11:22:14 2011 New Revision: 218552 URL: http://svn.freebsd.org/changeset/base/218552 Log: - Eliminate zero length mbufs when loading the tx descriptor. These cause the driver to hang. The stack creates them when making ip fragments for unknown reasons. - Make it safe to poll tx completions without the device lock held. This significantly improves TCP performance. - I had erroneously set the mtu based on the receive size which includes the GRH. Correct this. Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Fri Feb 11 10:50:33 2011 (r218551) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Fri Feb 11 11:22:14 2011 (r218552) @@ -91,7 +91,7 @@ /* constants */ #define INFINIBAND_ALEN 20 /* Octets in IPoIB HW addr */ -#define MAX_MB_FRAGS (8192 / MCLBYTES) +#define MAX_MB_FRAGS ((8192 / MCLBYTES) + 2) #ifdef IPOIB_CM #define CONFIG_INFINIBAND_IPOIB_CM @@ -99,6 +99,7 @@ #ifdef IPOIB_DEBUG #define CONFIG_INFINIBAND_IPOIB_DEBUG +#define CONFIG_INFINIBAND_IPOIB_DEBUG_DATA #endif enum ipoib_flush_level { @@ -110,7 +111,6 @@ enum ipoib_flush_level { enum { IPOIB_ENCAP_LEN = 4, IPOIB_HEADER_LEN = IPOIB_ENCAP_LEN + INFINIBAND_ALEN, - IPOIB_UD_HEAD_SIZE = IB_GRH_BYTES + IPOIB_ENCAP_LEN, IPOIB_UD_RX_SG = 1, /* max buffer needed for 4K mtu */ IPOIB_CM_MAX_MTU = MJUM16BYTES, @@ -286,7 +286,6 @@ struct ipoib_cm_dev_priv { struct ifqueue mb_queue; struct list_head start_list; struct list_head reap_list; - struct ib_wc ibwc[IPOIB_NUM_WC]; struct ib_sge rx_sge[IPOIB_CM_RX_SG]; struct ib_recv_wr rx_wr; int nonsrq_conn_qp; @@ -414,7 +413,7 @@ struct ipoib_path { }; /* UD Only transmits encap len but we want the two sizes to be symmetrical. */ -#define IPOIB_UD_MTU(ib_mtu) (ib_mtu - IB_GRH_BYTES) +#define IPOIB_UD_MTU(ib_mtu) (ib_mtu - IPOIB_ENCAP_LEN) #define IPOIB_CM_MTU(ib_mtu) (ib_mtu - IPOIB_ENCAP_LEN) #define IPOIB_IS_MULTICAST(addr) ((addr)[4] == 0xff) @@ -519,6 +518,8 @@ void ipoib_drain_cq(struct ipoib_dev_pri int ipoib_dma_map_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req); void ipoib_dma_unmap_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req); +int ipoib_poll_tx(struct ipoib_dev_priv *priv); + void ipoib_set_ethtool_ops(struct ifnet *dev); int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca); Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c Fri Feb 11 10:50:33 2011 (r218551) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c Fri Feb 11 11:22:14 2011 (r218552) @@ -94,6 +94,7 @@ static int ipoib_cm_post_receive_srq(str priv->cm.rx_wr.wr_id = id | IPOIB_OP_CM | IPOIB_OP_RECV; priv->cm.rx_sge[0].addr = priv->cm.srq_ring[id].mapping[0]; + priv->cm.rx_sge[0].length = priv->cm.max_cm_mtu; ret = ib_post_srq_recv(priv->cm.srq, &priv->cm.rx_wr, &bad_wr); if (unlikely(ret)) { @@ -117,6 +118,7 @@ static int ipoib_cm_post_receive_nonsrq( wr->wr_id = id | IPOIB_OP_CM | IPOIB_OP_RECV; sge[0].addr = rx->rx_ring[id].mapping[0]; + priv->cm.rx_sge[0].length = priv->cm.max_cm_mtu; ret = ib_post_recv(rx->qp, wr, &bad_wr); if (unlikely(ret)) { @@ -505,11 +507,13 @@ void ipoib_cm_handle_rx_wc(struct ipoib_ if (unlikely(wr_id >= ipoib_recvq_size)) { if (wr_id == (IPOIB_CM_RX_DRAIN_WRID & ~(IPOIB_OP_CM | IPOIB_OP_RECV))) { + spin_lock(&priv->lock); list_splice_init(&priv->cm.rx_drain_list, &priv->cm.rx_reap_list); ipoib_cm_start_rx_drain(priv); if (priv->cm.id != NULL) queue_work(ipoib_workqueue, &priv->cm.rx_reap_task); + spin_unlock(&priv->lock); } else ipoib_warn(priv, "cm recv completion event with wrid %d (> %d)\n", wr_id, ipoib_recvq_size); @@ -532,8 +536,10 @@ void ipoib_cm_handle_rx_wc(struct ipoib_ goto repost; else { if (!--p->recv_count) { + spin_lock(&priv->lock); list_move(&p->list, &priv->cm.rx_reap_list); queue_work(ipoib_workqueue, &priv->cm.rx_reap_task); + spin_unlock(&priv->lock); } return; } @@ -574,13 +580,9 @@ void ipoib_cm_handle_rx_wc(struct ipoib_ mb->m_pkthdr.rcvif = dev; proto = *mtod(mb, uint16_t *); m_adj(mb, IPOIB_ENCAP_LEN); - if (test_bit(IPOIB_FLAG_CSUM, &priv->flags) && likely(wc->csum_ok)) - mb->m_pkthdr.csum_flags = CSUM_IP_CHECKED | CSUM_IP_VALID; IPOIB_MTAP_PROTO(dev, mb, proto); - spin_unlock(&priv->lock); ipoib_demux(dev, mb, ntohs(proto)); - spin_lock(&priv->lock); repost: if (has_srq) { @@ -626,8 +628,11 @@ void ipoib_cm_send(struct ipoib_dev_priv struct ipoib_tx_buf *tx_req; struct ifnet *dev = priv->dev; + if (unlikely(priv->tx_outstanding > MAX_SEND_CQE)) + while (ipoib_poll_tx(priv)); /* nothing */ + m_adj(mb, sizeof(struct ipoib_pseudoheader)); - if (unlikely(mb->m_pkthdr.len > IPOIB_CM_MTU(tx->mtu))) { + if (unlikely(mb->m_pkthdr.len > tx->mtu)) { ipoib_warn(priv, "packet len %d (> %d) too long to send, dropping\n", mb->m_pkthdr.len, tx->mtu); ++dev->if_oerrors; @@ -655,11 +660,6 @@ void ipoib_cm_send(struct ipoib_dev_priv return; } - if (mb->m_pkthdr.csum_flags & (CSUM_IP|CSUM_TCP|CSUM_UDP)) - priv->tx_wr.send_flags |= IB_SEND_IP_CSUM; - else - priv->tx_wr.send_flags &= ~IB_SEND_IP_CSUM; - if (unlikely(post_send(priv, tx, tx_req, tx->tx_head & (ipoib_sendq_size - 1)))) { ipoib_warn(priv, "post_send failed\n"); ++dev->if_oerrors; @@ -676,6 +676,7 @@ void ipoib_cm_send(struct ipoib_dev_priv dev->if_drv_flags |= IFF_DRV_OACTIVE; } } + } void ipoib_cm_handle_tx_wc(struct ipoib_dev_priv *priv, struct ib_wc *wc) @@ -936,7 +937,7 @@ static struct ib_qp *ipoib_cm_create_tx_ struct ipoib_cm_tx *tx) { struct ib_qp_init_attr attr = { - .send_cq = priv->recv_cq, + .send_cq = priv->send_cq, .recv_cq = priv->recv_cq, .srq = priv->cm.srq, .cap.max_send_wr = ipoib_sendq_size, Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c Fri Feb 11 10:50:33 2011 (r218551) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c Fri Feb 11 11:22:14 2011 (r218552) @@ -90,8 +90,8 @@ void ipoib_free_ah(struct kref *kref) static void ipoib_ud_dma_unmap_rx(struct ipoib_dev_priv *priv, u64 mapping[IPOIB_UD_RX_SG]) { - ib_dma_unmap_single(priv->ca, mapping[0], priv->max_ib_mtu, - DMA_FROM_DEVICE); + ib_dma_unmap_single(priv->ca, mapping[0], + priv->max_ib_mtu + IB_GRH_BYTES, DMA_FROM_DEVICE); } static void ipoib_ud_mb_put_frags(struct ipoib_dev_priv *priv, @@ -110,6 +110,8 @@ static int ipoib_ib_post_receive(struct priv->rx_wr.wr_id = id | IPOIB_OP_RECV; priv->rx_sge[0].addr = priv->rx_ring[id].mapping[0]; + priv->rx_sge[0].length = priv->max_ib_mtu + IB_GRH_BYTES; + ret = ib_post_recv(priv->qp, &priv->rx_wr, &bad_wr); if (unlikely(ret)) { @@ -131,7 +133,7 @@ static struct mbuf *ipoib_alloc_rx_mb(st /* * XXX Should be calculated once and cached. */ - buf_size = priv->max_ib_mtu; + buf_size = priv->max_ib_mtu + IB_GRH_BYTES; if (buf_size <= MCLBYTES) buf_size = MCLBYTES; else if (buf_size <= MJUMPAGESIZE) @@ -198,13 +200,18 @@ ipoib_ib_handle_rx_wc(struct ipoib_dev_p mb = priv->rx_ring[wr_id].mb; if (unlikely(wc->status != IB_WC_SUCCESS)) { - if (wc->status != IB_WC_WR_FLUSH_ERR) + if (wc->status != IB_WC_WR_FLUSH_ERR) { ipoib_warn(priv, "failed recv event " "(status=%d, wrid=%d vend_err %x)\n", wc->status, wr_id, wc->vendor_err); - ipoib_ud_dma_unmap_rx(priv, priv->rx_ring[wr_id].mapping); - m_freem(mb); - priv->rx_ring[wr_id].mb = NULL; + goto repost; + } + if (mb) { + ipoib_ud_dma_unmap_rx(priv, + priv->rx_ring[wr_id].mapping); + m_freem(mb); + priv->rx_ring[wr_id].mb = NULL; + } return; } @@ -243,9 +250,7 @@ ipoib_ib_handle_rx_wc(struct ipoib_dev_p if (test_bit(IPOIB_FLAG_CSUM, &priv->flags) && likely(wc->csum_ok)) mb->m_pkthdr.csum_flags = CSUM_IP_CHECKED | CSUM_IP_VALID; - spin_unlock(&priv->lock); dev->if_input(dev, mb); - spin_lock(&priv->lock); repost: if (unlikely(ipoib_ib_post_receive(priv, wr_id))) @@ -257,11 +262,19 @@ int ipoib_dma_map_tx(struct ib_device *c { struct mbuf *mb = tx_req->mb; u64 *mapping = tx_req->mapping; - struct mbuf *m; + struct mbuf *m, *p; int error; int i; - for (m = mb, i = 0; m != NULL; m = m->m_next, i++); + for (m = mb, p = NULL, i = 0; m != NULL; p = m, m = m->m_next, i++) { + if (m->m_len != 0) + continue; + if (p == NULL) + panic("ipoib_dma_map_tx: First mbuf empty\n"); + p->m_next = m_free(m); + m = p; + i--; + } i--; if (i >= MAX_MB_FRAGS) { tx_req->mb = mb = m_defrag(mb, M_DONTWAIT); @@ -339,13 +352,19 @@ static void ipoib_ib_handle_tx_wc(struct wc->status, wr_id, wc->vendor_err); } -static int poll_tx(struct ipoib_dev_priv *priv) +int +ipoib_poll_tx(struct ipoib_dev_priv *priv) { int n, i; n = ib_poll_cq(priv->send_cq, MAX_SEND_CQE, priv->send_wc); - for (i = 0; i < n; ++i) - ipoib_ib_handle_tx_wc(priv, priv->send_wc + i); + for (i = 0; i < n; ++i) { + struct ib_wc *wc = priv->send_wc + i; + if (wc->wr_id & IPOIB_OP_CM) + ipoib_cm_handle_tx_wc(priv, wc); + else + ipoib_ib_handle_tx_wc(priv, wc); + } return n == MAX_SEND_CQE; } @@ -362,13 +381,13 @@ poll_more: for (i = 0; i < n; i++) { struct ib_wc *wc = priv->ibwc + i; - if (wc->wr_id & IPOIB_OP_RECV) { - if (wc->wr_id & IPOIB_OP_CM) - ipoib_cm_handle_rx_wc(priv, wc); - else - ipoib_ib_handle_rx_wc(priv, wc); - } else - ipoib_cm_handle_tx_wc(priv, wc); + if ((wc->wr_id & IPOIB_OP_RECV) == 0) + panic("ipoib_poll: Bad wr_id 0x%jX\n", + (intmax_t)wc->wr_id); + if (wc->wr_id & IPOIB_OP_CM) + ipoib_cm_handle_rx_wc(priv, wc); + else + ipoib_ib_handle_rx_wc(priv, wc); } if (n != IPOIB_NUM_WC) @@ -384,9 +403,7 @@ void ipoib_ib_completion(struct ib_cq *c { struct ipoib_dev_priv *priv = dev_ptr; - spin_lock(&priv->lock); ipoib_poll(priv); - spin_unlock(&priv->lock); } static void drain_tx_cq(struct ipoib_dev_priv *priv) @@ -394,7 +411,7 @@ static void drain_tx_cq(struct ipoib_dev struct ifnet *dev = priv->dev; spin_lock(&priv->lock); - while (poll_tx(priv)) + while (ipoib_poll_tx(priv)) ; /* nothing */ if (dev->if_drv_flags & IFF_DRV_OACTIVE) @@ -430,6 +447,7 @@ post_send(struct ipoib_dev_priv *priv, u priv->tx_wr.wr.ud.remote_qpn = qpn; priv->tx_wr.wr.ud.ah = address; + if (head) { priv->tx_wr.wr.ud.mss = 0; /* XXX mb_shinfo(mb)->gso_size; */ priv->tx_wr.wr.ud.header = head; @@ -450,6 +468,10 @@ ipoib_send(struct ipoib_dev_priv *priv, int hlen; void *phead; + if (unlikely(priv->tx_outstanding > MAX_SEND_CQE)) + while (ipoib_poll_tx(priv)) + ; /* nothing */ + m_adj(mb, sizeof (struct ipoib_pseudoheader)); if (0 /* XXX segment offload mb_is_gso(mb) */) { /* XXX hlen = mb_transport_offset(mb) + tcp_hdrlen(mb); */ @@ -462,7 +484,7 @@ ipoib_send(struct ipoib_dev_priv *priv, } m_adj(mb, hlen); } else { - if (unlikely(mb->m_pkthdr.len > priv->mcast_mtu)) { + if (unlikely(mb->m_pkthdr.len - IPOIB_ENCAP_LEN > priv->mcast_mtu)) { ipoib_warn(priv, "packet len %d (> %d) too long to send, dropping\n", mb->m_pkthdr.len, priv->mcast_mtu); ++dev->if_oerrors; @@ -518,10 +540,6 @@ ipoib_send(struct ipoib_dev_priv *priv, address->last_send = priv->tx_head; ++priv->tx_head; } - - if (unlikely(priv->tx_outstanding > MAX_SEND_CQE)) - while (poll_tx(priv)) - ; /* nothing */ } static void __ipoib_reap_ah(struct ipoib_dev_priv *priv) @@ -681,7 +699,6 @@ void ipoib_drain_cq(struct ipoib_dev_pri { int i, n; - spin_lock(&priv->lock); do { n = ib_poll_cq(priv->recv_cq, IPOIB_NUM_WC, priv->ibwc); for (i = 0; i < n; ++i) { @@ -693,17 +710,18 @@ void ipoib_drain_cq(struct ipoib_dev_pri if (priv->ibwc[i].status == IB_WC_SUCCESS) priv->ibwc[i].status = IB_WC_WR_FLUSH_ERR; - if (priv->ibwc[i].wr_id & IPOIB_OP_RECV) { - if (priv->ibwc[i].wr_id & IPOIB_OP_CM) - ipoib_cm_handle_rx_wc(priv, priv->ibwc + i); - else - ipoib_ib_handle_rx_wc(priv, priv->ibwc + i); - } else - ipoib_cm_handle_tx_wc(priv, priv->ibwc + i); + if ((priv->ibwc[i].wr_id & IPOIB_OP_RECV) == 0) + panic("ipoib_drain_cq: Bad wrid 0x%jX\n", + (intmax_t)priv->ibwc[i].wr_id); + if (priv->ibwc[i].wr_id & IPOIB_OP_CM) + ipoib_cm_handle_rx_wc(priv, priv->ibwc + i); + else + ipoib_ib_handle_rx_wc(priv, priv->ibwc + i); } } while (n == IPOIB_NUM_WC); - while (poll_tx(priv)) + spin_lock(&priv->lock); + while (ipoib_poll_tx(priv)) ; /* nothing */ spin_unlock(&priv->lock); Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Fri Feb 11 10:50:33 2011 (r218551) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Fri Feb 11 11:22:14 2011 (r218552) @@ -596,7 +596,7 @@ path_rec_start(struct ipoib_dev_priv *pr p_rec = path->pathrec; p_rec.mtu_selector = IB_SA_GT; - switch (roundup_pow_of_two(dev->if_mtu + IB_GRH_BYTES)) { + switch (roundup_pow_of_two(dev->if_mtu + IPOIB_ENCAP_LEN)) { case 512: p_rec.mtu = IB_MTU_256; break; @@ -923,9 +923,11 @@ ipoib_set_dev_features(struct ipoib_dev_ priv->dev->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_HWCSUM; } +#if 0 if (priv->dev->features & NETIF_F_SG && priv->hca_caps & IB_DEVICE_UD_TSO) priv->dev->if_capabilities |= IFCAP_TSO4 | CSUM_TSO; #endif +#endif priv->dev->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_LINKSTATE; priv->dev->if_capenable = priv->dev->if_capabilities; Modified: projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c ============================================================================== --- projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c Fri Feb 11 10:50:33 2011 (r218551) +++ projects/ofed/head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c Fri Feb 11 11:22:14 2011 (r218552) @@ -222,7 +222,6 @@ int ipoib_transport_dev_init(struct ipoi priv->tx_wr.send_flags = IB_SEND_SIGNALED; priv->rx_sge[0].lkey = priv->mr->lkey; - priv->rx_sge[0].length = priv->max_ib_mtu; priv->rx_wr.num_sge = 1; priv->rx_wr.next = NULL; priv->rx_wr.sg_list = priv->rx_sge; From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 14:49:26 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2638C1065672; Fri, 11 Feb 2011 14:49:26 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1583E8FC16; Fri, 11 Feb 2011 14:49:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1BEnPTl063773; Fri, 11 Feb 2011 14:49:25 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1BEnPn5063771; Fri, 11 Feb 2011 14:49:25 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102111449.p1BEnPn5063771@svn.freebsd.org> From: Alexander Motin Date: Fri, 11 Feb 2011 14:49:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218569 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 14:49:26 -0000 Author: mav Date: Fri Feb 11 14:49:25 2011 New Revision: 218569 URL: http://svn.freebsd.org/changeset/base/218569 Log: Fix second volume offset/size rounding. Previous version could create intersecting volumes. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Fri Feb 11 14:44:00 2011 (r218568) +++ projects/graid/head/sys/geom/raid/md_intel.c Fri Feb 11 14:49:25 2011 (r218569) @@ -1681,19 +1681,6 @@ makedisk: size = size - (sd->sd_offset + sd->sd_size); } - /* Handle size argument. */ - len = sizeof(*sizearg); - sizearg = gctl_get_param(req, "size", &len); - if (sizearg != NULL && len == sizeof(*sizearg) && - *sizearg > 0) { - if (*sizearg > size) { - gctl_error(req, "Size too big %lld > %lld.", - (long long)*sizearg, (long long)size); - return (-9); - } - size = *sizearg; - } - /* Handle strip argument. */ strip = 131072; len = sizeof(*striparg); @@ -1716,8 +1703,23 @@ makedisk: } /* Round offset up to strip. */ - size -= ((strip - off) % strip); - off += ((strip - off) % strip); + if (off % strip != 0) { + size -= strip - off % strip; + off += strip - off % strip; + } + + /* Handle size argument. */ + len = sizeof(*sizearg); + sizearg = gctl_get_param(req, "size", &len); + if (sizearg != NULL && len == sizeof(*sizearg) && + *sizearg > 0) { + if (*sizearg > size) { + gctl_error(req, "Size too big %lld > %lld.", + (long long)*sizearg, (long long)size); + return (-9); + } + size = *sizearg; + } /* Round size down to strip or sector. */ if (level == G_RAID_VOLUME_RL_RAID1) From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 15:03:42 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8086F10656AB; Fri, 11 Feb 2011 15:03:42 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6FB1C8FC13; Fri, 11 Feb 2011 15:03:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1BF3goW064282; Fri, 11 Feb 2011 15:03:42 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1BF3gEx064280; Fri, 11 Feb 2011 15:03:42 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102111503.p1BF3gEx064280@svn.freebsd.org> From: Alexander Motin Date: Fri, 11 Feb 2011 15:03:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218572 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 15:03:42 -0000 Author: mav Date: Fri Feb 11 15:03:42 2011 New Revision: 218572 URL: http://svn.freebsd.org/changeset/base/218572 Log: Add information about subdisks into the `graid list` output. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 15:03:05 2011 (r218571) +++ projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 15:03:42 2011 (r218572) @@ -1995,7 +1995,7 @@ g_raid_dumpconf(struct sbuf *sb, const c vol = pp->private; g_topology_unlock(); sx_xlock(&sc->sc_lock); - sbuf_printf(sb, "%s%s\n", indent, + sbuf_printf(sb, "%s\n", indent, vol->v_name); sbuf_printf(sb, "%s%s\n", indent, g_raid_volume_level2str(vol->v_raid_level, @@ -2038,6 +2038,16 @@ g_raid_dumpconf(struct sbuf *sb, const c sbuf_printf(sb, ")"); } sbuf_printf(sb, "\n"); + sbuf_printf(sb, "%s", indent); + TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { + sbuf_printf(sb, "r%d(%s):%d@%ju", + sd->sd_volume->v_global_id, + sd->sd_volume->v_name, + sd->sd_pos, sd->sd_offset); + if (TAILQ_NEXT(sd, sd_next)) + sbuf_printf(sb, ", "); + } + sbuf_printf(sb, "\n"); sbuf_printf(sb, "%s%d\n", indent, disk->d_read_errs); sx_xunlock(&sc->sc_lock); From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 16:02:52 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8643C1065698; Fri, 11 Feb 2011 16:02:52 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 74AD98FC1B; Fri, 11 Feb 2011 16:02:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1BG2qhm066037; Fri, 11 Feb 2011 16:02:52 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1BG2qYn066035; Fri, 11 Feb 2011 16:02:52 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102111602.p1BG2qYn066035@svn.freebsd.org> From: Alexander Motin Date: Fri, 11 Feb 2011 16:02:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218578 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 16:02:52 -0000 Author: mav Date: Fri Feb 11 16:02:52 2011 New Revision: 218578 URL: http://svn.freebsd.org/changeset/base/218578 Log: Report subdisks in `graid list` also from provider side. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 16:02:12 2011 (r218577) +++ projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 11 16:02:52 2011 (r218578) @@ -1984,7 +1984,7 @@ g_raid_dumpconf(struct sbuf *sb, const c struct g_raid_volume *vol; struct g_raid_subdisk *sd; struct g_raid_disk *disk; - int s; + int i, s; g_topology_assert(); @@ -2011,6 +2011,29 @@ g_raid_dumpconf(struct sbuf *sb, const c g_raid_volume_state2str(vol->v_state)); sbuf_printf(sb, "%s%s\n", indent, vol->v_dirty ? "Yes" : "No"); + sbuf_printf(sb, "%s", indent); + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_disk != NULL && + sd->sd_disk->d_consumer != NULL) { + sbuf_printf(sb, "%s ", + g_raid_get_diskname(sd->sd_disk)); + } else { + sbuf_printf(sb, "NONE "); + } + sbuf_printf(sb, "(%s", + g_raid_subdisk_state2str(sd->sd_state)); + if (sd->sd_state == G_RAID_SUBDISK_S_REBUILD || + sd->sd_state == G_RAID_SUBDISK_S_RESYNC) { + sbuf_printf(sb, " %d%%", + (int)(sd->sd_rebuild_pos * 100 / + sd->sd_size)); + } + sbuf_printf(sb, ")"); + if (i + 1 < vol->v_disks_count) + sbuf_printf(sb, ", "); + } + sbuf_printf(sb, "\n"); sx_xunlock(&sc->sc_lock); g_topology_lock(); } else if (cp != NULL) { From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 16:11:42 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA99A1065670; Fri, 11 Feb 2011 16:11:42 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B60EF8FC12; Fri, 11 Feb 2011 16:11:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1BGBg0S066356; Fri, 11 Feb 2011 16:11:42 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1BGBgI1066353; Fri, 11 Feb 2011 16:11:42 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102111611.p1BGBgI1066353@svn.freebsd.org> From: Alexander Motin Date: Fri, 11 Feb 2011 16:11:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218579 - in projects/graid/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib lib/liblzma lib/librtld_db lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/sched ... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 16:11:43 -0000 Author: mav Date: Fri Feb 11 16:11:42 2011 New Revision: 218579 URL: http://svn.freebsd.org/changeset/base/218579 Log: MFH r218546, r218547, r218569, r218572, r218578 Modified: projects/graid/8/sys/geom/raid/g_raid.c projects/graid/8/sys/geom/raid/md_intel.c Directory Properties: projects/graid/8/ (props changed) projects/graid/8/COPYRIGHT (props changed) projects/graid/8/LOCKS (props changed) projects/graid/8/MAINTAINERS (props changed) projects/graid/8/Makefile (props changed) projects/graid/8/Makefile.inc1 (props changed) projects/graid/8/ObsoleteFiles.inc (props changed) projects/graid/8/README (props changed) projects/graid/8/UPDATING (props changed) projects/graid/8/bin/ (props changed) projects/graid/8/bin/chio/ (props changed) projects/graid/8/bin/chmod/ (props changed) projects/graid/8/bin/cp/ (props changed) projects/graid/8/bin/csh/ (props changed) projects/graid/8/bin/date/ (props changed) projects/graid/8/bin/echo/ (props changed) projects/graid/8/bin/expr/ (props changed) projects/graid/8/bin/getfacl/ (props changed) projects/graid/8/bin/kill/ (props changed) projects/graid/8/bin/ln/ (props changed) projects/graid/8/bin/ls/ (props changed) projects/graid/8/bin/mv/ (props changed) projects/graid/8/bin/pax/ (props changed) projects/graid/8/bin/pkill/ (props changed) projects/graid/8/bin/ps/ (props changed) projects/graid/8/bin/pwait/ (props changed) projects/graid/8/bin/setfacl/ (props changed) projects/graid/8/bin/sh/ (props changed) projects/graid/8/bin/sleep/ (props changed) projects/graid/8/bin/test/ (props changed) projects/graid/8/cddl/ (props changed) projects/graid/8/cddl/compat/opensolaris/ (props changed) projects/graid/8/cddl/contrib/opensolaris/ (props changed) projects/graid/8/cddl/lib/ (props changed) projects/graid/8/cddl/lib/libnvpair/ (props changed) projects/graid/8/cddl/lib/libzpool/ (props changed) projects/graid/8/cddl/usr.bin/ (props changed) projects/graid/8/cddl/usr.sbin/ (props changed) projects/graid/8/contrib/ (props changed) projects/graid/8/contrib/amd/ (props changed) projects/graid/8/contrib/bc/ (props changed) projects/graid/8/contrib/bind9/ (props changed) projects/graid/8/contrib/binutils/ (props changed) projects/graid/8/contrib/bsnmp/ (props changed) projects/graid/8/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/8/contrib/bzip2/ (props changed) projects/graid/8/contrib/com_err/ (props changed) projects/graid/8/contrib/csup/ (props changed) projects/graid/8/contrib/cvs/ (props changed) projects/graid/8/contrib/diff/ (props changed) projects/graid/8/contrib/ee/ (props changed) projects/graid/8/contrib/expat/ (props changed) projects/graid/8/contrib/file/ (props changed) projects/graid/8/contrib/gcc/ (props changed) projects/graid/8/contrib/gcclibs/ (props changed) projects/graid/8/contrib/gdb/ (props changed) projects/graid/8/contrib/gdtoa/ (props changed) projects/graid/8/contrib/gnu-sort/ (props changed) projects/graid/8/contrib/gperf/ (props changed) projects/graid/8/contrib/groff/ (props changed) projects/graid/8/contrib/ipfilter/ (props changed) projects/graid/8/contrib/less/ (props changed) projects/graid/8/contrib/libbegemot/ (props changed) projects/graid/8/contrib/libf2c/ (props changed) projects/graid/8/contrib/libobjc/ (props changed) projects/graid/8/contrib/libpcap/ (props changed) projects/graid/8/contrib/libreadline/ (props changed) projects/graid/8/contrib/libstdc++/ (props changed) projects/graid/8/contrib/lukemftp/ (props changed) projects/graid/8/contrib/lukemftpd/ (props changed) projects/graid/8/contrib/ncurses/ (props changed) projects/graid/8/contrib/netcat/ (props changed) projects/graid/8/contrib/ngatm/ (props changed) projects/graid/8/contrib/ntp/ (props changed) projects/graid/8/contrib/nvi/ (props changed) projects/graid/8/contrib/one-true-awk/ (props changed) projects/graid/8/contrib/openbsm/ (props changed) projects/graid/8/contrib/openpam/ (props changed) projects/graid/8/contrib/opie/ (props changed) projects/graid/8/contrib/pam_modules/ (props changed) projects/graid/8/contrib/pf/ (props changed) projects/graid/8/contrib/pnpinfo/ (props changed) projects/graid/8/contrib/sendmail/ (props changed) projects/graid/8/contrib/smbfs/ (props changed) projects/graid/8/contrib/tcp_wrappers/ (props changed) projects/graid/8/contrib/tcpdump/ (props changed) projects/graid/8/contrib/tcsh/ (props changed) projects/graid/8/contrib/telnet/ (props changed) projects/graid/8/contrib/texinfo/ (props changed) projects/graid/8/contrib/top/ (props changed) projects/graid/8/contrib/top/install-sh (props changed) projects/graid/8/contrib/traceroute/ (props changed) projects/graid/8/contrib/wpa/ (props changed) projects/graid/8/contrib/xz/ (props changed) projects/graid/8/contrib/xz/AUTHORS (props changed) projects/graid/8/contrib/xz/COPYING (props changed) projects/graid/8/contrib/xz/ChangeLog (props changed) projects/graid/8/contrib/xz/FREEBSD-Xlist (props changed) projects/graid/8/contrib/xz/FREEBSD-upgrade (props changed) projects/graid/8/contrib/xz/README (props changed) projects/graid/8/contrib/xz/THANKS (props changed) projects/graid/8/contrib/xz/TODO (props changed) projects/graid/8/contrib/xz/po/ (props changed) projects/graid/8/contrib/xz/src/ (props changed) projects/graid/8/crypto/ (props changed) projects/graid/8/crypto/heimdal/ (props changed) projects/graid/8/crypto/openssh/ (props changed) projects/graid/8/crypto/openssl/ (props changed) projects/graid/8/etc/ (props changed) projects/graid/8/games/ (props changed) projects/graid/8/games/factor/ (props changed) projects/graid/8/games/fortune/ (props changed) projects/graid/8/games/grdc/ (props changed) projects/graid/8/games/pom/ (props changed) projects/graid/8/gnu/ (props changed) projects/graid/8/gnu/lib/csu/ (props changed) projects/graid/8/gnu/lib/libgcc/ (props changed) projects/graid/8/gnu/lib/libstdc++/ (props changed) projects/graid/8/gnu/usr.bin/ (props changed) projects/graid/8/gnu/usr.bin/Makefile (props changed) projects/graid/8/gnu/usr.bin/dialog/ (props changed) projects/graid/8/gnu/usr.bin/gdb/ (props changed) projects/graid/8/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/8/gnu/usr.bin/groff/ (props changed) projects/graid/8/gnu/usr.bin/patch/ (props changed) projects/graid/8/include/ (props changed) projects/graid/8/kerberos5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_krb5/ (props changed) projects/graid/8/kerberos5/lib/libgssapi_spnego/ (props changed) projects/graid/8/kerberos5/usr.bin/kdestroy/ (props changed) projects/graid/8/kerberos5/usr.bin/kpasswd/ (props changed) projects/graid/8/lib/ (props changed) projects/graid/8/lib/Makefile (props changed) projects/graid/8/lib/Makefile.inc (props changed) projects/graid/8/lib/bind/ (props changed) projects/graid/8/lib/csu/ (props changed) projects/graid/8/lib/libalias/ (props changed) projects/graid/8/lib/libarchive/ (props changed) projects/graid/8/lib/libauditd/ (props changed) projects/graid/8/lib/libautofs/ (props changed) projects/graid/8/lib/libbegemot/ (props changed) projects/graid/8/lib/libbluetooth/ (props changed) projects/graid/8/lib/libbsm/ (props changed) projects/graid/8/lib/libbsnmp/ (props changed) projects/graid/8/lib/libbz2/ (props changed) projects/graid/8/lib/libc/ (props changed) projects/graid/8/lib/libc/stdtime/ (props changed) projects/graid/8/lib/libc_r/ (props changed) projects/graid/8/lib/libcalendar/ (props changed) projects/graid/8/lib/libcam/ (props changed) projects/graid/8/lib/libcom_err/ (props changed) projects/graid/8/lib/libcompat/ (props changed) projects/graid/8/lib/libcrypt/ (props changed) projects/graid/8/lib/libdevinfo/ (props changed) projects/graid/8/lib/libdevstat/ (props changed) projects/graid/8/lib/libdisk/ (props changed) projects/graid/8/lib/libdwarf/ (props changed) projects/graid/8/lib/libedit/ (props changed) projects/graid/8/lib/libelf/ (props changed) projects/graid/8/lib/libexpat/ (props changed) projects/graid/8/lib/libfetch/ (props changed) projects/graid/8/lib/libftpio/ (props changed) projects/graid/8/lib/libgeom/ (props changed) projects/graid/8/lib/libgpib/ (props changed) projects/graid/8/lib/libgssapi/ (props changed) projects/graid/8/lib/libipsec/ (props changed) projects/graid/8/lib/libipx/ (props changed) projects/graid/8/lib/libjail/ (props changed) projects/graid/8/lib/libkiconv/ (props changed) projects/graid/8/lib/libkse/ (props changed) projects/graid/8/lib/libkvm/ (props changed) projects/graid/8/lib/liblzma/ (props changed) projects/graid/8/lib/liblzma/Makefile (props changed) projects/graid/8/lib/liblzma/Symbol.map (props changed) projects/graid/8/lib/liblzma/Versions.def (props changed) projects/graid/8/lib/liblzma/config.h (props changed) projects/graid/8/lib/libmagic/ (props changed) projects/graid/8/lib/libmd/ (props changed) projects/graid/8/lib/libmemstat/ (props changed) projects/graid/8/lib/libmilter/ (props changed) projects/graid/8/lib/libmp/ (props changed) projects/graid/8/lib/libncp/ (props changed) projects/graid/8/lib/libnetgraph/ (props changed) projects/graid/8/lib/libngatm/ (props changed) projects/graid/8/lib/libopie/ (props changed) projects/graid/8/lib/libpam/ (props changed) projects/graid/8/lib/libpcap/ (props changed) projects/graid/8/lib/libpmc/ (props changed) projects/graid/8/lib/libproc/ (props changed) projects/graid/8/lib/libradius/ (props changed) projects/graid/8/lib/librpcsec_gss/ (props changed) projects/graid/8/lib/librpcsvc/ (props changed) projects/graid/8/lib/librt/ (props changed) projects/graid/8/lib/librtld_db/ (props changed) projects/graid/8/lib/librtld_db/Makefile (props changed) projects/graid/8/lib/librtld_db/librtld_db.3 (props changed) projects/graid/8/lib/librtld_db/rtld_db.c (props changed) projects/graid/8/lib/librtld_db/rtld_db.h (props changed) projects/graid/8/lib/libsbuf/ (props changed) projects/graid/8/lib/libsdp/ (props changed) projects/graid/8/lib/libsm/ (props changed) projects/graid/8/lib/libsmb/ (props changed) projects/graid/8/lib/libsmdb/ (props changed) projects/graid/8/lib/libsmutil/ (props changed) projects/graid/8/lib/libstand/ (props changed) projects/graid/8/lib/libtacplus/ (props changed) projects/graid/8/lib/libtelnet/ (props changed) projects/graid/8/lib/libthr/ (props changed) projects/graid/8/lib/libthread_db/ (props changed) projects/graid/8/lib/libufs/ (props changed) projects/graid/8/lib/libugidfw/ (props changed) projects/graid/8/lib/libusb/ (props changed) projects/graid/8/lib/libusb/usb.h (props changed) projects/graid/8/lib/libusbhid/ (props changed) projects/graid/8/lib/libutil/ (props changed) projects/graid/8/lib/libvgl/ (props changed) projects/graid/8/lib/libwrap/ (props changed) projects/graid/8/lib/liby/ (props changed) projects/graid/8/lib/libypclnt/ (props changed) projects/graid/8/lib/libz/ (props changed) projects/graid/8/lib/libz/contrib/ (props changed) projects/graid/8/lib/msun/ (props changed) projects/graid/8/lib/ncurses/ (props changed) projects/graid/8/libexec/ (props changed) projects/graid/8/libexec/ftpd/ (props changed) projects/graid/8/libexec/rtld-elf/ (props changed) projects/graid/8/libexec/tftpd/ (props changed) projects/graid/8/release/ (props changed) projects/graid/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/8/release/picobsd/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/ (props changed) projects/graid/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed) projects/graid/8/release/picobsd/qemu/ (props changed) projects/graid/8/release/picobsd/tinyware/login/ (props changed) projects/graid/8/release/powerpc/ (props changed) projects/graid/8/rescue/ (props changed) projects/graid/8/sbin/ (props changed) projects/graid/8/sbin/atacontrol/ (props changed) projects/graid/8/sbin/bsdlabel/ (props changed) projects/graid/8/sbin/camcontrol/ (props changed) projects/graid/8/sbin/ddb/ (props changed) projects/graid/8/sbin/devd/ (props changed) projects/graid/8/sbin/devfs/ (props changed) projects/graid/8/sbin/dhclient/ (props changed) projects/graid/8/sbin/dump/ (props changed) projects/graid/8/sbin/dumpfs/ (props changed) projects/graid/8/sbin/fdisk/ (props changed) projects/graid/8/sbin/fsck/ (props changed) projects/graid/8/sbin/fsck_ffs/ (props changed) projects/graid/8/sbin/fsck_msdosfs/ (props changed) projects/graid/8/sbin/fsirand/ (props changed) projects/graid/8/sbin/geom/ (props changed) projects/graid/8/sbin/geom/class/multipath/ (props changed) projects/graid/8/sbin/geom/class/part/ (props changed) projects/graid/8/sbin/geom/class/sched/gsched.8 (props changed) projects/graid/8/sbin/geom/class/stripe/ (props changed) projects/graid/8/sbin/ggate/ (props changed) projects/graid/8/sbin/growfs/ (props changed) projects/graid/8/sbin/hastctl/ (props changed) projects/graid/8/sbin/hastd/ (props changed) projects/graid/8/sbin/ifconfig/ (props changed) projects/graid/8/sbin/ipfw/ (props changed) projects/graid/8/sbin/iscontrol/ (props changed) projects/graid/8/sbin/kldload/ (props changed) projects/graid/8/sbin/kldstat/ (props changed) projects/graid/8/sbin/mdconfig/ (props changed) projects/graid/8/sbin/mksnap_ffs/ (props changed) projects/graid/8/sbin/mount/ (props changed) projects/graid/8/sbin/mount_cd9660/ (props changed) projects/graid/8/sbin/mount_msdosfs/ (props changed) projects/graid/8/sbin/mount_nfs/ (props changed) projects/graid/8/sbin/natd/ (props changed) projects/graid/8/sbin/newfs/ (props changed) projects/graid/8/sbin/newfs_msdos/ (props changed) projects/graid/8/sbin/ping6/ (props changed) projects/graid/8/sbin/reboot/ (props changed) projects/graid/8/sbin/restore/ (props changed) projects/graid/8/sbin/route/ (props changed) projects/graid/8/sbin/routed/ (props changed) projects/graid/8/sbin/setkey/ (props changed) projects/graid/8/sbin/spppcontrol/ (props changed) projects/graid/8/sbin/sysctl/ (props changed) projects/graid/8/sbin/tunefs/ (props changed) projects/graid/8/sbin/umount/ (props changed) projects/graid/8/secure/ (props changed) projects/graid/8/secure/lib/libcrypto/ (props changed) projects/graid/8/secure/lib/libssl/ (props changed) projects/graid/8/secure/usr.bin/bdes/ (props changed) projects/graid/8/secure/usr.bin/openssl/ (props changed) projects/graid/8/share/ (props changed) projects/graid/8/share/dict/ (props changed) projects/graid/8/share/doc/papers/jail/ (props changed) projects/graid/8/share/doc/smm/01.setup/ (props changed) projects/graid/8/share/examples/ (props changed) projects/graid/8/share/examples/etc/ (props changed) projects/graid/8/share/examples/kld/syscall/ (props changed) projects/graid/8/share/man/ (props changed) projects/graid/8/share/man/man1/ (props changed) projects/graid/8/share/man/man3/ (props changed) projects/graid/8/share/man/man4/ (props changed) projects/graid/8/share/man/man5/ (props changed) projects/graid/8/share/man/man7/ (props changed) projects/graid/8/share/man/man8/ (props changed) projects/graid/8/share/man/man9/ (props changed) projects/graid/8/share/misc/ (props changed) projects/graid/8/share/mk/ (props changed) projects/graid/8/share/syscons/ (props changed) projects/graid/8/share/termcap/ (props changed) projects/graid/8/share/timedef/ (props changed) projects/graid/8/share/zoneinfo/ (props changed) projects/graid/8/sys/ (props changed) projects/graid/8/sys/amd64/include/xen/ (props changed) projects/graid/8/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/8/sys/contrib/dev/acpica/ (props changed) projects/graid/8/sys/contrib/pf/ (props changed) projects/graid/8/tools/ (props changed) projects/graid/8/tools/build/mk/ (props changed) projects/graid/8/tools/build/options/ (props changed) projects/graid/8/tools/debugscripts/ (props changed) projects/graid/8/tools/kerneldoc/subsys/ (props changed) projects/graid/8/tools/regression/acct/ (props changed) projects/graid/8/tools/regression/acltools/ (props changed) projects/graid/8/tools/regression/aio/aiotest/ (props changed) projects/graid/8/tools/regression/bin/ (props changed) projects/graid/8/tools/regression/bin/date/ (props changed) projects/graid/8/tools/regression/bin/sh/ (props changed) projects/graid/8/tools/regression/fifo/ (props changed) projects/graid/8/tools/regression/geom/ (props changed) projects/graid/8/tools/regression/lib/libc/ (props changed) projects/graid/8/tools/regression/lib/msun/test-conj.t (props changed) projects/graid/8/tools/regression/mqueue/mqtest1/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest2/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest3/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest4/ (props changed) projects/graid/8/tools/regression/mqueue/mqtest5/ (props changed) projects/graid/8/tools/regression/netinet/ (props changed) projects/graid/8/tools/regression/poll/ (props changed) projects/graid/8/tools/regression/posixsem/ (props changed) projects/graid/8/tools/regression/priv/ (props changed) projects/graid/8/tools/regression/sockets/unix_gc/ (props changed) projects/graid/8/tools/regression/usr.bin/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/ (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) projects/graid/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) projects/graid/8/tools/regression/usr.bin/sed/ (props changed) projects/graid/8/tools/regression/usr.bin/tr/ (props changed) projects/graid/8/tools/test/ (props changed) projects/graid/8/tools/tools/ (props changed) projects/graid/8/tools/tools/ath/ (props changed) projects/graid/8/tools/tools/ath/common/dumpregs.h (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/graid/8/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/graid/8/tools/tools/mctest/ (props changed) projects/graid/8/tools/tools/nanobsd/ (props changed) projects/graid/8/tools/tools/netrate/ (props changed) projects/graid/8/tools/tools/netrate/tcpp/ (props changed) projects/graid/8/tools/tools/termcap/termcap.pl (props changed) projects/graid/8/tools/tools/umastat/ (props changed) projects/graid/8/tools/tools/vimage/ (props changed) projects/graid/8/usr.bin/ (props changed) projects/graid/8/usr.bin/apply/ (props changed) projects/graid/8/usr.bin/ar/ (props changed) projects/graid/8/usr.bin/awk/ (props changed) projects/graid/8/usr.bin/biff/ (props changed) projects/graid/8/usr.bin/c89/ (props changed) projects/graid/8/usr.bin/c99/ (props changed) projects/graid/8/usr.bin/calendar/ (props changed) projects/graid/8/usr.bin/catman/ (props changed) projects/graid/8/usr.bin/chpass/Makefile (props changed) projects/graid/8/usr.bin/column/ (props changed) projects/graid/8/usr.bin/comm/ (props changed) projects/graid/8/usr.bin/cpio/ (props changed) projects/graid/8/usr.bin/csup/ (props changed) projects/graid/8/usr.bin/du/ (props changed) projects/graid/8/usr.bin/ee/ (props changed) projects/graid/8/usr.bin/enigma/ (props changed) projects/graid/8/usr.bin/fetch/ (props changed) projects/graid/8/usr.bin/find/ (props changed) projects/graid/8/usr.bin/finger/ (props changed) projects/graid/8/usr.bin/fold/ (props changed) projects/graid/8/usr.bin/fstat/ (props changed) projects/graid/8/usr.bin/gcore/ (props changed) projects/graid/8/usr.bin/getopt/ (props changed) projects/graid/8/usr.bin/gzip/ (props changed) projects/graid/8/usr.bin/hexdump/ (props changed) projects/graid/8/usr.bin/indent/ (props changed) projects/graid/8/usr.bin/jot/ (props changed) projects/graid/8/usr.bin/kdump/ (props changed) projects/graid/8/usr.bin/killall/ (props changed) projects/graid/8/usr.bin/ktrace/ (props changed) projects/graid/8/usr.bin/ldd/ (props changed) projects/graid/8/usr.bin/lex/ (props changed) projects/graid/8/usr.bin/locale/ (props changed) projects/graid/8/usr.bin/locate/ (props changed) projects/graid/8/usr.bin/lockf/ (props changed) projects/graid/8/usr.bin/look/ (props changed) projects/graid/8/usr.bin/mail/ (props changed) projects/graid/8/usr.bin/make/ (props changed) projects/graid/8/usr.bin/makewhatis/ (props changed) projects/graid/8/usr.bin/minigzip/ (props changed) projects/graid/8/usr.bin/ncal/ (props changed) projects/graid/8/usr.bin/netstat/ (props changed) projects/graid/8/usr.bin/pathchk/ (props changed) projects/graid/8/usr.bin/perror/ (props changed) projects/graid/8/usr.bin/procstat/ (props changed) projects/graid/8/usr.bin/rpcgen/ (props changed) projects/graid/8/usr.bin/ruptime/ (props changed) projects/graid/8/usr.bin/script/ (props changed) projects/graid/8/usr.bin/sed/ (props changed) projects/graid/8/usr.bin/sockstat/ (props changed) projects/graid/8/usr.bin/split/ (props changed) projects/graid/8/usr.bin/stat/ (props changed) projects/graid/8/usr.bin/systat/ (props changed) projects/graid/8/usr.bin/tar/ (props changed) projects/graid/8/usr.bin/tftp/ (props changed) projects/graid/8/usr.bin/top/ (props changed) projects/graid/8/usr.bin/touch/ (props changed) projects/graid/8/usr.bin/tr/ (props changed) projects/graid/8/usr.bin/truss/ (props changed) projects/graid/8/usr.bin/uname/ (props changed) projects/graid/8/usr.bin/unifdef/ (props changed) projects/graid/8/usr.bin/uniq/ (props changed) projects/graid/8/usr.bin/unzip/ (props changed) projects/graid/8/usr.bin/uudecode/ (props changed) projects/graid/8/usr.bin/vmstat/ (props changed) projects/graid/8/usr.bin/w/ (props changed) projects/graid/8/usr.bin/whois/ (props changed) projects/graid/8/usr.bin/xinstall/ (props changed) projects/graid/8/usr.bin/xlint/ (props changed) projects/graid/8/usr.bin/xz/ (props changed) projects/graid/8/usr.bin/yacc/ (props changed) projects/graid/8/usr.sbin/ (props changed) projects/graid/8/usr.sbin/IPXrouted/ (props changed) projects/graid/8/usr.sbin/Makefile (props changed) projects/graid/8/usr.sbin/Makefile.inc (props changed) projects/graid/8/usr.sbin/ac/ (props changed) projects/graid/8/usr.sbin/accton/ (props changed) projects/graid/8/usr.sbin/acpi/ (props changed) projects/graid/8/usr.sbin/adduser/ (props changed) projects/graid/8/usr.sbin/amd/ (props changed) projects/graid/8/usr.sbin/ancontrol/ (props changed) projects/graid/8/usr.sbin/apm/ (props changed) projects/graid/8/usr.sbin/apmd/ (props changed) projects/graid/8/usr.sbin/arp/ (props changed) projects/graid/8/usr.sbin/asf/ (props changed) projects/graid/8/usr.sbin/audit/ (props changed) projects/graid/8/usr.sbin/auditd/ (props changed) projects/graid/8/usr.sbin/auditreduce/ (props changed) projects/graid/8/usr.sbin/authpf/ (props changed) projects/graid/8/usr.sbin/bluetooth/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidcontrol/ (props changed) projects/graid/8/usr.sbin/bluetooth/bthidd/ (props changed) projects/graid/8/usr.sbin/boot0cfg/ (props changed) projects/graid/8/usr.sbin/boot98cfg/ (props changed) projects/graid/8/usr.sbin/bootparamd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/ (props changed) projects/graid/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/8/usr.sbin/btxld/ (props changed) projects/graid/8/usr.sbin/burncd/ (props changed) projects/graid/8/usr.sbin/cdcontrol/ (props changed) projects/graid/8/usr.sbin/chkgrp/ (props changed) projects/graid/8/usr.sbin/chown/ (props changed) projects/graid/8/usr.sbin/chroot/ (props changed) projects/graid/8/usr.sbin/ckdist/ (props changed) projects/graid/8/usr.sbin/clear_locks/ (props changed) projects/graid/8/usr.sbin/config/ (props changed) projects/graid/8/usr.sbin/config/SMM.doc/ (props changed) projects/graid/8/usr.sbin/cpucontrol/ (props changed) projects/graid/8/usr.sbin/crashinfo/ (props changed) projects/graid/8/usr.sbin/cron/ (props changed) projects/graid/8/usr.sbin/crunch/ (props changed) projects/graid/8/usr.sbin/crunch/examples/ (props changed) projects/graid/8/usr.sbin/ctm/ (props changed) projects/graid/8/usr.sbin/cxgbtool/ (props changed) projects/graid/8/usr.sbin/daemon/ (props changed) projects/graid/8/usr.sbin/dconschat/ (props changed) projects/graid/8/usr.sbin/devinfo/ (props changed) projects/graid/8/usr.sbin/digictl/ (props changed) projects/graid/8/usr.sbin/diskinfo/ (props changed) projects/graid/8/usr.sbin/dnssec-dsfromkey/ (props changed) projects/graid/8/usr.sbin/dnssec-keyfromlabel/ (props changed) projects/graid/8/usr.sbin/dnssec-keygen/ (props changed) projects/graid/8/usr.sbin/dnssec-signzone/ (props changed) projects/graid/8/usr.sbin/dumpcis/ (props changed) projects/graid/8/usr.sbin/dumpcis/cardinfo.h (props changed) projects/graid/8/usr.sbin/dumpcis/cis.h (props changed) projects/graid/8/usr.sbin/editmap/ (props changed) projects/graid/8/usr.sbin/edquota/ (props changed) projects/graid/8/usr.sbin/eeprom/ (props changed) projects/graid/8/usr.sbin/extattr/ (props changed) projects/graid/8/usr.sbin/extattrctl/ (props changed) projects/graid/8/usr.sbin/faithd/ (props changed) projects/graid/8/usr.sbin/fdcontrol/ (props changed) projects/graid/8/usr.sbin/fdformat/ (props changed) projects/graid/8/usr.sbin/fdread/ (props changed) projects/graid/8/usr.sbin/fdwrite/ (props changed) projects/graid/8/usr.sbin/fifolog/ (props changed) projects/graid/8/usr.sbin/flowctl/ (props changed) projects/graid/8/usr.sbin/freebsd-update/ (props changed) projects/graid/8/usr.sbin/ftp-proxy/ (props changed) projects/graid/8/usr.sbin/fwcontrol/ (props changed) projects/graid/8/usr.sbin/getfmac/ (props changed) projects/graid/8/usr.sbin/getpmac/ (props changed) projects/graid/8/usr.sbin/gssd/ (props changed) projects/graid/8/usr.sbin/gstat/ (props changed) projects/graid/8/usr.sbin/i2c/ (props changed) projects/graid/8/usr.sbin/ifmcstat/ (props changed) projects/graid/8/usr.sbin/inetd/ (props changed) projects/graid/8/usr.sbin/iostat/ (props changed) projects/graid/8/usr.sbin/ip6addrctl/ (props changed) projects/graid/8/usr.sbin/ipfwpcap/ (props changed) projects/graid/8/usr.sbin/jail/ (props changed) projects/graid/8/usr.sbin/jexec/ (props changed) projects/graid/8/usr.sbin/jls/ (props changed) projects/graid/8/usr.sbin/kbdcontrol/ (props changed) projects/graid/8/usr.sbin/kbdmap/ (props changed) projects/graid/8/usr.sbin/kernbb/ (props changed) projects/graid/8/usr.sbin/keyserv/ (props changed) projects/graid/8/usr.sbin/kgmon/ (props changed) projects/graid/8/usr.sbin/kgzip/ (props changed) projects/graid/8/usr.sbin/kldxref/ (props changed) projects/graid/8/usr.sbin/lastlogin/ (props changed) projects/graid/8/usr.sbin/lmcconfig/ (props changed) projects/graid/8/usr.sbin/lpr/ (props changed) projects/graid/8/usr.sbin/lptcontrol/ (props changed) projects/graid/8/usr.sbin/mailstats/ (props changed) projects/graid/8/usr.sbin/mailwrapper/ (props changed) projects/graid/8/usr.sbin/makefs/ (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/8/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/8/usr.sbin/makefs/getid.c (props changed) projects/graid/8/usr.sbin/makemap/ (props changed) projects/graid/8/usr.sbin/manctl/ (props changed) projects/graid/8/usr.sbin/memcontrol/ (props changed) projects/graid/8/usr.sbin/mergemaster/ (props changed) projects/graid/8/usr.sbin/mfiutil/ (props changed) projects/graid/8/usr.sbin/mixer/ (props changed) projects/graid/8/usr.sbin/mld6query/ (props changed) projects/graid/8/usr.sbin/mlxcontrol/ (props changed) projects/graid/8/usr.sbin/mount_nwfs/ (props changed) projects/graid/8/usr.sbin/mount_portalfs/ (props changed) projects/graid/8/usr.sbin/mount_smbfs/ (props changed) projects/graid/8/usr.sbin/mountd/ (props changed) projects/graid/8/usr.sbin/moused/ (props changed) projects/graid/8/usr.sbin/mptable/ (props changed) projects/graid/8/usr.sbin/mptutil/ (props changed) projects/graid/8/usr.sbin/mtest/ (props changed) projects/graid/8/usr.sbin/mtree/ (props changed) projects/graid/8/usr.sbin/named/ (props changed) projects/graid/8/usr.sbin/named-checkconf/ (props changed) projects/graid/8/usr.sbin/named-checkzone/ (props changed) projects/graid/8/usr.sbin/named.reload/ (props changed) projects/graid/8/usr.sbin/ndiscvt/ (props changed) projects/graid/8/usr.sbin/ndp/ (props changed) projects/graid/8/usr.sbin/newsyslog/ (props changed) projects/graid/8/usr.sbin/nfscbd/ (props changed) projects/graid/8/usr.sbin/nfsd/ (props changed) projects/graid/8/usr.sbin/nfsdumpstate/ (props changed) projects/graid/8/usr.sbin/nfsrevoke/ (props changed) projects/graid/8/usr.sbin/nfsuserd/ (props changed) projects/graid/8/usr.sbin/ngctl/ (props changed) projects/graid/8/usr.sbin/nghook/ (props changed) projects/graid/8/usr.sbin/nologin/ (props changed) projects/graid/8/usr.sbin/nscd/ (props changed) projects/graid/8/usr.sbin/ntp/ (props changed) projects/graid/8/usr.sbin/nvram/ (props changed) projects/graid/8/usr.sbin/ofwdump/ (props changed) projects/graid/8/usr.sbin/pciconf/ (props changed) projects/graid/8/usr.sbin/periodic/ (props changed) projects/graid/8/usr.sbin/pkg_install/ (props changed) projects/graid/8/usr.sbin/pmcannotate/ (props changed) projects/graid/8/usr.sbin/pmccontrol/ (props changed) projects/graid/8/usr.sbin/pmcstat/ (props changed) projects/graid/8/usr.sbin/pnpinfo/ (props changed) projects/graid/8/usr.sbin/portsnap/ (props changed) projects/graid/8/usr.sbin/powerd/ (props changed) projects/graid/8/usr.sbin/ppp/ (props changed) projects/graid/8/usr.sbin/pppctl/ (props changed) projects/graid/8/usr.sbin/praliases/ (props changed) projects/graid/8/usr.sbin/praudit/ (props changed) projects/graid/8/usr.sbin/procctl/ (props changed) projects/graid/8/usr.sbin/pstat/ (props changed) projects/graid/8/usr.sbin/pw/ (props changed) projects/graid/8/usr.sbin/pwd_mkdb/ (props changed) projects/graid/8/usr.sbin/quot/ (props changed) projects/graid/8/usr.sbin/quotaon/ (props changed) projects/graid/8/usr.sbin/rarpd/ (props changed) projects/graid/8/usr.sbin/repquota/ (props changed) projects/graid/8/usr.sbin/rip6query/ (props changed) projects/graid/8/usr.sbin/rmt/ (props changed) projects/graid/8/usr.sbin/rndc/ (props changed) projects/graid/8/usr.sbin/rndc-confgen/ (props changed) projects/graid/8/usr.sbin/route6d/ (props changed) projects/graid/8/usr.sbin/rpc.lockd/ (props changed) projects/graid/8/usr.sbin/rpc.statd/ (props changed) projects/graid/8/usr.sbin/rpc.umntall/ (props changed) projects/graid/8/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/8/usr.sbin/rpc.ypupdated/ (props changed) projects/graid/8/usr.sbin/rpc.ypxfrd/ (props changed) projects/graid/8/usr.sbin/rpcbind/ (props changed) projects/graid/8/usr.sbin/rrenumd/ (props changed) projects/graid/8/usr.sbin/rtadvd/ (props changed) projects/graid/8/usr.sbin/rtprio/ (props changed) projects/graid/8/usr.sbin/rtsold/ (props changed) projects/graid/8/usr.sbin/rwhod/ (props changed) projects/graid/8/usr.sbin/sa/ (props changed) projects/graid/8/usr.sbin/sade/ (props changed) projects/graid/8/usr.sbin/sendmail/ (props changed) projects/graid/8/usr.sbin/service/ (props changed) projects/graid/8/usr.sbin/service/Makefile (props changed) projects/graid/8/usr.sbin/service/service.8 (props changed) projects/graid/8/usr.sbin/service/service.sh (props changed) projects/graid/8/usr.sbin/services_mkdb/ (props changed) projects/graid/8/usr.sbin/services_mkdb/Makefile (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.8 (props changed) projects/graid/8/usr.sbin/services_mkdb/services_mkdb.c (props changed) projects/graid/8/usr.sbin/services_mkdb/uniq.c (props changed) projects/graid/8/usr.sbin/setfib/ (props changed) projects/graid/8/usr.sbin/setfmac/ (props changed) projects/graid/8/usr.sbin/setpmac/ (props changed) projects/graid/8/usr.sbin/sicontrol/ (props changed) projects/graid/8/usr.sbin/smbmsg/ (props changed) projects/graid/8/usr.sbin/snapinfo/ (props changed) projects/graid/8/usr.sbin/spkrtest/ (props changed) projects/graid/8/usr.sbin/spray/ (props changed) projects/graid/8/usr.sbin/sysinstall/ (props changed) projects/graid/8/usr.sbin/syslogd/ (props changed) projects/graid/8/usr.sbin/tcpdchk/ (props changed) projects/graid/8/usr.sbin/tcpdmatch/ (props changed) projects/graid/8/usr.sbin/tcpdrop/ (props changed) projects/graid/8/usr.sbin/tcpdump/ (props changed) projects/graid/8/usr.sbin/timed/ (props changed) projects/graid/8/usr.sbin/traceroute/ (props changed) projects/graid/8/usr.sbin/traceroute6/ (props changed) projects/graid/8/usr.sbin/trpt/ (props changed) projects/graid/8/usr.sbin/tzsetup/ (props changed) projects/graid/8/usr.sbin/uathload/ (props changed) projects/graid/8/usr.sbin/ugidfw/ (props changed) projects/graid/8/usr.sbin/uhsoctl/ (props changed) projects/graid/8/usr.sbin/usbconfig/ (props changed) projects/graid/8/usr.sbin/usbdevs/ (props changed) projects/graid/8/usr.sbin/vidcontrol/ (props changed) projects/graid/8/usr.sbin/vipw/ (props changed) projects/graid/8/usr.sbin/wake/ (props changed) projects/graid/8/usr.sbin/watch/ (props changed) projects/graid/8/usr.sbin/watchdogd/ (props changed) projects/graid/8/usr.sbin/wlandebug/ (props changed) projects/graid/8/usr.sbin/wlconfig/ (props changed) projects/graid/8/usr.sbin/wpa/ (props changed) projects/graid/8/usr.sbin/yp_mkdb/ (props changed) projects/graid/8/usr.sbin/ypbind/ (props changed) projects/graid/8/usr.sbin/yppoll/ (props changed) projects/graid/8/usr.sbin/yppush/ (props changed) projects/graid/8/usr.sbin/ypserv/ (props changed) projects/graid/8/usr.sbin/ypset/ (props changed) projects/graid/8/usr.sbin/zic/ (props changed) projects/graid/8/usr.sbin/zzz/ (props changed) Modified: projects/graid/8/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/8/sys/geom/raid/g_raid.c Fri Feb 11 16:02:52 2011 (r218578) +++ projects/graid/8/sys/geom/raid/g_raid.c Fri Feb 11 16:11:42 2011 (r218579) @@ -1961,6 +1961,17 @@ void g_raid_fail_disk(struct g_raid_soft struct g_raid_subdisk *sd, struct g_raid_disk *disk) { + if (disk == NULL) + disk = sd->sd_disk; + if (disk == NULL) { + G_RAID_DEBUG1(0, sc, "Warning! Fail request to an absent disk!"); + return; + } + if (disk->d_state != G_RAID_DISK_S_ACTIVE) { + G_RAID_DEBUG1(0, sc, "Warning! Fail request to a disk in a " + "wrong state (%s)!", g_raid_disk_state2str(disk->d_state)); + return; + } if (sc->sc_md) G_RAID_MD_FAIL_DISK(sc->sc_md, sd, disk); } @@ -1973,7 +1984,7 @@ g_raid_dumpconf(struct sbuf *sb, const c struct g_raid_volume *vol; struct g_raid_subdisk *sd; struct g_raid_disk *disk; - int s; + int i, s; g_topology_assert(); @@ -1984,7 +1995,7 @@ g_raid_dumpconf(struct sbuf *sb, const c vol = pp->private; g_topology_unlock(); sx_xlock(&sc->sc_lock); - sbuf_printf(sb, "%s%s\n", indent, + sbuf_printf(sb, "%s\n", indent, vol->v_name); sbuf_printf(sb, "%s%s\n", indent, g_raid_volume_level2str(vol->v_raid_level, @@ -1998,6 +2009,31 @@ g_raid_dumpconf(struct sbuf *sb, const c vol->v_strip_size); sbuf_printf(sb, "%s%s\n", indent, g_raid_volume_state2str(vol->v_state)); + sbuf_printf(sb, "%s%s\n", indent, + vol->v_dirty ? "Yes" : "No"); + sbuf_printf(sb, "%s", indent); + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_disk != NULL && + sd->sd_disk->d_consumer != NULL) { + sbuf_printf(sb, "%s ", + g_raid_get_diskname(sd->sd_disk)); + } else { + sbuf_printf(sb, "NONE "); + } + sbuf_printf(sb, "(%s", + g_raid_subdisk_state2str(sd->sd_state)); + if (sd->sd_state == G_RAID_SUBDISK_S_REBUILD || + sd->sd_state == G_RAID_SUBDISK_S_RESYNC) { + sbuf_printf(sb, " %d%%", + (int)(sd->sd_rebuild_pos * 100 / + sd->sd_size)); + } + sbuf_printf(sb, ")"); + if (i + 1 < vol->v_disks_count) + sbuf_printf(sb, ", "); + } + sbuf_printf(sb, "\n"); sx_xunlock(&sc->sc_lock); g_topology_lock(); } else if (cp != NULL) { @@ -2025,6 +2061,18 @@ g_raid_dumpconf(struct sbuf *sb, const c sbuf_printf(sb, ")"); } sbuf_printf(sb, "\n"); + sbuf_printf(sb, "%s", indent); + TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { + sbuf_printf(sb, "r%d(%s):%d@%ju", + sd->sd_volume->v_global_id, + sd->sd_volume->v_name, + sd->sd_pos, sd->sd_offset); + if (TAILQ_NEXT(sd, sd_next)) + sbuf_printf(sb, ", "); + } + sbuf_printf(sb, "\n"); + sbuf_printf(sb, "%s%d\n", indent, + disk->d_read_errs); sx_xunlock(&sc->sc_lock); g_topology_lock(); } else { Modified: projects/graid/8/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/8/sys/geom/raid/md_intel.c Fri Feb 11 16:02:52 2011 (r218578) +++ projects/graid/8/sys/geom/raid/md_intel.c Fri Feb 11 16:11:42 2011 (r218579) @@ -1681,19 +1681,6 @@ makedisk: size = size - (sd->sd_offset + sd->sd_size); } - /* Handle size argument. */ - len = sizeof(*sizearg); - sizearg = gctl_get_param(req, "size", &len); - if (sizearg != NULL && len == sizeof(*sizearg) && - *sizearg > 0) { - if (*sizearg > size) { - gctl_error(req, "Size too big %lld > %lld.", - (long long)*sizearg, (long long)size); - return (-9); - } - size = *sizearg; - } - /* Handle strip argument. */ strip = 131072; len = sizeof(*striparg); @@ -1716,8 +1703,23 @@ makedisk: } /* Round offset up to strip. */ - size -= ((strip - off) % strip); - off += ((strip - off) % strip); + if (off % strip != 0) { + size -= strip - off % strip; + off += strip - off % strip; + } + + /* Handle size argument. */ + len = sizeof(*sizearg); + sizearg = gctl_get_param(req, "size", &len); + if (sizearg != NULL && len == sizeof(*sizearg) && + *sizearg > 0) { + if (*sizearg > size) { + gctl_error(req, "Size too big %lld > %lld.", + (long long)*sizearg, (long long)size); + return (-9); + } + size = *sizearg; + } /* Round size down to strip or sector. */ if (level == G_RAID_VOLUME_RL_RAID1) From owner-svn-src-projects@FreeBSD.ORG Fri Feb 11 16:14:17 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2F0C3106566C; Fri, 11 Feb 2011 16:14:17 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1A7AA8FC12; Fri, 11 Feb 2011 16:14:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1BGEH3i066483; Fri, 11 Feb 2011 16:14:17 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1BGEHf6066480; Fri, 11 Feb 2011 16:14:17 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102111614.p1BGEHf6066480@svn.freebsd.org> From: Alexander Motin Date: Fri, 11 Feb 2011 16:14:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218580 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac share/misc sys/geom/raid tools/tools/nanobsd usr.sbin usr.sbin/bsnmpd/modules/snmp_hos... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 16:14:17 -0000 Author: mav Date: Fri Feb 11 16:14:16 2011 New Revision: 218580 URL: http://svn.freebsd.org/changeset/base/218580 Log: MFH r218546, r218547, r218569, r218572, r218578 Modified: projects/graid/7/sys/geom/raid/g_raid.c projects/graid/7/sys/geom/raid/md_intel.c Directory Properties: projects/graid/7/ (props changed) projects/graid/7/COPYRIGHT (props changed) projects/graid/7/Makefile (props changed) projects/graid/7/Makefile.inc1 (props changed) projects/graid/7/ObsoleteFiles.inc (props changed) projects/graid/7/UPDATING (props changed) projects/graid/7/bin/ (props changed) projects/graid/7/bin/chflags/ (props changed) projects/graid/7/bin/chio/ (props changed) projects/graid/7/bin/cp/ (props changed) projects/graid/7/bin/csh/ (props changed) projects/graid/7/bin/dd/ (props changed) projects/graid/7/bin/df/ (props changed) projects/graid/7/bin/echo/ (props changed) projects/graid/7/bin/expr/ (props changed) projects/graid/7/bin/kill/ (props changed) projects/graid/7/bin/ln/ (props changed) projects/graid/7/bin/ls/ (props changed) projects/graid/7/bin/pax/ (props changed) projects/graid/7/bin/ps/ (props changed) projects/graid/7/bin/rm/ (props changed) projects/graid/7/bin/sh/ (props changed) projects/graid/7/bin/test/ (props changed) projects/graid/7/cddl/contrib/opensolaris/ (props changed) projects/graid/7/cddl/lib/libzpool/ (props changed) projects/graid/7/contrib/bind9/ (props changed) projects/graid/7/contrib/binutils/ (props changed) projects/graid/7/contrib/bsnmp/ (props changed) projects/graid/7/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/7/contrib/cpio/ (props changed) projects/graid/7/contrib/csup/ (props changed) projects/graid/7/contrib/expat/ (props changed) projects/graid/7/contrib/gcc/ (props changed) projects/graid/7/contrib/gdb/ (props changed) projects/graid/7/contrib/gdtoa/ (props changed) projects/graid/7/contrib/groff/ (props changed) projects/graid/7/contrib/ipfilter/ (props changed) projects/graid/7/contrib/less/ (props changed) projects/graid/7/contrib/libpcap/ (props changed) projects/graid/7/contrib/ncurses/ (props changed) projects/graid/7/contrib/netcat/ (props changed) projects/graid/7/contrib/ntp/ (props changed) projects/graid/7/contrib/nvi/ (props changed) projects/graid/7/contrib/pf/ (props changed) projects/graid/7/contrib/sendmail/ (props changed) projects/graid/7/contrib/smbfs/ (props changed) projects/graid/7/contrib/tcp_wrappers/ (props changed) projects/graid/7/contrib/tcsh/ (props changed) projects/graid/7/contrib/telnet/ (props changed) projects/graid/7/contrib/top/ (props changed) projects/graid/7/contrib/traceroute/ (props changed) projects/graid/7/contrib/wpa_supplicant/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.conf (props changed) projects/graid/7/crypto/openssh/ (props changed) projects/graid/7/crypto/openssl/ (props changed) projects/graid/7/etc/ (props changed) projects/graid/7/games/factor/ (props changed) projects/graid/7/games/fortune/ (props changed) projects/graid/7/games/grdc/ (props changed) projects/graid/7/gnu/ (props changed) projects/graid/7/gnu/lib/libstdc++/ (props changed) projects/graid/7/gnu/usr.bin/ (props changed) projects/graid/7/gnu/usr.bin/cc/ (props changed) projects/graid/7/gnu/usr.bin/cpio/ (props changed) projects/graid/7/gnu/usr.bin/cvs/ (props changed) projects/graid/7/gnu/usr.bin/gdb/ (props changed) projects/graid/7/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/7/gnu/usr.bin/grep/ (props changed) projects/graid/7/gnu/usr.bin/groff/ (props changed) projects/graid/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/graid/7/gnu/usr.bin/man/ (props changed) projects/graid/7/gnu/usr.bin/sort/ (props changed) projects/graid/7/include/ (props changed) projects/graid/7/kerberos5/ (props changed) projects/graid/7/lib/ (props changed) projects/graid/7/lib/bind/ (props changed) projects/graid/7/lib/csu/ (props changed) projects/graid/7/lib/libarchive/ (props changed) projects/graid/7/lib/libbluetooth/ (props changed) projects/graid/7/lib/libc/ (props changed) projects/graid/7/lib/libc/stdtime/ (props changed) projects/graid/7/lib/libc_r/ (props changed) projects/graid/7/lib/libcam/ (props changed) projects/graid/7/lib/libdisk/ (props changed) projects/graid/7/lib/libdwarf/ (props changed) projects/graid/7/lib/libelf/ (props changed) projects/graid/7/lib/libexpat/ (props changed) projects/graid/7/lib/libfetch/ (props changed) projects/graid/7/lib/libftpio/ (props changed) projects/graid/7/lib/libgeom/ (props changed) projects/graid/7/lib/libgssapi/ (props changed) projects/graid/7/lib/libkse/ (props changed) projects/graid/7/lib/libkvm/ (props changed) projects/graid/7/lib/libmagic/ (props changed) projects/graid/7/lib/libmemstat/ (props changed) projects/graid/7/lib/libpmc/ (props changed) projects/graid/7/lib/libradius/ (props changed) projects/graid/7/lib/libsm/ (props changed) projects/graid/7/lib/libstand/ (props changed) projects/graid/7/lib/libthr/ (props changed) projects/graid/7/lib/libthread_db/ (props changed) projects/graid/7/lib/libufs/ (props changed) projects/graid/7/lib/libutil/ (props changed) projects/graid/7/lib/msun/ (props changed) projects/graid/7/libexec/ (props changed) projects/graid/7/libexec/ftpd/ (props changed) projects/graid/7/libexec/rpc.rquotad/ (props changed) projects/graid/7/libexec/rpc.rstatd/ (props changed) projects/graid/7/libexec/rtld-elf/ (props changed) projects/graid/7/libexec/tftpd/ (props changed) projects/graid/7/release/ (props changed) projects/graid/7/release/doc/ (props changed) projects/graid/7/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/7/release/picobsd/tinyware/login/ (props changed) projects/graid/7/rescue/ (props changed) projects/graid/7/sbin/ (props changed) projects/graid/7/sbin/atacontrol/ (props changed) projects/graid/7/sbin/bsdlabel/ (props changed) projects/graid/7/sbin/clri/ (props changed) projects/graid/7/sbin/ddb/ (props changed) projects/graid/7/sbin/devd/ (props changed) projects/graid/7/sbin/devfs/ (props changed) projects/graid/7/sbin/dhclient/ (props changed) projects/graid/7/sbin/dumpfs/ (props changed) projects/graid/7/sbin/fdisk/ (props changed) projects/graid/7/sbin/fdisk_pc98/ (props changed) projects/graid/7/sbin/fsck/ (props changed) projects/graid/7/sbin/fsck_ffs/ (props changed) projects/graid/7/sbin/fsck_msdosfs/ (props changed) projects/graid/7/sbin/geom/ (props changed) projects/graid/7/sbin/geom/class/label/ (props changed) projects/graid/7/sbin/geom/class/part/ (props changed) projects/graid/7/sbin/geom/class/stripe/ (props changed) projects/graid/7/sbin/geom/misc/ (props changed) projects/graid/7/sbin/growfs/ (props changed) projects/graid/7/sbin/ifconfig/ (props changed) projects/graid/7/sbin/init/ (props changed) projects/graid/7/sbin/ipf/ (props changed) projects/graid/7/sbin/ipfw/ (props changed) projects/graid/7/sbin/md5/ (props changed) projects/graid/7/sbin/mdconfig/ (props changed) projects/graid/7/sbin/mksnap_ffs/ (props changed) projects/graid/7/sbin/mount/ (props changed) projects/graid/7/sbin/mount_msdosfs/ (props changed) projects/graid/7/sbin/natd/ (props changed) projects/graid/7/sbin/newfs/ (props changed) projects/graid/7/sbin/newfs_msdos/ (props changed) projects/graid/7/sbin/ping6/ (props changed) projects/graid/7/sbin/reboot/ (props changed) projects/graid/7/sbin/restore/ (props changed) projects/graid/7/sbin/route/ (props changed) projects/graid/7/sbin/savecore/ (props changed) projects/graid/7/sbin/sconfig/ (props changed) projects/graid/7/sbin/shutdown/ (props changed) projects/graid/7/sbin/sysctl/ (props changed) projects/graid/7/sbin/tunefs/ (props changed) projects/graid/7/secure/lib/libcrypto/ (props changed) projects/graid/7/secure/lib/libssh/ (props changed) projects/graid/7/secure/lib/libssl/ (props changed) projects/graid/7/secure/libexec/sftp-server/ (props changed) projects/graid/7/secure/usr.bin/bdes/ (props changed) projects/graid/7/secure/usr.bin/openssl/ (props changed) projects/graid/7/secure/usr.bin/ssh/ (props changed) projects/graid/7/secure/usr.sbin/sshd/ (props changed) projects/graid/7/share/ (props changed) projects/graid/7/share/colldef/ (props changed) projects/graid/7/share/dict/ (props changed) projects/graid/7/share/doc/bind9/ (props changed) projects/graid/7/share/doc/papers/jail/ (props changed) projects/graid/7/share/doc/smm/01.setup/ (props changed) projects/graid/7/share/examples/ (props changed) projects/graid/7/share/man/ (props changed) projects/graid/7/share/man/man1/ (props changed) projects/graid/7/share/man/man3/ (props changed) projects/graid/7/share/man/man4/ (props changed) projects/graid/7/share/man/man5/ (props changed) projects/graid/7/share/man/man7/ (props changed) projects/graid/7/share/man/man8/ (props changed) projects/graid/7/share/man/man9/ (props changed) projects/graid/7/share/misc/ (props changed) projects/graid/7/share/misc/iso639 (props changed) projects/graid/7/share/misc/pci_vendors (props changed) projects/graid/7/share/mk/ (props changed) projects/graid/7/share/mklocale/ (props changed) projects/graid/7/share/monetdef/ (props changed) projects/graid/7/share/msgdef/ (props changed) projects/graid/7/share/numericdef/ (props changed) projects/graid/7/share/sendmail/ (props changed) projects/graid/7/share/syscons/ (props changed) projects/graid/7/share/syscons/keymaps/ (props changed) projects/graid/7/share/termcap/ (props changed) projects/graid/7/share/timedef/ (props changed) projects/graid/7/share/zoneinfo/ (props changed) projects/graid/7/sys/ (props changed) projects/graid/7/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/7/sys/contrib/dev/acpica/ (props changed) projects/graid/7/sys/contrib/pf/ (props changed) projects/graid/7/tools/ (props changed) projects/graid/7/tools/build/ (props changed) projects/graid/7/tools/build/options/ (props changed) projects/graid/7/tools/debugscripts/ (props changed) projects/graid/7/tools/regression/acct/ (props changed) projects/graid/7/tools/regression/atm/ (props changed) projects/graid/7/tools/regression/bin/ (props changed) projects/graid/7/tools/regression/bin/date/ (props changed) projects/graid/7/tools/regression/bin/sh/ (props changed) projects/graid/7/tools/regression/file/ (props changed) projects/graid/7/tools/regression/file/flock/ (props changed) projects/graid/7/tools/regression/lib/libc/ (props changed) projects/graid/7/tools/regression/usr.bin/ (props changed) projects/graid/7/tools/regression/usr.bin/jot/ (props changed) projects/graid/7/tools/regression/usr.bin/tr/ (props changed) projects/graid/7/tools/sched/ (props changed) projects/graid/7/tools/test/ (props changed) projects/graid/7/tools/tools/ (props changed) projects/graid/7/tools/tools/aac/ (props changed) projects/graid/7/tools/tools/crypto/ (props changed) projects/graid/7/tools/tools/editing/ (props changed) projects/graid/7/tools/tools/nanobsd/ (props changed) projects/graid/7/tools/tools/nanobsd/FlashDevice.sub (props changed) projects/graid/7/tools/tools/nanobsd/nanobsd.sh (props changed) projects/graid/7/tools/tools/netrate/ (props changed) projects/graid/7/tools/tools/umastat/ (props changed) projects/graid/7/tools/tools/usb/ (props changed) projects/graid/7/usr.bin/ (props changed) projects/graid/7/usr.bin/basename/ (props changed) projects/graid/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) projects/graid/7/usr.bin/calendar/ (props changed) projects/graid/7/usr.bin/catman/ (props changed) projects/graid/7/usr.bin/cksum/ (props changed) projects/graid/7/usr.bin/comm/ (props changed) projects/graid/7/usr.bin/cpuset/ (props changed) projects/graid/7/usr.bin/csup/ (props changed) projects/graid/7/usr.bin/dirname/ (props changed) projects/graid/7/usr.bin/du/ (props changed) projects/graid/7/usr.bin/fetch/ (props changed) projects/graid/7/usr.bin/file/ (props changed) projects/graid/7/usr.bin/find/ (props changed) projects/graid/7/usr.bin/finger/ (props changed) projects/graid/7/usr.bin/fold/ (props changed) projects/graid/7/usr.bin/fstat/ (props changed) projects/graid/7/usr.bin/gcore/ (props changed) projects/graid/7/usr.bin/gprof/ (props changed) projects/graid/7/usr.bin/gzip/ (props changed) projects/graid/7/usr.bin/hexdump/ (props changed) projects/graid/7/usr.bin/id/ (props changed) projects/graid/7/usr.bin/indent/ (props changed) projects/graid/7/usr.bin/ipcrm/ (props changed) projects/graid/7/usr.bin/ipcs/ (props changed) projects/graid/7/usr.bin/jot/ (props changed) projects/graid/7/usr.bin/kdump/ (props changed) projects/graid/7/usr.bin/ktrace/ (props changed) projects/graid/7/usr.bin/ldd/ (props changed) projects/graid/7/usr.bin/less/ (props changed) projects/graid/7/usr.bin/locate/ (props changed) projects/graid/7/usr.bin/lockf/ (props changed) projects/graid/7/usr.bin/logger/ (props changed) projects/graid/7/usr.bin/make/ (props changed) projects/graid/7/usr.bin/ncal/ (props changed) projects/graid/7/usr.bin/netstat/ (props changed) projects/graid/7/usr.bin/newgrp/ (props changed) projects/graid/7/usr.bin/nsupdate/ (props changed) projects/graid/7/usr.bin/pkill/ (props changed) projects/graid/7/usr.bin/procstat/ (props changed) projects/graid/7/usr.bin/quota/ (props changed) projects/graid/7/usr.bin/rpcgen/ (props changed) projects/graid/7/usr.bin/ruptime/ (props changed) projects/graid/7/usr.bin/script/ (props changed) projects/graid/7/usr.bin/sed/ (props changed) projects/graid/7/usr.bin/shar/ (props changed) projects/graid/7/usr.bin/sockstat/ (props changed) projects/graid/7/usr.bin/stat/ (props changed) projects/graid/7/usr.bin/su/ (props changed) projects/graid/7/usr.bin/systat/ (props changed) projects/graid/7/usr.bin/tail/ (props changed) projects/graid/7/usr.bin/tar/ (props changed) projects/graid/7/usr.bin/tftp/ (props changed) projects/graid/7/usr.bin/tip/ (props changed) projects/graid/7/usr.bin/top/ (props changed) projects/graid/7/usr.bin/truncate/ (props changed) projects/graid/7/usr.bin/truss/ (props changed) projects/graid/7/usr.bin/uname/ (props changed) projects/graid/7/usr.bin/unifdef/ (props changed) projects/graid/7/usr.bin/units/ (props changed) projects/graid/7/usr.bin/uudecode/ (props changed) projects/graid/7/usr.bin/vmstat/ (props changed) projects/graid/7/usr.bin/w/ (props changed) projects/graid/7/usr.bin/wc/ (props changed) projects/graid/7/usr.bin/whereis/ (props changed) projects/graid/7/usr.bin/whois/ (props changed) projects/graid/7/usr.bin/window/ (props changed) projects/graid/7/usr.bin/xargs/ (props changed) projects/graid/7/usr.bin/ypcat/ (props changed) projects/graid/7/usr.bin/ypmatch/ (props changed) projects/graid/7/usr.bin/ypwhich/ (props changed) projects/graid/7/usr.sbin/ (props changed) projects/graid/7/usr.sbin/Makefile (props changed) projects/graid/7/usr.sbin/acpi/ (props changed) projects/graid/7/usr.sbin/adduser/ (props changed) projects/graid/7/usr.sbin/arp/ (props changed) projects/graid/7/usr.sbin/bluetooth/ (props changed) projects/graid/7/usr.sbin/bluetooth/btpand/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcsecd/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcseriald/ (props changed) projects/graid/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) projects/graid/7/usr.sbin/bluetooth/sdpd/ (props changed) projects/graid/7/usr.sbin/boot0cfg/ (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/graid/7/usr.sbin/burncd/ (props changed) projects/graid/7/usr.sbin/cdcontrol/ (props changed) projects/graid/7/usr.sbin/chown/ (props changed) projects/graid/7/usr.sbin/chroot/ (props changed) projects/graid/7/usr.sbin/config/ (props changed) projects/graid/7/usr.sbin/config/SMM.doc/ (props changed) projects/graid/7/usr.sbin/cpucontrol/ (props changed) projects/graid/7/usr.sbin/crashinfo/ (props changed) projects/graid/7/usr.sbin/cron/ (props changed) projects/graid/7/usr.sbin/cron/cron/ (props changed) projects/graid/7/usr.sbin/crunch/ (props changed) projects/graid/7/usr.sbin/cxgbtool/ (props changed) projects/graid/7/usr.sbin/eeprom/ (props changed) projects/graid/7/usr.sbin/extattr/ (props changed) projects/graid/7/usr.sbin/faithd/ (props changed) projects/graid/7/usr.sbin/fdcontrol/ (props changed) projects/graid/7/usr.sbin/fdformat/ (props changed) projects/graid/7/usr.sbin/fdread/ (props changed) projects/graid/7/usr.sbin/fdwrite/ (props changed) projects/graid/7/usr.sbin/fifolog/ (props changed) projects/graid/7/usr.sbin/freebsd-update/ (props changed) projects/graid/7/usr.sbin/fwcontrol/ (props changed) projects/graid/7/usr.sbin/gstat/ (props changed) projects/graid/7/usr.sbin/iostat/ (props changed) projects/graid/7/usr.sbin/jail/ (props changed) projects/graid/7/usr.sbin/jexec/ (props changed) projects/graid/7/usr.sbin/jls/ (props changed) projects/graid/7/usr.sbin/lpr/ (props changed) projects/graid/7/usr.sbin/mailwrapper/ (props changed) projects/graid/7/usr.sbin/makefs/ (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/7/usr.sbin/makefs/getid.c (props changed) projects/graid/7/usr.sbin/mergemaster/ (props changed) projects/graid/7/usr.sbin/mfiutil/ (props changed) projects/graid/7/usr.sbin/mountd/ (props changed) projects/graid/7/usr.sbin/mptutil/ (props changed) projects/graid/7/usr.sbin/mtree/ (props changed) projects/graid/7/usr.sbin/ndiscvt/ (props changed) projects/graid/7/usr.sbin/ndp/ (props changed) projects/graid/7/usr.sbin/newsyslog/ (props changed) projects/graid/7/usr.sbin/nscd/ (props changed) projects/graid/7/usr.sbin/ntp/ (props changed) projects/graid/7/usr.sbin/pciconf/ (props changed) projects/graid/7/usr.sbin/pkg_install/ (props changed) projects/graid/7/usr.sbin/pmccontrol/ (props changed) projects/graid/7/usr.sbin/pmcstat/ (props changed) projects/graid/7/usr.sbin/portsnap/ (props changed) projects/graid/7/usr.sbin/powerd/ (props changed) projects/graid/7/usr.sbin/ppp/ (props changed) projects/graid/7/usr.sbin/pstat/ (props changed) projects/graid/7/usr.sbin/pw/ (props changed) projects/graid/7/usr.sbin/pwd_mkdb/ (props changed) projects/graid/7/usr.sbin/rpc.lockd/ (props changed) projects/graid/7/usr.sbin/rpc.statd/ (props changed) projects/graid/7/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/7/usr.sbin/rtadvd/ (props changed) projects/graid/7/usr.sbin/rtsold/ (props changed) projects/graid/7/usr.sbin/sade/ (props changed) projects/graid/7/usr.sbin/service/ (props changed) projects/graid/7/usr.sbin/setfib/ (props changed) projects/graid/7/usr.sbin/sysinstall/ (props changed) projects/graid/7/usr.sbin/syslogd/ (props changed) projects/graid/7/usr.sbin/traceroute/ (props changed) projects/graid/7/usr.sbin/traceroute6/ (props changed) projects/graid/7/usr.sbin/tzsetup/ (props changed) projects/graid/7/usr.sbin/ugidfw/ (props changed) projects/graid/7/usr.sbin/wpa/wpa_supplicant/ (props changed) projects/graid/7/usr.sbin/ypserv/ (props changed) projects/graid/7/usr.sbin/zic/ (props changed) Modified: projects/graid/7/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.c Fri Feb 11 16:11:42 2011 (r218579) +++ projects/graid/7/sys/geom/raid/g_raid.c Fri Feb 11 16:14:16 2011 (r218580) @@ -1960,6 +1960,17 @@ void g_raid_fail_disk(struct g_raid_soft struct g_raid_subdisk *sd, struct g_raid_disk *disk) { + if (disk == NULL) + disk = sd->sd_disk; + if (disk == NULL) { + G_RAID_DEBUG1(0, sc, "Warning! Fail request to an absent disk!"); + return; + } + if (disk->d_state != G_RAID_DISK_S_ACTIVE) { + G_RAID_DEBUG1(0, sc, "Warning! Fail request to a disk in a " + "wrong state (%s)!", g_raid_disk_state2str(disk->d_state)); + return; + } if (sc->sc_md) G_RAID_MD_FAIL_DISK(sc->sc_md, sd, disk); } @@ -1972,7 +1983,7 @@ g_raid_dumpconf(struct sbuf *sb, const c struct g_raid_volume *vol; struct g_raid_subdisk *sd; struct g_raid_disk *disk; - int s; + int i, s; g_topology_assert(); @@ -1983,7 +1994,7 @@ g_raid_dumpconf(struct sbuf *sb, const c vol = pp->private; g_topology_unlock(); sx_xlock(&sc->sc_lock); - sbuf_printf(sb, "%s%s\n", indent, + sbuf_printf(sb, "%s\n", indent, vol->v_name); sbuf_printf(sb, "%s%s\n", indent, g_raid_volume_level2str(vol->v_raid_level, @@ -1997,6 +2008,31 @@ g_raid_dumpconf(struct sbuf *sb, const c vol->v_strip_size); sbuf_printf(sb, "%s%s\n", indent, g_raid_volume_state2str(vol->v_state)); + sbuf_printf(sb, "%s%s\n", indent, + vol->v_dirty ? "Yes" : "No"); + sbuf_printf(sb, "%s", indent); + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_disk != NULL && + sd->sd_disk->d_consumer != NULL) { + sbuf_printf(sb, "%s ", + g_raid_get_diskname(sd->sd_disk)); + } else { + sbuf_printf(sb, "NONE "); + } + sbuf_printf(sb, "(%s", + g_raid_subdisk_state2str(sd->sd_state)); + if (sd->sd_state == G_RAID_SUBDISK_S_REBUILD || + sd->sd_state == G_RAID_SUBDISK_S_RESYNC) { + sbuf_printf(sb, " %d%%", + (int)(sd->sd_rebuild_pos * 100 / + sd->sd_size)); + } + sbuf_printf(sb, ")"); + if (i + 1 < vol->v_disks_count) + sbuf_printf(sb, ", "); + } + sbuf_printf(sb, "\n"); sx_xunlock(&sc->sc_lock); g_topology_lock(); } else if (cp != NULL) { @@ -2024,6 +2060,18 @@ g_raid_dumpconf(struct sbuf *sb, const c sbuf_printf(sb, ")"); } sbuf_printf(sb, "\n"); + sbuf_printf(sb, "%s", indent); + TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { + sbuf_printf(sb, "r%d(%s):%d@%ju", + sd->sd_volume->v_global_id, + sd->sd_volume->v_name, + sd->sd_pos, sd->sd_offset); + if (TAILQ_NEXT(sd, sd_next)) + sbuf_printf(sb, ", "); + } + sbuf_printf(sb, "\n"); + sbuf_printf(sb, "%s%d\n", indent, + disk->d_read_errs); sx_xunlock(&sc->sc_lock); g_topology_lock(); } else { Modified: projects/graid/7/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/7/sys/geom/raid/md_intel.c Fri Feb 11 16:11:42 2011 (r218579) +++ projects/graid/7/sys/geom/raid/md_intel.c Fri Feb 11 16:14:16 2011 (r218580) @@ -1681,19 +1681,6 @@ makedisk: size = size - (sd->sd_offset + sd->sd_size); } - /* Handle size argument. */ - len = sizeof(*sizearg); - sizearg = gctl_get_param(req, "size", &len); - if (sizearg != NULL && len == sizeof(*sizearg) && - *sizearg > 0) { - if (*sizearg > size) { - gctl_error(req, "Size too big %lld > %lld.", - (long long)*sizearg, (long long)size); - return (-9); - } - size = *sizearg; - } - /* Handle strip argument. */ strip = 131072; len = sizeof(*striparg); @@ -1716,8 +1703,23 @@ makedisk: } /* Round offset up to strip. */ - size -= ((strip - off) % strip); - off += ((strip - off) % strip); + if (off % strip != 0) { + size -= strip - off % strip; + off += strip - off % strip; + } + + /* Handle size argument. */ + len = sizeof(*sizearg); + sizearg = gctl_get_param(req, "size", &len); + if (sizearg != NULL && len == sizeof(*sizearg) && + *sizearg > 0) { + if (*sizearg > size) { + gctl_error(req, "Size too big %lld > %lld.", + (long long)*sizearg, (long long)size); + return (-9); + } + size = *sizearg; + } /* Round size down to strip or sector. */ if (level == G_RAID_VOLUME_RL_RAID1) From owner-svn-src-projects@FreeBSD.ORG Sat Feb 12 11:00:35 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2FE3C106566B; Sat, 12 Feb 2011 11:00:35 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1E82F8FC16; Sat, 12 Feb 2011 11:00:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1CB0ZwK098722; Sat, 12 Feb 2011 11:00:35 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1CB0YrL098717; Sat, 12 Feb 2011 11:00:34 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102121100.p1CB0YrL098717@svn.freebsd.org> From: Alexander Motin Date: Sat, 12 Feb 2011 11:00:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218600 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Feb 2011 11:00:35 -0000 Author: mav Date: Sat Feb 12 11:00:34 2011 New Revision: 218600 URL: http://svn.freebsd.org/changeset/base/218600 Log: Add BIO_FLUSH support. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid0.c projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Sat Feb 12 09:12:11 2011 (r218599) +++ projects/graid/head/sys/geom/raid/g_raid.c Sat Feb 12 11:00:34 2011 (r218600) @@ -737,6 +737,54 @@ g_raid_dirty(struct g_raid_volume *vol) g_raid_write_metadata(sc, vol, NULL, NULL); } +void +g_raid_tr_flush_common(struct g_raid_tr_object *tr, struct bio *bp) +{ + struct g_raid_softc *sc; + struct g_raid_volume *vol; + struct g_raid_subdisk *sd; + struct bio_queue_head queue; + struct bio *cbp; + int i; + + vol = tr->tro_volume; + sc = vol->v_softc; + + /* + * Allocate all bios before sending any request, so we can return + * ENOMEM in nice and clean way. + */ + bioq_init(&queue); + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_state == G_RAID_SUBDISK_S_NONE || + sd->sd_state == G_RAID_SUBDISK_S_FAILED) + continue; + cbp = g_clone_bio(bp); + if (cbp == NULL) + goto failure; + cbp->bio_caller1 = sd; + bioq_insert_tail(&queue, cbp); + } + for (cbp = bioq_first(&queue); cbp != NULL; + cbp = bioq_first(&queue)) { + bioq_remove(&queue, cbp); + sd = cbp->bio_caller1; + cbp->bio_caller1 = NULL; + g_raid_subdisk_iostart(sd, cbp); + } + return; +failure: + for (cbp = bioq_first(&queue); cbp != NULL; + cbp = bioq_first(&queue)) { + bioq_remove(&queue, cbp); + g_destroy_bio(cbp); + } + if (bp->bio_error == 0) + bp->bio_error = ENOMEM; + g_raid_iodone(bp, bp->bio_error); +} + static void g_raid_tr_kerneldump_common_done(struct bio *bp) { @@ -832,10 +880,8 @@ g_raid_start(struct bio *bp) case BIO_READ: case BIO_WRITE: case BIO_DELETE: - break; case BIO_FLUSH: - g_io_deliver(bp, EOPNOTSUPP); - return; + break; case BIO_GETATTR: if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) g_raid_kerneldump(sc, bp); Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Sat Feb 12 09:12:11 2011 (r218599) +++ projects/graid/head/sys/geom/raid/g_raid.h Sat Feb 12 11:00:34 2011 (r218600) @@ -373,6 +373,7 @@ void g_raid_write_metadata(struct g_raid void g_raid_fail_disk(struct g_raid_softc *sc, struct g_raid_subdisk *sd, struct g_raid_disk *disk); +void g_raid_tr_flush_common(struct g_raid_tr_object *tr, struct bio *bp); int g_raid_tr_kerneldump_common(struct g_raid_tr_object *tr, void *virtual, vm_offset_t physical, off_t offset, size_t length); Modified: projects/graid/head/sys/geom/raid/tr_raid0.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid0.c Sat Feb 12 09:12:11 2011 (r218599) +++ projects/graid/head/sys/geom/raid/tr_raid0.c Sat Feb 12 11:00:34 2011 (r218600) @@ -200,6 +200,10 @@ g_raid_tr_iostart_raid0(struct g_raid_tr g_raid_iodone(bp, EIO); return; } + if (bp->bio_cmd == BIO_FLUSH) { + g_raid_tr_flush_common(tr, bp); + return; + } sc = vol->v_softc; addr = bp->bio_data; Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Sat Feb 12 09:12:11 2011 (r218599) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Sat Feb 12 11:00:34 2011 (r218600) @@ -601,17 +601,8 @@ g_raid_tr_iostart_raid1_write(struct g_r continue; } cbp = g_clone_bio(bp); - if (cbp == NULL) { - for (cbp = bioq_first(&queue); cbp != NULL; - cbp = bioq_first(&queue)) { - bioq_remove(&queue, cbp); - g_destroy_bio(cbp); - } - if (bp->bio_error == 0) - bp->bio_error = ENOMEM; - g_raid_iodone(bp, bp->bio_error); - return; - } + if (cbp == NULL) + goto failure; cbp->bio_caller1 = sd; bioq_insert_tail(&queue, cbp); } @@ -622,7 +613,16 @@ g_raid_tr_iostart_raid1_write(struct g_r cbp->bio_caller1 = NULL; g_raid_subdisk_iostart(sd, cbp); } - + return; +failure: + for (cbp = bioq_first(&queue); cbp != NULL; + cbp = bioq_first(&queue)) { + bioq_remove(&queue, cbp); + g_destroy_bio(cbp); + } + if (bp->bio_error == 0) + bp->bio_error = ENOMEM; + g_raid_iodone(bp, bp->bio_error); } static void @@ -662,6 +662,9 @@ g_raid_tr_iostart_raid1(struct g_raid_tr case BIO_DELETE: g_raid_iodone(bp, EIO); break; + case BIO_FLUSH: + g_raid_tr_flush_common(tr, bp); + break; default: KASSERT(1 == 0, ("Invalid command here: %u (volume=%s)", bp->bio_cmd, vol->v_name)); From owner-svn-src-projects@FreeBSD.ORG Sat Feb 12 14:33:19 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9AD511065709; Sat, 12 Feb 2011 14:33:19 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 88BA68FC19; Sat, 12 Feb 2011 14:33:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1CEXJSV004550; Sat, 12 Feb 2011 14:33:19 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1CEXJDE004546; Sat, 12 Feb 2011 14:33:19 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102121433.p1CEXJDE004546@svn.freebsd.org> From: Alexander Motin Date: Sat, 12 Feb 2011 14:33:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218608 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Feb 2011 14:33:19 -0000 Author: mav Date: Sat Feb 12 14:33:19 2011 New Revision: 218608 URL: http://svn.freebsd.org/changeset/base/218608 Log: Make read_err_thresh variable/sysctl/tunable global. I don't see good reason why different RAID levels may need different threshold values. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Sat Feb 12 13:41:02 2011 (r218607) +++ projects/graid/head/sys/geom/raid/g_raid.c Sat Feb 12 14:33:19 2011 (r218608) @@ -59,14 +59,20 @@ u_int g_raid_debug = 2; TUNABLE_INT("kern.geom.raid.debug", &g_raid_debug); SYSCTL_UINT(_kern_geom_raid, OID_AUTO, debug, CTLFLAG_RW, &g_raid_debug, 0, "Debug level"); +int g_raid_read_err_thresh = 10; +TUNABLE_INT("kern.geom.raid.read_err_thresh", &g_raid_read_err_thresh); +SYSCTL_UINT(_kern_geom_raid, OID_AUTO, read_err_thresh, CTLFLAG_RW, + &g_raid_read_err_thresh, 0, + "Number of read errors equated to disk failure"); u_int g_raid_start_timeout = 15; TUNABLE_INT("kern.geom.raid.start_timeout", &g_raid_start_timeout); -SYSCTL_UINT(_kern_geom_raid, OID_AUTO, timeout, CTLFLAG_RW, &g_raid_start_timeout, - 0, "Time to wait for all array components"); -static u_int g_raid_cleantime = 5; -TUNABLE_INT("kern.geom.raid.cleantime", &g_raid_cleantime); -SYSCTL_UINT(_kern_geom_raid, OID_AUTO, cleantime, CTLFLAG_RW, - &g_raid_cleantime, 0, "Mark volume as clean when idling"); +SYSCTL_UINT(_kern_geom_raid, OID_AUTO, start_timeout, CTLFLAG_RW, + &g_raid_start_timeout, 0, + "Time to wait for all array components"); +static u_int g_raid_clean_time = 5; +TUNABLE_INT("kern.geom.raid.clean_time", &g_raid_clean_time); +SYSCTL_UINT(_kern_geom_raid, OID_AUTO, clean_time, CTLFLAG_RW, + &g_raid_clean_time, 0, "Mark volume as clean when idling"); static u_int g_raid_disconnect_on_failure = 1; TUNABLE_INT("kern.geom.raid.disconnect_on_failure", &g_raid_disconnect_on_failure); @@ -709,7 +715,7 @@ g_raid_clean(struct g_raid_volume *vol, return (0); if (acw > 0 || (acw == -1 && vol->v_provider != NULL && vol->v_provider->acw > 0)) { - timeout = g_raid_cleantime - (time_uptime - vol->v_last_write); + timeout = g_raid_clean_time - (time_uptime - vol->v_last_write); if (timeout > 0) return (timeout); } Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Sat Feb 12 13:41:02 2011 (r218607) +++ projects/graid/head/sys/geom/raid/g_raid.h Sat Feb 12 14:33:19 2011 (r218608) @@ -50,6 +50,7 @@ struct g_raid_tr_object; #ifdef _KERNEL extern u_int g_raid_aggressive_spare; extern u_int g_raid_debug; +extern int g_raid_read_err_thresh; extern u_int g_raid_start_timeout; extern struct g_class g_raid_class; Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Sat Feb 12 13:41:02 2011 (r218607) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Sat Feb 12 14:33:19 2011 (r218608) @@ -46,19 +46,12 @@ SYSCTL_DECL(_kern_geom_raid); SYSCTL_NODE(_kern_geom_raid, OID_AUTO, raid1, CTLFLAG_RW, 0, "RAID1 parameters"); -#define RAID1_READ_ERR_THRESH 10 /* errors to cause a rebuild */ -static int g_raid1_read_err_thresh = RAID1_READ_ERR_THRESH; -TUNABLE_INT("kern.geom.raid.raid1.read_err_thresh", &g_raid1_read_err_thresh); -SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, read_err_thresh, CTLFLAG_RW, - &g_raid1_read_err_thresh, RAID1_READ_ERR_THRESH, - "Number of read errors on a subdisk that trigger a rebuild"); - #define RAID1_REBUILD_SLAB (1 << 20) /* One transation in a rebuild */ static int g_raid1_rebuild_slab = RAID1_REBUILD_SLAB; TUNABLE_INT("kern.geom.raid.raid1.rebuild_slab_size", &g_raid1_rebuild_slab); SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, rebuild_slab_size, CTLFLAG_RW, - &g_raid1_rebuild_slab, RAID1_REBUILD_SLAB, + &g_raid1_rebuild_slab, 0, "Amount of the disk to rebuild each read/write cycle of the rebuild."); #define RAID1_REBUILD_FAIR_IO 20 /* use 1/x of the available I/O */ @@ -66,7 +59,7 @@ static int g_raid1_rebuild_fair_io = RAI TUNABLE_INT("kern.geom.raid.raid1.rebuild_fair_io", &g_raid1_rebuild_fair_io); SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, rebuild_fair_io, CTLFLAG_RW, - &g_raid1_rebuild_fair_io, RAID1_REBUILD_FAIR_IO, + &g_raid1_rebuild_fair_io, 0, "Fraction of the I/O bandwidth to use when disk busy for rebuild."); #define RAID1_REBUILD_CLUSTER_IDLE 100 @@ -74,7 +67,7 @@ static int g_raid1_rebuild_cluster_idle TUNABLE_INT("kern.geom.raid.raid1.rebuild_cluster_idle", &g_raid1_rebuild_cluster_idle); SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, rebuild_cluster_idle, CTLFLAG_RW, - &g_raid1_rebuild_cluster_idle, RAID1_REBUILD_CLUSTER_IDLE, + &g_raid1_rebuild_cluster_idle, 0, "Number of slabs to do each time we trigger a rebuild cycle"); #define RAID1_REBUILD_META_UPDATE 1024 /* update meta data every 1GB or so */ @@ -82,7 +75,7 @@ static int g_raid1_rebuild_meta_update = TUNABLE_INT("kern.geom.raid.raid1.rebuild_meta_update", &g_raid1_rebuild_meta_update); SYSCTL_UINT(_kern_geom_raid_raid1, OID_AUTO, rebuild_meta_update, CTLFLAG_RW, - &g_raid1_rebuild_meta_update, RAID1_REBUILD_META_UPDATE, + &g_raid1_rebuild_meta_update, 0, "When to update the meta data."); static MALLOC_DEFINE(M_TR_RAID1, "tr_raid1_data", "GEOM_RAID RAID1 data"); @@ -833,7 +826,7 @@ rebuild_round_done: * drive, which kicks off a resync? */ do_write = 1; - if (sd->sd_disk->d_read_errs > g_raid1_read_err_thresh) { + if (sd->sd_disk->d_read_errs > g_raid_read_err_thresh) { g_raid_tr_raid1_fail_disk(sd->sd_softc, sd, sd->sd_disk); if (pbp->bio_children == 1) do_write = 0; From owner-svn-src-projects@FreeBSD.ORG Sat Feb 12 21:06:12 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D04FC106566B; Sat, 12 Feb 2011 21:06:12 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BFE698FC08; Sat, 12 Feb 2011 21:06:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1CL6CTn014971; Sat, 12 Feb 2011 21:06:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1CL6CXF014969; Sat, 12 Feb 2011 21:06:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102122106.p1CL6CXF014969@svn.freebsd.org> From: Alexander Motin Date: Sat, 12 Feb 2011 21:06:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218622 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Feb 2011 21:06:12 -0000 Author: mav Date: Sat Feb 12 21:06:12 2011 New Revision: 218622 URL: http://svn.freebsd.org/changeset/base/218622 Log: Refactor striping code. No need to unroll first loop iteration. It could be easily handled in common way. Modified: projects/graid/head/sys/geom/raid/tr_raid0.c Modified: projects/graid/head/sys/geom/raid/tr_raid0.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid0.c Sat Feb 12 20:58:59 2011 (r218621) +++ projects/graid/head/sys/geom/raid/tr_raid0.c Sat Feb 12 21:06:12 2011 (r218622) @@ -185,13 +185,12 @@ g_raid_tr_stop_raid0(struct g_raid_tr_ob static void g_raid_tr_iostart_raid0(struct g_raid_tr_object *tr, struct bio *bp) { - struct g_raid_softc *sc; struct g_raid_volume *vol; struct g_raid_subdisk *sd; struct bio_queue_head queue; struct bio *cbp; char *addr; - off_t offset, start, length, nstripe; + off_t offset, start, length, nstripe, remain; u_int no, strip_size; vol = tr->tro_volume; @@ -204,8 +203,6 @@ g_raid_tr_iostart_raid0(struct g_raid_tr g_raid_tr_flush_common(tr, bp); return; } - sc = vol->v_softc; - addr = bp->bio_data; strip_size = vol->v_strip_size; @@ -215,55 +212,30 @@ g_raid_tr_iostart_raid0(struct g_raid_tr start = bp->bio_offset % strip_size; /* Disk number. */ no = nstripe % vol->v_disks_count; - /* Start position in disk. */ - offset = (nstripe / vol->v_disks_count) * strip_size + start; + /* Stripe start position in disk. */ + offset = (nstripe / vol->v_disks_count) * strip_size; /* Length of data to operate. */ - length = MIN(bp->bio_length, strip_size - start); + remain = bp->bio_length; - /* - * Allocate all bios before sending any request, so we can - * return ENOMEM in nice and clean way. - */ bioq_init(&queue); - cbp = g_clone_bio(bp); - if (cbp == NULL) - goto failure; - /* - * Fill in the component buf structure. - */ - cbp->bio_offset = offset; - cbp->bio_data = addr; - cbp->bio_length = length; - cbp->bio_caller1 = &vol->v_subdisks[no]; - bioq_insert_tail(&queue, cbp); - - offset -= offset % strip_size; - addr += length; - length = bp->bio_length - length; - for (no++; length > 0; - no++, length -= strip_size, addr += strip_size) { - if (no > vol->v_disks_count - 1) { - no = 0; - offset += strip_size; - } + do { + length = MIN(strip_size - start, remain); cbp = g_clone_bio(bp); if (cbp == NULL) goto failure; - - /* - * Fill in the component buf structure. - */ - cbp->bio_offset = offset; + cbp->bio_offset = offset + start; cbp->bio_data = addr; - /* - * MIN() is in case when - * (bp->bio_length % sc->sc_stripesize) != 0. - */ - cbp->bio_length = MIN(strip_size, length); - + cbp->bio_length = length; cbp->bio_caller1 = &vol->v_subdisks[no]; bioq_insert_tail(&queue, cbp); - } + if (++no >= vol->v_disks_count) { + no = 0; + offset += strip_size; + } + remain -= length; + addr += length; + start = 0; + } while (remain > 0); for (cbp = bioq_first(&queue); cbp != NULL; cbp = bioq_first(&queue)) { bioq_remove(&queue, cbp); @@ -287,50 +259,43 @@ int g_raid_tr_kerneldump_raid0(struct g_raid_tr_object *tr, void *virtual, vm_offset_t physical, off_t boffset, size_t blength) { - struct g_raid_softc *sc; struct g_raid_volume *vol; char *addr; - off_t offset, start, length, nstripe; + off_t offset, start, length, nstripe, remain; u_int no, strip_size; int error; vol = tr->tro_volume; if (vol->v_state != G_RAID_VOLUME_S_OPTIMAL) return (ENXIO); - sc = vol->v_softc; - addr = virtual; strip_size = vol->v_strip_size; + /* Stripe number. */ nstripe = boffset / strip_size; /* Start position in stripe. */ start = boffset % strip_size; /* Disk number. */ no = nstripe % vol->v_disks_count; - /* Start position in disk. */ - offset = (nstripe / vol->v_disks_count) * strip_size + start; + /* Stripe tart position in disk. */ + offset = (nstripe / vol->v_disks_count) * strip_size; /* Length of data to operate. */ - length = MIN(blength, strip_size - start); + remain = blength; - error = g_raid_subdisk_kerneldump(&vol->v_subdisks[no], - addr, 0, offset, length); - if (error != 0) - return (error); - - offset -= offset % strip_size; - addr += length; - length = blength - length; - for (no++; length > 0; - no++, length -= strip_size, addr += strip_size) { - if (no > vol->v_disks_count - 1) { - no = 0; - offset += strip_size; - } + do { + length = MIN(strip_size - start, remain); error = g_raid_subdisk_kerneldump(&vol->v_subdisks[no], - addr, 0, offset, MIN(strip_size, length)); + addr, 0, offset + start, length); if (error != 0) return (error); - } + if (++no >= vol->v_disks_count) { + no = 0; + offset += strip_size; + } + remain -= length; + addr += length; + start = 0; + } while (remain > 0); return (0); } From owner-svn-src-projects@FreeBSD.ORG Sat Feb 12 21:30:09 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2CA55106564A; Sat, 12 Feb 2011 21:30:09 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 15BA78FC12; Sat, 12 Feb 2011 21:30:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p1CLU8o6015535; Sat, 12 Feb 2011 21:30:08 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1CLU8xx015533; Sat, 12 Feb 2011 21:30:08 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102122130.p1CLU8xx015533@svn.freebsd.org> From: Alexander Motin Date: Sat, 12 Feb 2011 21:30:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218624 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Feb 2011 21:30:09 -0000 Author: mav Date: Sat Feb 12 21:30:08 2011 New Revision: 218624 URL: http://svn.freebsd.org/changeset/base/218624 Log: Transpose logical expression to make it more readable. Fix minor off by one mistake in it. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Sat Feb 12 21:17:38 2011 (r218623) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Sat Feb 12 21:30:08 2011 (r218624) @@ -504,10 +504,9 @@ g_raid_tr_raid1_select_read_disk(struct for (i = 0; i < vol->v_disks_count; i++) { sd = &vol->v_subdisks[i]; if (sd->sd_state != G_RAID_SUBDISK_S_ACTIVE && - !((sd->sd_state == G_RAID_SUBDISK_S_REBUILD || - sd->sd_state == G_RAID_SUBDISK_S_RESYNC) && - bp->bio_offset + bp->bio_length < - sd->sd_rebuild_pos)) + ((sd->sd_state != G_RAID_SUBDISK_S_REBUILD && + sd->sd_state != G_RAID_SUBDISK_S_RESYNC) || + bp->bio_offset + bp->bio_length > sd->sd_rebuild_pos)) continue; if ((mask & (1 << i)) != 0) continue;