aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fs-writeback.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/fs-writeback.c')
-rw-r--r--fs/fs-writeback.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index f60de54d2042..f0520bcf2094 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -513,6 +513,11 @@ out_free:
513void wbc_attach_and_unlock_inode(struct writeback_control *wbc, 513void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
514 struct inode *inode) 514 struct inode *inode)
515{ 515{
516 if (!inode_cgwb_enabled(inode)) {
517 spin_unlock(&inode->i_lock);
518 return;
519 }
520
516 wbc->wb = inode_to_wb(inode); 521 wbc->wb = inode_to_wb(inode);
517 wbc->inode = inode; 522 wbc->inode = inode;
518 523
@@ -575,11 +580,16 @@ void wbc_detach_inode(struct writeback_control *wbc)
575{ 580{
576 struct bdi_writeback *wb = wbc->wb; 581 struct bdi_writeback *wb = wbc->wb;
577 struct inode *inode = wbc->inode; 582 struct inode *inode = wbc->inode;
578 u16 history = inode->i_wb_frn_history; 583 unsigned long avg_time, max_bytes, max_time;
579 unsigned long avg_time = inode->i_wb_frn_avg_time; 584 u16 history;
580 unsigned long max_bytes, max_time;
581 int max_id; 585 int max_id;
582 586
587 if (!wb)
588 return;
589
590 history = inode->i_wb_frn_history;
591 avg_time = inode->i_wb_frn_avg_time;
592
583 /* pick the winner of this round */ 593 /* pick the winner of this round */
584 if (wbc->wb_bytes >= wbc->wb_lcand_bytes && 594 if (wbc->wb_bytes >= wbc->wb_lcand_bytes &&
585 wbc->wb_bytes >= wbc->wb_tcand_bytes) { 595 wbc->wb_bytes >= wbc->wb_tcand_bytes) {