| 1899 | } |
| 1900 | |
| 1901 | static void |
| 1902 | bd_flush(struct bufdomain *bd, struct bufqueue *bq) |
| 1903 | { |
| 1904 | struct buf *bp; |
| 1905 | |
| 1906 | BQ_ASSERT_LOCKED(bq); |
| 1907 | if (bq != bd->bd_cleanq) { |
| 1908 | BD_LOCK(bd); |
| 1909 | while ((bp = TAILQ_FIRST(&bq->bq_queue)) != NULL) { |
| 1910 | TAILQ_REMOVE(&bq->bq_queue, bp, b_freelist); |
| 1911 | TAILQ_INSERT_TAIL(&bd->bd_cleanq->bq_queue, bp, |
| 1912 | b_freelist); |
| 1913 | bp->b_subqueue = bd->bd_cleanq->bq_subqueue; |
| 1914 | } |
| 1915 | bd->bd_cleanq->bq_len += bq->bq_len; |
| 1916 | bq->bq_len = 0; |
| 1917 | } |
| 1918 | if (bd->bd_wanted) { |
| 1919 | bd->bd_wanted = 0; |
| 1920 | wakeup(&bd->bd_wanted); |
| 1921 | } |
| 1922 | if (bq != bd->bd_cleanq) |
| 1923 | BD_UNLOCK(bd); |
| 1924 | } |
| 1925 | |
| 1926 | static int |
| 1927 | bd_flushall(struct bufdomain *bd) |
no test coverage detected