Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Mar 2014 11:00:38 -0400
From:      mikej <mikej@mikej.com>
To:        Karl Denninger <karl@denninger.net>, <freebsd-fs@freebsd.org>
Subject:   Re: kern/187594: [zfs] [patch] ZFS ARC behavior problem and fix [SB QUAR: Fri Mar 21 16:01:12 2014]
Message-ID:  <b389a3b124e16432b446d73e794e9c86@mail.mikej.com>
In-Reply-To: <532CD3BC.5020305@denninger.net>
References:  <201403201710.s2KHA0e9043051@freefall.freebsd.org> <31e2f5092048c128add6f4cd3d136f4d@mail.mikej.com> <532CD3BC.5020305@denninger.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Karl,

Not being a C coder it appears a declaration is missing.

--- arc.o ---
/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:2614:15: 
error: use of undeclared identifier 'cnt'
                 freepages = cnt.v_free_target - (cnt.v_free_target / 
33);

Thanks again,
Michael Jung


On 2014-03-21 20:05, Karl Denninger wrote:
> Here 'ya go...
>
>  Please keep me posted (the list is best as the more public 
> commentary
> the better, and if this needs more tuning that's the way to find 
> out!)
> on how it works for you.
>
>  I have it in production at this point and am happy with it -- the
> current default is at the pager "wakeup" level less 3%, but it of
> course can be tuned manually.
>
> On 3/21/2014 3:59 PM, mikej wrote:
>
>> Karl,
>>
>> I've looked at my raw mailbox and something is trashing tabs and
>> line
>> length for your more recent patches in email.
>>
>> I did not see any attachments, nor updates to the PR for download -
>> would
>> you mind sending me the latest patch as an attachment?
>>
>> Thanks for your work, I believe this is going to add real stability
>>
>> without having to set vfs.zfs.arc_max and other tunables.
>>
>> Kind regards,
>>
>> Michael Jung
>>
>> On 2014-03-20 13:10, Karl Denninger wrote:
>>
>>> The following reply was made to PR kern/187594; it has been noted
>>> by GNATS.
>>>
>>> From: Karl Denninger [1]
>>> To: bug-followup@FreeBSD.org [2], karl@fs.denninger.net [3]
>>> Cc:
>>> Subject: Re: kern/187594: [zfs] [patch] ZFS ARC behavior problem
>>> and fix
>>> Date: Thu, 20 Mar 2014 12:00:54 -0500
>>>
>>>  This is a cryptographically signed message in MIME format.
>>>
>>>  --------------ms010508000607000909070805
>>>  Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>>  Content-Transfer-Encoding: quoted-printable
>>>
>>>  Responsive to avg's comment and with another overnight and
>>> daytime load=20
>>>  of testing on multiple machines with varying memory configs
>>> from 4-24GB=20
>>>  of RAM here is another version of the patch.
>>>
>>>  The differences are:
>>>
>>>  1. No longer use kernel_sysctlbyname, include the VM header
>>> file and get =
>>>
>>>  the values directly (less overhead.)  Remove the variables no
>>> longer need=
>>>  ed.
>>>
>>>  2. Set the default free RAM level for ARC shrinkage to
>>> v_free_target=20
>>>  less 3% as I was able to provoke a stall once with it set to a
>>> 5%=20
>>>  reservation, was able to provoke it with the parameter set to
>>> 10% with a =
>>>
>>>  lot of work and was able to do so "on demand" with it set to
>>> 20%.  With=20
>>>  a 5% invasion initiating a scrub with very heavy I/O and image
>>> load=20
>>>  (hundreds of web and database processes) provoked a ~10 second
>>> system=20
>>>  stall.  With it set to 3% I have not been able to reproduce
>>> the stall=20
>>>  yet the inactive page count remains stable even under extremely
>>> heavy=20
>>>  load, indicating that page-stealing remains effective when
>>> required. =20
>>>  Note that for my workload even with this level set above
>>> v_free_target,=20
>>>  which would imply no page stealing by the VM system before ARC
>>> expansion =
>>>
>>>  is halted, I do not get unbridled inactive page growth.
>>>
>>>  As before vfs.zfs.zrc_freepages and
>>> vfs.zfs.arc_freepage_percent remain=20
>>>  as accessible knobs if you wish to twist them for some reason
>>> to=20
>>>  compensate for an unusual load profile or machine
>>> configuration.
>>>
>>>  *** arc.c.original    Thu Mar 13 09:18:48 2014
>>>  --- arc.c    Thu Mar 20 11:51:48 2014
>>>  ***************
>>>  *** 18,23 ****
>>>  --- 18,94 ----
>>>      *
>>>      * CDDL HEADER END
>>>      */
>>>  +
>>>  + /* Karl Denninger (karl@denninger.net [4]), 3/20/2014,
>>> FreeBSD-specific
>>>  +  *
>>>  +  * If "NEWRECLAIM" is defined, change the "low memory"
>>> warning that cau=
>>>  ses
>>>  +  * the ARC cache to be pared down.  The reason for the
>>> change is that t=
>>>  he
>>>  +  * apparent attempted algorithm is to start evicting ARC
>>> cache when fre=
>>>  e
>>>  +  * pages fall below 25% of installed RAM.  This maps
>>> reasonably well to=
>>>   how
>>>  +  * Solaris is documented to behave; when "lotsfree" is
>>> invaded ZFS is t=
>>>  old
>>>  +  * to pare down.
>>>  +  *
>>>  +  * The problem is that on FreeBSD machines the system
>>> doesn't appear to=
>>>   be
>>>  +  * getting what the authors of the original code thought
>>> they were look=
>>>  ing at
>>>  +  * with its test -- or at least not what Solaris did -- and
>>> as a result=
>>>   that
>>>  +  * test never triggers.  That leaves the only reclaim
>>> trigger as the "p=
>>>  aging
>>>  +  * needed" status flag, and by the time * that trips the
>>> system is alre=
>>>  ady
>>>  +  * in low-memory trouble.  This can lead to severe
>>> pathological behavio=
>>>  r
>>>  +  * under the following scenario:
>>>  +  * - The system starts to page and ARC is evicted.
>>>  +  * - The system stops paging as ARC's eviction drops wired
>>> RAM a bit.
>>>  +  * - ARC starts increasing its allocation again, and wired
>>> memory grows=
>>>  =2E
>>>  +  * - A new image is activated, and the system once again
>>> attempts to pa=
>>>  ge.
>>>  +  * - ARC starts to be evicted again.
>>>  +  * - Back to #2
>>>  +  *
>>>  +  * Note that ZFS's ARC default (unless you override it in
>>> /boot/loader.=
>>>  conf)
>>>  +  * is to allow the ARC cache to grab nearly all of free RAM,
>>> provided n=
>>>  obody
>>>  +  * else needs it.  That would be ok if we evicted cache
>>> when required.
>>>  +  *
>>>  +  * Unfortunately the system can get into a state where it
>>> never
>>>  +  * manages to page anything of materiality back in, as if
>>> there is acti=
>>>  ve
>>>  +  * I/O the ARC will start grabbing space once again as soon
>>> as the memo=
>>>  ry
>>>  +  * contention state drops.  For this reason the "paging is
>>> occurring" f=
>>>  lag
>>>  +  * should be the **last resort** condition for ARC eviction;
>>> you want t=
>>>  o
>>>  +  * (as Solaris does) start when there is material free RAM
>>> left BUT the=
>>>
>>>  +  * vm system thinks it needs to be active to steal pages
>>> back in the at=
>>>  tempt
>>>  +  * to never get into the condition where you're potentially
>>> paging off
>>>  +  * executables in favor of leaving disk cache allocated.
>>>  +  *
>>>  +  * To fix this we change how we look at low memory,
>>> declaring two new
>>>  +  * runtime tunables.
>>>  +  *
>>>  +  * The new sysctls are:
>>>  +  * vfs.zfs.arc_freepages (free pages required to call RAM
>>> "sufficient")=
>>>
>>>  +  * vfs.zfs.arc_freepage_percent (additional reservation
>>> percentage, def=
>>>  ault 0)
>>>  +  *
>>>  +  * vfs.zfs.arc_freepages is initialized from
>>> vm.v_free_target, less 3%.=
>>>
>>>  +  * This should insure that we allow the VM system to steal
>>> pages first,=
>>>
>>>  +  * but pare the cache before we suspend processes attempting
>>> to get mor=
>>>  e
>>>  +  * memory, thereby avoiding "stalls."  You can set this
>>> higher if you w=
>>>  ish,
>>>  +  * or force a specific percentage reservation as well, but
>>> doing so may=
>>>
>>>  +  * cause the cache to pare back while the VM system remains
>>> willing to
>>>  +  * allow "inactive" pages to accumulate.  The challenge is
>>> that image
>>>  +  * activation can force things into the page space on a
>>> repeated basis
>>>  +  * if you allow this level to be too small (the above
>>> pathological
>>>  +  * behavior); the defaults should avoid that behavior but
>>> the sysctls
>>>  +  * are exposed should your workload require adjustment.
>>>  +  *
>>>  +  * If we're using this check for low memory we are replacing
>>> the previo=
>>>  us
>>>  +  * ones, including the oddball "random" reclaim that appears
>>> to fire fa=
>>>  r
>>>  +  * more often than it should.  We still trigger if the
>>> system pages.
>>>  +  *
>>>  +  * If you turn on NEWRECLAIM_DEBUG then the kernel will
>>> print on the co=
>>>  nsole
>>>  +  * status messages when the reclaim status trips on and off,
>>> along with=
>>>   the
>>>  +  * page count aggregate that triggered it (and the free
>>> space) for each=
>>>
>>>  +  * event.
>>>  +  */
>>>  +
>>>  + #define    NEWRECLAIM
>>>  + #undef    NEWRECLAIM_DEBUG
>>>  +
>>>  +
>>>     /*
>>>      * Copyright (c) 2005, 2010, Oracle and/or its
>>> affiliates. All rights =
>>>  reserved.
>>>      * Copyright (c) 2013 by Delphix. All rights reserved.
>>>  ***************
>>>  *** 139,144 ****
>>>  --- 210,222 ----
>>>    =20
>>>     #include
>>>    =20
>>>  + #ifdef    NEWRECLAIM
>>>  + #ifdef    __FreeBSD__
>>>  + #include
>>>  + #include
>>>  + #endif
>>>  + #endif    /* NEWRECLAIM */
>>>  +
>>>     #ifdef illumos
>>>     #ifndef _KERNEL
>>>     /* set with ZFS_DEBUG=3Dwatch, to enable watchpoints on
>>> frozen buffers=
>>>   */
>>>  ***************
>>>  *** 203,218 ****
>>>  --- 281,316 ----
>>>     int zfs_arc_shrink_shift =3D 0;
>>>     int zfs_arc_p_min_shift =3D 0;
>>>     int zfs_disable_dup_eviction =3D 0;
>>>  + #ifdef    NEWRECLAIM
>>>  + #ifdef  __FreeBSD__
>>>  + static    int freepages =3D 0;    /* This much memory
>>> is considered critical =
>>>  */
>>>  + static    int percent_target =3D 0;    /* Additionally
>>> reserve "X" percent fr=
>>>  ee RAM */
>>>  + #endif    /* __FreeBSD__ */
>>>  + #endif    /* NEWRECLAIM */
>>>    =20
>>>     TUNABLE_QUAD("vfs.zfs.arc_max", &zfs_arc_max);
>>>     TUNABLE_QUAD("vfs.zfs.arc_min", &zfs_arc_min);
>>>     TUNABLE_QUAD("vfs.zfs.arc_meta_limit",
>>> &zfs_arc_meta_limit);
>>>  + #ifdef    NEWRECLAIM
>>>  + #ifdef  __FreeBSD__
>>>  + TUNABLE_INT("vfs.zfs.arc_freepages", &freepages);
>>>  + TUNABLE_INT("vfs.zfs.arc_freepage_percent", &percent_target);
>>>
>>>  + #endif    /* __FreeBSD__ */
>>>  + #endif    /* NEWRECLAIM */
>>>  +
>>>     SYSCTL_DECL(_vfs_zfs);
>>>     SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, arc_max, CTLFLAG_RDTUN,
>>> &zfs_arc_max,=
>>>   0,
>>>         "Maximum ARC size");
>>>     SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, arc_min, CTLFLAG_RDTUN,
>>> &zfs_arc_min,=
>>>   0,
>>>         "Minimum ARC size");
>>>    =20
>>>  + #ifdef    NEWRECLAIM
>>>  + #ifdef  __FreeBSD__
>>>  + SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_freepages, CTLFLAG_RWTUN,
>>> &freepages=
>>>  , 0, "ARC Free RAM Pages Required");
>>>  + SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_freepage_percent,
>>> CTLFLAG_RWTUN, &pe=
>>>  rcent_target, 0, "ARC Free RAM Target percentage");
>>>  + #endif    /* __FreeBSD__ */
>>>  + #endif    /* NEWRECLAIM */
>>>  +
>>>     /*
>>>      * Note that buffers can be in one of 6 states:
>>>      *    ARC_anon    - anonymous (discussed below)
>>>  ***************
>>>  *** 2438,2443 ****
>>>  --- 2536,2546 ----
>>>     {
>>>    =20
>>>     #ifdef _KERNEL
>>>  + #ifdef    NEWRECLAIM_DEBUG
>>>  +     static    int    xval =3D -1;
>>>  +     static    int    oldpercent =3D 0;
>>>  +     static    int    oldfreepages =3D 0;
>>>  + #endif    /* NEWRECLAIM_DEBUG */
>>>    =20
>>>         if (needfree)
>>>             return (1);
>>>  ***************
>>>  *** 2476,2481 ****
>>>  --- 2579,2585 ----
>>>             return (1);
>>>    =20
>>>     #if defined(__i386)
>>>  +
>>>         /*
>>>          * If we're on an i386 platform, it's possible
>>> that we'll exhaust the=
>>>
>>>          * kernel heap space before we ever run out of
>>> available physical
>>>  ***************
>>>  *** 2492,2502 ****
>>>             return (1);
>>>     #endif
>>>     #else    /* !sun */
>>>         if (kmem_used() > (kmem_size() * 3) / 4)
>>>             return (1);
>>>     #endif    /* sun */
>>>    =20
>>>  - #else
>>>         if (spa_get_random(100) =3D=3D 0)
>>>             return (1);
>>>     #endif
>>>  --- 2596,2658 ----
>>>             return (1);
>>>     #endif
>>>     #else    /* !sun */
>>>  +
>>>  + #ifdef    NEWRECLAIM
>>>  + #ifdef  __FreeBSD__
>>>  + /*
>>>  +  * Implement the new tunable free RAM algorithm.  We check
>>> the free pag=
>>>  es
>>>  +  * against the minimum specified target and the percentage
>>> that should =
>>>  be
>>>  +  * free.  If we're low we ask for ARC cache shrinkage.  If
>>> this is defi=
>>>  ned
>>>  +  * on a FreeBSD system the older checks are not performed.
>>>  +  *
>>>  +  * Check first to see if we need to init freepages, then
>>> test.
>>>  +  */
>>>  +     if (!freepages) {        /* If zero then
>>> (re)init */
>>>  +         freepages =3D cnt.v_free_target -
>>> (cnt.v_free_target / 33);
>>>  + #ifdef    NEWRECLAIM_DEBUG
>>>  +         printf("ZFS ARC: Default
>>> vfs.zfs.arc_freepages to [%u] [%u less 3%%]=
>>>  n", freepages, cnt.v_free_target);
>>>  + #endif    /* NEWRECLAIM_DEBUG */
>>>  +     }
>>>  + #ifdef    NEWRECLAIM_DEBUG
>>>  +     if (percent_target !=3D oldpercent) {
>>>  +         printf("ZFS ARC: Reservation percent change
>>> to [%d], [%d] pages, [%d]=
>>>   freen", percent_target, cnt.v_page_count, cnt.v_free_count);
>>>  +         oldpercent =3D percent_target;
>>>  +     }
>>>  +     if (freepages !=3D oldfreepages) {
>>>  +         printf("ZFS ARC: Low RAM page change to [%d],
>>> [%d] pages, [%d] freen=
>>>  ", freepages, cnt.v_page_count, cnt.v_free_count);
>>>  +         oldfreepages =3D freepages;
>>>  +     }
>>>  + #endif    /* NEWRECLAIM_DEBUG */
>>>  + /*
>>>  +  * Now figure out how much free RAM we require to call the
>>> ARC cache st=
>>>  atus
>>>  +  * "ok".  Add the percentage specified of the total to the
>>> base require=
>>>  ment.
>>>  +  */
>>>  +
>>>  +     if (cnt.v_free_count < freepages + ((cnt.v_page_count
>>> / 100) * percent=
>>>  _target)) {
>>>  + #ifdef    NEWRECLAIM_DEBUG
>>>  +         if (xval !=3D 1) {
>>>  +             printf("ZFS ARC: RECLAIM total %u,
>>> free %u, free pct (%u), reserved =
>>>  (%u), target pct (%u)n", cnt.v_page_count, cnt.v_free_count,
>>> ((cnt.v_fre=
>>>  e_count * 100) / cnt.v_page_count), freepages, percent_target);
>>>
>>>  +             xval =3D 1;
>>>  +         }
>>>  + #endif    /* NEWRECLAIM_DEBUG */
>>>  +         return(1);
>>>  +     } else {
>>>  + #ifdef    NEWRECLAIM_DEBUG
>>>  +         if (xval !=3D 0) {
>>>  +             printf("ZFS ARC: NORMAL total %u,
>>> free %u, free pct (%u), reserved (=
>>>  %u), target pct (%u)n", cnt.v_page_count, cnt.v_free_count,
>>> ((cnt.v_free=
>>>  _count * 100) / cnt.v_page_count), freepages, percent_target);
>>>  +             xval =3D 0;
>>>  +         }
>>>  + #endif    /* NEWRECLAIM_DEBUG */
>>>  +         return(0);
>>>  +     }
>>>  +
>>>  + #endif    /* __FreeBSD__ */
>>>  + #endif    /* NEWRECLAIM */
>>>  +
>>>         if (kmem_used() > (kmem_size() * 3) / 4)
>>>             return (1);
>>>     #endif    /* sun */
>>>    =20
>>>         if (spa_get_random(100) =3D=3D 0)
>>>             return (1);
>>>     #endif
>>>
>>>  --=20
>>>  -- Karl
>>>  karl@denninger.net [5]
>>>
>>>  --------------ms010508000607000909070805
>>>  Content-Type: application/pkcs7-signature; name="smime.p7s"
>>>  Content-Transfer-Encoding: base64
>>>  Content-Disposition: attachment; filename="smime.p7s"
>>>  Content-Description: S/MIME Cryptographic Signature
>>>
>>>  
>>>
>>
> 
> MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIFTzCC
>>>
>>>  
>>>
>>
> 
> BUswggQzoAMCAQICAQgwDQYJKoZIhvcNAQEFBQAwgZ0xCzAJBgNVBAYTAlVTMRAwDgYDVQQI
>>>
>>>  
>>>
>>
> 
> EwdGbG9yaWRhMRIwEAYDVQQHEwlOaWNldmlsbGUxGTAXBgNVBAoTEEN1ZGEgU3lzdGVtcyBM
>>>
>>>  
>>>
>>
> 
> TEMxHDAaBgNVBAMTE0N1ZGEgU3lzdGVtcyBMTEMgQ0ExLzAtBgkqhkiG9w0BCQEWIGN1c3Rv
>>>
>>>  
>>>
>>
> 
> bWVyLXNlcnZpY2VAY3VkYXN5c3RlbXMubmV0MB4XDTEzMDgyNDE5MDM0NFoXDTE4MDgyMzE5
>>>
>>>  
>>>
>>
> 
> MDM0NFowWzELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExFzAVBgNVBAMTDkthcmwg
>>>
>>>  
>>>
>>
> 
> RGVubmluZ2VyMSEwHwYJKoZIhvcNAQkBFhJrYXJsQGRlbm5pbmdlci5uZXQwggIiMA0GCSqG
>>>
>>>  
>>>
>>
> 
> SIb3DQEBAQUAA4ICDwAwggIKAoICAQC5n2KBrBmG22nVntVdvgKCB9UcnapNThrW1L+dq6th
>>>
>>>  
>>>
>>
> 
> d9l4mj+qYMUpJ+8I0rTbY1dn21IXQBoBQmy8t1doKwmTdQ59F0FwZEPt/fGbRgBKVt3Quf6W
>>>
>>>  
>>>
>>
> 
> 6n7kRk9MG6gdD7V9vPpFV41e+5MWYtqGWY3ScDP8SyYLjL/Xgr+5KFKkDfuubK8DeNqdLniV
>>>
>>>  
>>>
>>
> 
> jHo/vqmIgO+6NgzPGPgmbutzFQXlxUqjiNAAKzF2+Tkddi+WKABrcc/EqnBb0X8GdqcIamO5
>>>
>>>  
>>>
>>
> 
> SyVmuM+7Zdns7D9pcV16zMMQ8LfNFQCDvbCuuQKMDg2F22x5ekYXpwjqTyfjcHBkWC8vFNoY
>>>
>>>  
>>>
>>
> 
> 5aFMdyiN/Kkz0/kduP2ekYOgkRqcShfLEcG9SQ4LQZgqjMpTjSOGzBr3tOvVn5LkSJSHW2Z8
>>>
>>>  
>>>
>>
> 
> Q0dxSkvFG2/lsOWFbwQeeZSaBi5vRZCYCOf5tRd1+E93FyQfpt4vsrXshIAk7IK7f0qXvxP4
>>>
>>>  
>>>
>>
> 
> GDli5PKIEubD2Bn+gp3vB/DkfKySh5NBHVB+OPCoXRUWBkQxme65wBO02OZZt0k8Iq0i4Rci
>>>
>>>  
>>>
>>
> 
> WV6z+lQHqDKtaVGgMsHn6PoeYhjf5Al5SP+U3imTjF2aCca1iDB5JOccX04MNljvifXgcbJN
>>>
>>>  
>>>
>>
> 
> nkMgrzmm1ZgJ1PLur/ADWPlnz45quOhHg1TfUCLfI/DzgG7Z6u+oy4siQuFr9QT0MQIDAQAB
>>>
>>>  
>>>
>>
> 
> o4HWMIHTMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMAsGA1UdDwQEAwIF4DAsBglg
>>>
>>>  
>>>
>>
> 
> hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFHw4
>>>
>>>  
>>>
>>
> 
> +LnuALyLA5Cgy7T5ZAX1WzKPMB8GA1UdIwQYMBaAFF3U3hpBZq40HB5VM7B44/gmXiI0MDgG
>>>
>>>  
>>>
>>
> 
> CWCGSAGG+EIBAwQrFilodHRwczovL2N1ZGFzeXN0ZW1zLm5ldDoxMTQ0My9yZXZva2VkLmNy
>>>
>>>  
>>>
>>
> 
> bDANBgkqhkiG9w0BAQUFAAOCAQEAZ0L4tQbBd0hd4wuw/YVqEBDDXJ54q2AoqQAmsOlnoxLO
>>>
>>>  
>>>
>>
> 
> 31ehM/LvrTIP4yK2u1VmXtUumQ4Ao15JFM+xmwqtEGsh70RRrfVBAGd7KOZ3GB39FP2TgN/c
>>>
>>>  
>>>
>>
> 
> L5fJKVxOqvEnW6cL9QtvUlcM3hXg8kDv60OB+LIcSE/P3/s+0tEpWPjxm3LHVE7JmPbZIcJ1
>>>
>>>  
>>>
>>
> 
> YMoZvHh0NSjY5D0HZlwtbDO7pDz9sZf1QEOgjH828fhtborkaHaUI46pmrMjiBnY6ujXMcWD
>>>
>>>  
>>>
>>
> 
> pxtikki0zY22nrxfTs5xDWGxyrc/cmucjxClJF6+OYVUSaZhiiHfa9Pr+41okLgsRB0AmNwE
>>>
>>>  
>>>
>>
> 
> f6ItY3TI8DGCBQowggUGAgEBMIGjMIGdMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
>>>
>>>  
>>>
>>
> 
> YTESMBAGA1UEBxMJTmljZXZpbGxlMRkwFwYDVQQKExBDdWRhIFN5c3RlbXMgTExDMRwwGgYD
>>>
>>>  
>>>
>>
> 
> VQQDExNDdWRhIFN5c3RlbXMgTExDIENBMS8wLQYJKoZIhvcNAQkBFiBjdXN0b21lci1zZXJ2
>>>
>>>  
>>>
>>
> 
> aWNlQGN1ZGFzeXN0ZW1zLm5ldAIBCDAJBgUrDgMCGgUAoIICOzAYBgkqhkiG9w0BCQMxCwYJ
>>>
>>>  
>>>
>>
> 
> KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNDAzMjAxNzAwNTRaMCMGCSqGSIb3DQEJBDEW
>>>
>>>  
>>>
>>
> 
> BBQrRNHcjN1dwAlZu7blrh+3Vu7++TBsBgkqhkiG9w0BCQ8xXzBdMAsGCWCGSAFlAwQBKjAL
>>>
>>>  
>>>
>>
> 
> BglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFA
>>>
>>>  
>>>
>>
> 
> MAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIG0BgkrBgEEAYI3EAQxgaYwgaMwgZ0xCzAJBgNV
>>>
>>>  
>>>
>>
> 
> BAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRhMRIwEAYDVQQHEwlOaWNldmlsbGUxGTAXBgNVBAoT
>>>
>>>  
>>>
>>
> 
> EEN1ZGEgU3lzdGVtcyBMTEMxHDAaBgNVBAMTE0N1ZGEgU3lzdGVtcyBMTEMgQ0ExLzAtBgkq
>>>
>>>  
>>>
>>
> 
> hkiG9w0BCQEWIGN1c3RvbWVyLXNlcnZpY2VAY3VkYXN5c3RlbXMubmV0AgEIMIG2BgsqhkiG
>>>
>>>  
>>>
>>
> 
> 9w0BCRACCzGBpqCBozCBnTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExEjAQBgNV
>>>
>>>  
>>>
>>
> 
> BAcTCU5pY2V2aWxsZTEZMBcGA1UEChMQQ3VkYSBTeXN0ZW1zIExMQzEcMBoGA1UEAxMTQ3Vk
>>>
>>>  
>>>
>>
> 
> YSBTeXN0ZW1zIExMQyBDQTEvMC0GCSqGSIb3DQEJARYgY3VzdG9tZXItc2VydmljZUBjdWRh
>>>
>>>  
>>>
>>
> 
> c3lzdGVtcy5uZXQCAQgwDQYJKoZIhvcNAQEBBQAEggIAsIbg6OIk2XnrPw25FA9+s4FCnKlo
>>>
>>>  
>>>
>>
> 
> Wz3KtfA59Gf2jX8yKEQW26k1QK6w62Zc8KaB5LypaOK1rZ5bipeu6rGHhgaG1oPXUMmcc2p4
>>>
>>>  
>>>
>>
> 
> E18URDskAfn5apoJ/n54nR94OqHfQ/EPBx711pxYtAGBLFOOzwrU2MEZCl2KBydI+Bw/E75R
>>>
>>>  
>>>
>>
> 
> WRIk6y0NqSWjgVWU2tJwnOEZj/2UGQCSvJ7h5t1n7idbDIfT88/hvAW3b3knRwPxwpZretXq
>>>
>>>  
>>>
>>
> 
> 2BGgmv8lojr7Zui5sR/YdDjSK2yGHqo0mWkSAHp0Wts8okcoJNZSEispFRh56MWCIoJ51cki
>>>
>>>  
>>>
>>
> 
> pCZH/vX1EEsfka3CrlE7LWABAYf1biy+Xq/Bfxgq9oAaknGF2yM0jgR7xnjLYLvbv5pjt7ar
>>>
>>>  
>>>
>>
> 
> TH2JslJMYkJPKiYFJNEgVJ9wTVQtrCPJQPTk3R1qD3YFraly5Mgjwy5Ax5n8SW858WWOxHeP
>>>
>>>  
>>>
>>
> 
> vmL0j1boO0Re9qeAb9v/z8z3NPkFPZhBrEz3g6INCWil+2Vx1yruJvxm1oN9OMQSt2qY38rj
>>>
>>>  
>>>
>>
> 
> XWhWVxoQtW39LZc/xSNR41DQXvPJ8VOvyrmvLm7uTm4+lQYVUwNuLNbDFlj8slkAeXF/eR1S
>>>
>>>  
>>>
>>
> 
> 4VuWtwexxCco+xGjbPTcZgap976XsvlRWOmjmwqZyGNuW7ZmcODQPFjQvpnBkx9Rm5cLndK6
>>>
>>>  OVorTQkAAAAAAAA=
>>>  --------------ms010508000607000909070805--
>>>
>>> _______________________________________________
>>> freebsd-fs@freebsd.org [6] mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-fs [7]
>>> To unsubscribe, send any mail to
>>> "freebsd-fs-unsubscribe@freebsd.org" [8]
>
> --
>  Karl Denninger
>  karl@denninger.net [9]
>  _The Market Ticker_
>
>
>
> Links:
> ------
> [1] mailto:karl@denninger.net
> [2] mailto:bug-followup@FreeBSD.org
> [3] mailto:karl@fs.denninger.net
> [4] mailto:karl@denninger.net
> [5] mailto:karl@denninger.net
> [6] mailto:freebsd-fs@freebsd.org
> [7] http://lists.freebsd.org/mailman/listinfo/freebsd-fs
> [8] mailto:freebsd-fs-unsubscribe@freebsd.org
> [9] mailto:karl@denninger.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?b389a3b124e16432b446d73e794e9c86>