diff -urN 2.2.17pre4/fs/buffer.c 2.2.17pre4-dirty/fs/buffer.c --- 2.2.17pre4/fs/buffer.c Mon Jun 19 01:51:14 2000 +++ 2.2.17pre4-dirty/fs/buffer.c Tue Jun 20 18:34:27 2000 @@ -1464,25 +1464,6 @@ #define BUFFER_BUSY_BITS ((1<b_count || ((bh)->b_state & BUFFER_BUSY_BITS)) -static inline int sync_page_buffers(struct buffer_head * bh) -{ - struct buffer_head * tmp = bh; - - do { - if (buffer_dirty(tmp) && !buffer_locked(tmp)) - ll_rw_block(WRITE, 1, &tmp); - tmp = tmp->b_this_page; - } while (tmp != bh); - - do { - if (buffer_busy(tmp)) - return 1; - tmp = tmp->b_this_page; - } while (tmp != bh); - - return 0; -} - /* * try_to_free_buffers() checks if all the buffers on this particular page * are unused, and free's the page if so. @@ -1501,7 +1482,6 @@ tmp = tmp->b_this_page; } while (tmp != bh); - succeed: tmp = bh; do { struct buffer_head * p = tmp; @@ -1521,13 +1501,6 @@ return 1; busy: - if (!sync_page_buffers(bh)) - /* - * We can jump after the busy check because - * we rely on the kernel lock. - */ - goto succeed; - wakeup_bdflush(0); return 0; } diff -urN 2.2.17pre4/mm/filemap.c 2.2.17pre4-dirty/mm/filemap.c --- 2.2.17pre4/mm/filemap.c Mon Jun 19 01:51:19 2000 +++ 2.2.17pre4-dirty/mm/filemap.c Tue Jun 20 18:34:13 2000 @@ -145,7 +145,6 @@ /* Make sure we scan all pages twice at priority 0. */ count = (limit << 1) >> priority; - refresh_clock: page = mem_map + clock; do { int referenced; @@ -204,7 +203,7 @@ * throttling. */ if (!try_to_free_buffers(page)) - goto refresh_clock; + continue; return 1; }