--- /dev/null
+*** mp/mp_fget.c.orig 2005-10-12 10:53:36.000000000 -0700
+--- mp/mp_fget.c 2006-05-30 20:48:10.000000000 -0700
+***************
+*** 587,594 ****
+ */
+ if (state != SECOND_MISS && bhp->ref == 1) {
+ bhp->priority = UINT32_MAX;
+! SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
+! SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
+ hp->hash_priority =
+ SH_TAILQ_FIRSTP(&hp->hash_bucket, __bh)->priority;
+ }
+--- 587,597 ----
+ */
+ if (state != SECOND_MISS && bhp->ref == 1) {
+ bhp->priority = UINT32_MAX;
+! if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) !=
+! SH_TAILQ_LAST(&hp->hash_bucket, hq, __bh)) {
+! SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
+! SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
+! }
+ hp->hash_priority =
+ SH_TAILQ_FIRSTP(&hp->hash_bucket, __bh)->priority;
+ }