Re: [PATCH 7/7] libxfs: reset dirty buffer priority on lookup

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

 



On Fri, Feb 05, 2016 at 10:05:08AM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> When a buffer on the dirty MRU is looked up and found, we remove the
> buffer from the MRU. However, we've already set the priority ofthe

							       of the

> buffer to "dirty" so when we are donw with it it will go back on the

				   done

> dirty buffer MRU regardless of whether it needs to or not.
> 
> Hence when we move a buffer to a the dirty MRU, reocrd the old

						  record

> priority and restore it when we remove the buffer from the MRU on
> lookup. This will prevent us from putting fixed, now writeable
> buffers back on the dirty MRU and allow the cache routine to write,
> shake and reclaim the buffers once they are clean.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---
>  include/cache.h | 1 +
>  libxfs/cache.c  | 7 +++++++
>  2 files changed, 8 insertions(+)
> 
...
> diff --git a/libxfs/cache.c b/libxfs/cache.c
> index d4b4a4e..0398be3 100644
> --- a/libxfs/cache.c
> +++ b/libxfs/cache.c
...
> @@ -434,6 +436,10 @@ cache_node_get(
>  				mru->cm_count--;
>  				list_del_init(&node->cn_mru);
>  				pthread_mutex_unlock(&mru->cm_mutex);
> +				if (node->cn_old_priority != -1) {

Might be good to ASSERT(node->cn_priority == CACHE_DIRTY_PRIORITY) here.
Otherwise looks good:

Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>

> +					node->cn_priority = node->cn_old_priority;
> +					node->cn_old_priority = -1;
> +				}
>  			}
>  			node->cn_count++;
>  
> @@ -534,6 +540,7 @@ cache_node_set_priority(
>  	pthread_mutex_lock(&node->cn_mutex);
>  	ASSERT(node->cn_count > 0);
>  	node->cn_priority = priority;
> +	node->cn_old_priority = -1;
>  	pthread_mutex_unlock(&node->cn_mutex);
>  }
>  
> -- 
> 2.5.0
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

_______________________________________________
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