> --- a/include/cache.h > +++ b/include/cache.h > @@ -51,6 +51,7 @@ enum { > #define CACHE_BASE_PRIORITY 0 > #define CACHE_PREFETCH_PRIORITY 8 > #define CACHE_MAX_PRIORITY 15 > +#define CACHE_DIRTY_PRIORITY (CACHE_MAX_PRIORITY + 1) Sizing arrays based on, and iterating up to CACHE_DIRTY_PRIORITY seems rather odd. Maybe add a new #define CACHE_NR_PRIORITIES CACHE_DIRTY_PRIORITY and a comment explaining the magic to make it more obvious? > +cache_move_to_dirty_mru( > + struct cache *cache, > + struct cache_node *node) > +{ > + struct cache_mru *mru; > + > + mru = &cache->c_mrus[CACHE_DIRTY_PRIORITY]; > + > + pthread_mutex_lock(&mru->cm_mutex); > + node->cn_priority = CACHE_DIRTY_PRIORITY; > + list_move(&node->cn_mru, &mru->cm_list); > + mru->cm_count++; > + pthread_mutex_unlock(&mru->cm_mutex); > +} Maybe it would better to just do a list_add here and leave the list_del to the caller to avoid needing to nest two different cm_mutex instances. _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs