diff options
Diffstat (limited to 'fs/buffer.c')
| -rw-r--r-- | fs/buffer.c | 26 | 
1 files changed, 11 insertions, 15 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index b205a629001d..a3bfd57c2697 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -753,7 +753,7 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)  				 * still in flight on potentially older  				 * contents.  				 */ -				write_dirty_buffer(bh, WRITE_SYNC); +				write_dirty_buffer(bh, REQ_SYNC);  				/*  				 * Kick off IO for the previous mapping. Note @@ -1684,7 +1684,7 @@ static struct buffer_head *create_page_buffers(struct page *page, struct inode *   * prevents this contention from occurring.   *   * If block_write_full_page() is called with wbc->sync_mode == - * WB_SYNC_ALL, the writes are posted using WRITE_SYNC; this + * WB_SYNC_ALL, the writes are posted using REQ_SYNC; this   * causes the writes to be flagged as synchronous writes.   */  int __block_write_full_page(struct inode *inode, struct page *page, @@ -1697,7 +1697,7 @@ int __block_write_full_page(struct inode *inode, struct page *page,  	struct buffer_head *bh, *head;  	unsigned int blocksize, bbits;  	int nr_underway = 0; -	int write_flags = (wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : 0); +	int write_flags = wbc_to_write_flags(wbc);  	head = create_page_buffers(page, inode,  					(1 << BH_Dirty)|(1 << BH_Uptodate)); @@ -3118,7 +3118,7 @@ EXPORT_SYMBOL(submit_bh);  /**   * ll_rw_block: low-level access to block devices (DEPRECATED)   * @op: whether to %READ or %WRITE - * @op_flags: rq_flag_bits + * @op_flags: req_flag_bits   * @nr: number of &struct buffer_heads in the array   * @bhs: array of pointers to &struct buffer_head   * @@ -3210,7 +3210,7 @@ EXPORT_SYMBOL(__sync_dirty_buffer);  int sync_dirty_buffer(struct buffer_head *bh)  { -	return __sync_dirty_buffer(bh, WRITE_SYNC); +	return __sync_dirty_buffer(bh, REQ_SYNC);  }  EXPORT_SYMBOL(sync_dirty_buffer); @@ -3403,7 +3403,7 @@ void free_buffer_head(struct buffer_head *bh)  }  EXPORT_SYMBOL(free_buffer_head); -static void buffer_exit_cpu(int cpu) +static int buffer_exit_cpu_dead(unsigned int cpu)  {  	int i;  	struct bh_lru *b = &per_cpu(bh_lrus, cpu); @@ -3414,14 +3414,7 @@ static void buffer_exit_cpu(int cpu)  	}  	this_cpu_add(bh_accounting.nr, per_cpu(bh_accounting, cpu).nr);  	per_cpu(bh_accounting, cpu).nr = 0; -} - -static int buffer_cpu_notify(struct notifier_block *self, -			      unsigned long action, void *hcpu) -{ -	if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) -		buffer_exit_cpu((unsigned long)hcpu); -	return NOTIFY_OK; +	return 0;  }  /** @@ -3471,6 +3464,7 @@ EXPORT_SYMBOL(bh_submit_read);  void __init buffer_init(void)  {  	unsigned long nrpages; +	int ret;  	bh_cachep = kmem_cache_create("buffer_head",  			sizeof(struct buffer_head), 0, @@ -3483,5 +3477,7 @@ void __init buffer_init(void)  	 */  	nrpages = (nr_free_buffer_pages() * 10) / 100;  	max_buffer_heads = nrpages * (PAGE_SIZE / sizeof(struct buffer_head)); -	hotcpu_notifier(buffer_cpu_notify, 0); +	ret = cpuhp_setup_state_nocalls(CPUHP_FS_BUFF_DEAD, "fs/buffer:dead", +					NULL, buffer_exit_cpu_dead); +	WARN_ON(ret < 0);  }  |