Re: [PATCH 6/7] libxfs: keep unflushable buffers off the cache MRUs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> --- 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



[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux