Re: [PATCH 10/10] mm: Account for WRITEBACK_TEMP in balance_dirty_pages

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

 



Pavel Emelyanov <xemul@xxxxxxxxxxxxx> writes:

> Make balance_dirty_pages start the throttling when the WRITEBACK_TEMP
> counter is hight ehough. This prevents us from having too many dirty
> pages on fuse, thus giving the userspace part of it a chance to write
> stuff properly.
>
> Note, that the existing balance logic is per-bdi, i.e. if the fuse
> user task gets stuck in the function this means, that it either
> writes to the mountpoint it serves (but it can deadlock even without
> the writeback) or it is wrting to some _other_ dirty bdi and in the
> latter case someone else will free the memory for it.

This is not just about deadlocking.  Unprivileged fuse filesystems
should not impact the operation of other filesystems.  I.e. a fuse
filesystem which is not making progress writing out pages shouln't cause
a write on an unrelated filesystem to block.

I believe this patch breaks that promise.

Thanks,
Miklos


>
> Signed-off-by: Pavel Emelyanov <xemul@xxxxxxxxxx>
> ---
>  mm/page-writeback.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/mm/page-writeback.c b/mm/page-writeback.c
> index 93d8d2f..7cb54db 100644
> --- a/mm/page-writeback.c
> +++ b/mm/page-writeback.c
> @@ -1192,7 +1192,8 @@ static void balance_dirty_pages(struct address_space *mapping,
>  		 */
>  		nr_reclaimable = global_page_state(NR_FILE_DIRTY) +
>  					global_page_state(NR_UNSTABLE_NFS);
> -		nr_dirty = nr_reclaimable + global_page_state(NR_WRITEBACK);
> +		nr_dirty = nr_reclaimable + global_page_state(NR_WRITEBACK) +
> +			global_page_state(NR_WRITEBACK_TEMP);
>  
>  		global_dirty_limits(&background_thresh, &dirty_thresh);
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux