18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * fs/hmdfs/server_writeback.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef SERVER_WRITEBACK_H 98c2ecf20Sopenharmony_ci#define SERVER_WRITEBACK_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include "hmdfs.h" 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#define HMDFS_MB_TO_PAGE_SHIFT (20 - HMDFS_PAGE_OFFSET) 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_cistruct hmdfs_server_writeback { 168c2ecf20Sopenharmony_ci struct hmdfs_sb_info *sbi; 178c2ecf20Sopenharmony_ci /* Enable hmdfs server dirty writeback control */ 188c2ecf20Sopenharmony_ci bool dirty_writeback_control; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci /* Current # of dirty pages from remote client in recent 1s */ 218c2ecf20Sopenharmony_ci atomic_t dirty_nr_pages; 228c2ecf20Sopenharmony_ci /* Current # of dirty pages to writeback */ 238c2ecf20Sopenharmony_ci int dirty_nr_pages_to_wb; 248c2ecf20Sopenharmony_ci /* Dirty thresh(Dirty data pages in 1s) to trigger wb */ 258c2ecf20Sopenharmony_ci unsigned int dirty_thresh_pg; 268c2ecf20Sopenharmony_ci /* Last reset timestamp(in jiffies) for @dirty_nr_pages */ 278c2ecf20Sopenharmony_ci unsigned long last_reset_time; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci struct workqueue_struct *dirty_writeback_wq; 308c2ecf20Sopenharmony_ci /* Per-fs pages from client writeback work */ 318c2ecf20Sopenharmony_ci struct work_struct dirty_sb_writeback_work; 328c2ecf20Sopenharmony_ci}; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_civoid hmdfs_server_check_writeback(struct hmdfs_server_writeback *hswb); 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_civoid hmdfs_destroy_server_writeback(struct hmdfs_sb_info *sbi); 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ciint hmdfs_init_server_writeback(struct hmdfs_sb_info *sbi); 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci#endif 41