Date: Fri, 4 Feb 2011 08:11:44 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r218255 - projects/graid/head/sys/geom/raid Message-ID: <201102040811.p148BiL5074244@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mav Date: Fri Feb 4 08:11:44 2011 New Revision: 218255 URL: http://svn.freebsd.org/changeset/base/218255 Log: Rename v_idle to v_dirty, which is closer to it's meaning. Clean volume doesn't mean idle volume. 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 Fri Feb 4 07:15:39 2011 (r218254) +++ projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 4 08:11:44 2011 (r218255) @@ -63,10 +63,10 @@ u_int g_raid_start_timeout = 4; 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 on all mirror components"); -static u_int g_raid_idletime = 5; -TUNABLE_INT("kern.geom.raid.idletime", &g_raid_idletime); -SYSCTL_UINT(_kern_geom_raid, OID_AUTO, idletime, CTLFLAG_RW, - &g_raid_idletime, 0, "Mark components as clean when idling"); +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"); static u_int g_raid_disconnect_on_failure = 1; TUNABLE_INT("kern.geom.raid.disconnect_on_failure", &g_raid_disconnect_on_failure); @@ -660,7 +660,7 @@ g_raid_orphan(struct g_consumer *cp) } static int -g_raid_idle(struct g_raid_volume *vol, int acw) +g_raid_clean(struct g_raid_volume *vol, int acw) { struct g_raid_softc *sc; int timeout; @@ -671,17 +671,17 @@ g_raid_idle(struct g_raid_volume *vol, i // if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) // return (0); - if (vol->v_idle) + if (!vol->v_dirty) return (0); if (vol->v_writes > 0) return (0); if (acw > 0 || (acw == -1 && vol->v_provider != NULL && vol->v_provider->acw > 0)) { - timeout = g_raid_idletime - (time_uptime - vol->v_last_write); + timeout = g_raid_cleantime - (time_uptime - vol->v_last_write); if (timeout > 0) return (timeout); } - vol->v_idle = 1; + vol->v_dirty = 0; G_RAID_DEBUG(1, "Volume %s (node %s) marked as clean.", vol->v_name, sc->sc_name); g_raid_write_metadata(sc, vol, NULL, NULL); @@ -689,7 +689,7 @@ g_raid_idle(struct g_raid_volume *vol, i } static void -g_raid_unidle(struct g_raid_volume *vol) +g_raid_dirty(struct g_raid_volume *vol) { struct g_raid_softc *sc; @@ -699,7 +699,7 @@ g_raid_unidle(struct g_raid_volume *vol) // if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0) // return; - vol->v_idle = 0; + vol->v_dirty = 1; G_RAID_DEBUG(1, "Volume %s (node %s) marked as dirty.", vol->v_name, sc->sc_name); g_raid_write_metadata(sc, vol, NULL, NULL); @@ -897,8 +897,8 @@ g_raid_start_request(struct bio *bp) * update the idle stats for the volume. */ if (bp->bio_cmd == BIO_WRITE || bp->bio_cmd == BIO_DELETE) { - if (vol->v_idle) - g_raid_unidle(vol); + if (!vol->v_dirty) + g_raid_dirty(vol); vol->v_writes++; } @@ -1202,8 +1202,8 @@ process: } if (rv == EWOULDBLOCK) { TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { - if (vol->v_writes == 0 && !vol->v_idle) - g_raid_idle(vol, -1); + if (vol->v_writes == 0 && vol->v_dirty) + g_raid_clean(vol, -1); if (bioq_first(&vol->v_inflight) == NULL && vol->v_tr) G_RAID_TR_IDLE(vol->v_tr); @@ -1478,8 +1478,8 @@ g_raid_access(struct g_provider *pp, int error = ENXIO; goto out; } - if (dcw == 0 && !vol->v_idle) - g_raid_idle(vol, dcw); + if (dcw == 0 && vol->v_dirty) + g_raid_clean(vol, dcw); vol->v_provider_open += acr + acw + ace; /* Handle delayed node destruction. */ if (sc->sc_stopping == G_RAID_DESTROY_DELAYED && @@ -1561,7 +1561,6 @@ g_raid_create_volume(struct g_raid_softc bioq_init(&vol->v_inflight); bioq_init(&vol->v_locked); LIST_INIT(&vol->v_locks); - vol->v_idle = 1; for (i = 0; i < G_RAID_MAX_SUBDISKS; i++) { vol->v_subdisks[i].sd_softc = sc; vol->v_subdisks[i].sd_volume = vol; Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Fri Feb 4 07:15:39 2011 (r218254) +++ projects/graid/head/sys/geom/raid/g_raid.h Fri Feb 4 08:11:44 2011 (r218255) @@ -227,7 +227,7 @@ struct g_raid_volume { struct bio_queue_head v_locked; /* Blocked I/O requests. */ LIST_HEAD(, g_raid_lock) v_locks; /* List of locked regions. */ int v_pending_lock; /* writes to locked region */ - int v_idle; /* DIRTY flags removed. */ + int v_dirty; /* Volume is DIRTY. */ time_t v_last_write; /* Time of the last write. */ u_int v_writes; /* Number of active writes. */ struct root_hold_token *v_rootmount; /* Root mount delay token. */ Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Fri Feb 4 07:15:39 2011 (r218254) +++ projects/graid/head/sys/geom/raid/md_intel.c Fri Feb 4 08:11:44 2011 (r218255) @@ -1989,7 +1989,7 @@ g_raid_md_write_intel(struct g_raid_md_o mvol->migr_type = INTEL_MT_REPAIR; } else mvol->migr_state = 0; - mvol->dirty = !vol->v_idle; + mvol->dirty = vol->v_dirty; mmap0 = intel_get_map(mvol, 0);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102040811.p148BiL5074244>