Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 34797
b: refs/heads/master
c: 275a082
h: refs/heads/master
i:
  34795: 5d8562f
v: v3
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Sep 23, 2006
1 parent a61457d commit b033c11
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 94a6d75320b3681e6e728b70e18bd186cb55e682
refs/heads/master: 275a082fe9308e710324e26ccb5363c53d8fd45f
12 changes: 12 additions & 0 deletions trunk/block/ll_rw_blk.c
Original file line number Diff line number Diff line change
Expand Up @@ -2734,6 +2734,18 @@ long blk_congestion_wait(int rw, long timeout)

EXPORT_SYMBOL(blk_congestion_wait);

/**
* blk_congestion_end - wake up sleepers on a congestion queue
* @rw: READ or WRITE
*/
void blk_congestion_end(int rw)
{
wait_queue_head_t *wqh = &congestion_wqh[rw];

if (waitqueue_active(wqh))
wake_up(wqh);
}

/*
* Has to be called with the request spinlock acquired
*/
Expand Down
1 change: 1 addition & 0 deletions trunk/fs/nfs/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,7 @@ int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
out:
clear_bit(BDI_write_congested, &bdi->state);
wake_up_all(&nfs_write_congestion);
writeback_congestion_end();
return err;
}

Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/blkdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,7 @@ extern void blk_queue_free_tags(request_queue_t *);
extern int blk_queue_resize_tags(request_queue_t *, int);
extern void blk_queue_invalidate_tags(request_queue_t *);
extern long blk_congestion_wait(int rw, long timeout);
extern void blk_congestion_end(int rw);

extern void blk_rq_bio_prep(request_queue_t *, struct request *, struct bio *);
extern int blkdev_issue_flush(struct block_device *, sector_t *);
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/writeback.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ int wakeup_pdflush(long nr_pages);
void laptop_io_completion(void);
void laptop_sync_completion(void);
void throttle_vm_writeout(void);
void writeback_congestion_end(void);

/* These are exported to sysctl. */
extern int dirty_background_ratio;
Expand Down
9 changes: 9 additions & 0 deletions trunk/mm/page-writeback.c
Original file line number Diff line number Diff line change
Expand Up @@ -802,6 +802,15 @@ int test_set_page_writeback(struct page *page)
}
EXPORT_SYMBOL(test_set_page_writeback);

/*
* Wakes up tasks that are being throttled due to writeback congestion
*/
void writeback_congestion_end(void)
{
blk_congestion_end(WRITE);
}
EXPORT_SYMBOL(writeback_congestion_end);

/*
* Return true if any of the pages in the mapping are marged with the
* passed tag.
Expand Down

0 comments on commit b033c11

Please sign in to comment.