From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Andrew Morton <akpm@osdl.org>
Cc: David Howells <dhowells@redhat.com>,
axboe@kernel.dk, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 19/19] BLOCK: Make it possible to disable the block layer [try #6]
Date: Wed, 30 Aug 2006 17:06:39 -0400 [thread overview]
Message-ID: <1156971999.5787.12.camel@localhost> (raw)
In-Reply-To: <20060830124400.23ca9b38.akpm@osdl.org>
[-- Attachment #1: Type: text/plain, Size: 720 bytes --]
On Wed, 2006-08-30 at 12:44 -0700, Andrew Morton wrote:
> I think I'll just slam all this in at the first opportunity. Stuff will
> break, but it will be easy to fix.
>
> If you try to upissue this patchset I shall be seeking an IP-routable hand
> grenade.
>
> On Tue, 29 Aug 2006 19:06:34 +0100
> David Howells <dhowells@redhat.com> wrote:
>
> > +static inline long blk_congestion_wait(int rw, long timeout)
> > +{
> > + return timeout;
> > +}
>
> This function is misnamed and is implemented in the wrong place. It's not
> really a block thing at all. If/when/soon NFS starts to implement it and
> call it, things will need to be renamed and reshuffled.
Already done in the NFS git tree. See attached patch.
[-- Attachment #2: linux-2.6.18-052-add_fixes_for_the_congestion_wait_crap.dif --]
[-- Type: message/rfc822, Size: 2917 bytes --]
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Subject: No Subject
Date: Mon, 28 Aug 2006 08:15:59 -0400
Message-ID: <1156971983.5787.11.camel@localhost>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
---
block/ll_rw_blk.c | 12 ++++++++++++
fs/nfs/write.c | 1 +
include/linux/blkdev.h | 1 +
include/linux/writeback.h | 1 +
mm/page-writeback.c | 9 +++++++++
5 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
index ddd9253..dcbd6ff 100644
--- a/block/ll_rw_blk.c
+++ b/block/ll_rw_blk.c
@@ -2734,6 +2734,18 @@ long blk_congestion_wait(int rw, long ti
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
*/
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 7bc500b..1f7a6d4 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -403,6 +403,7 @@ int nfs_writepages(struct address_space
out:
clear_bit(BDI_write_congested, &bdi->state);
wake_up_all(&nfs_write_congestion);
+ writeback_congestion_end();
return err;
}
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index aafe827..96c9040 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -746,6 +746,7 @@ extern void blk_queue_free_tags(request_
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 *);
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index 9e38b56..0422036 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -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;
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index e630188..77a0bc4 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -803,6 +803,15 @@ int test_set_page_writeback(struct 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.
*/
next prev parent reply other threads:[~2006-08-30 21:06 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-29 18:05 [PATCH 00/19] BLOCK: Permit block layer to be disabled [try #6] David Howells
2006-08-29 18:05 ` [PATCH 01/19] BLOCK: Move functions out of buffer code " David Howells
2006-08-29 18:05 ` [PATCH 02/19] BLOCK: Remove duplicate declaration of exit_io_context() " David Howells
2006-08-29 18:05 ` [PATCH 03/19] BLOCK: Stop fallback_migrate_page() from using page_has_buffers() " David Howells
2006-08-29 18:06 ` [PATCH 04/19] BLOCK: Separate the bounce buffering code from the highmem code " David Howells
2006-08-29 18:06 ` [PATCH 05/19] BLOCK: Don't call block_sync_page() from AFS " David Howells
2006-08-29 18:06 ` [PATCH 06/19] BLOCK: Move extern declarations out of fs/*.c into header files " David Howells
2006-08-29 18:06 ` [PATCH 07/19] BLOCK: Remove dependence on existence of blockdev_superblock " David Howells
2006-08-29 18:06 ` [PATCH 08/19] BLOCK: Dissociate generic_writepages() from mpage stuff " David Howells
2006-08-29 18:06 ` [PATCH 09/19] BLOCK: Move __invalidate_device() to block_dev.c " David Howells
2006-08-29 18:06 ` [PATCH 10/19] BLOCK: Move the loop device ioctl compat stuff to the loop driver " David Howells
2006-08-29 18:06 ` [PATCH 11/19] BLOCK: Move common FS-specific ioctls to linux/fs.h " David Howells
2006-08-29 18:06 ` [PATCH 12/19] BLOCK: Move the ReiserFS device ioctl compat stuff to the ReiserFS driver " David Howells
2006-08-29 18:06 ` [PATCH 13/19] BLOCK: Move the Ext2 device ioctl compat stuff to the Ext2 " David Howells
2006-08-29 18:06 ` [PATCH 14/19] BLOCK: Move the Ext3 device ioctl compat stuff to the Ext3 " David Howells
2006-08-29 18:06 ` [PATCH 15/19] BLOCK: Move the msdos device ioctl compat stuff to the msdos " David Howells
2006-08-29 18:06 ` [PATCH 16/19] BLOCK: Remove no-longer necessary linux/mpage.h inclusions " David Howells
2006-08-29 18:06 ` [PATCH 17/19] BLOCK: Remove no-longer necessary linux/buffer_head.h " David Howells
2006-08-29 18:06 ` [PATCH 18/19] BLOCK: Make USB storage depend on SCSI rather than selecting it " David Howells
2006-08-29 18:53 ` Michael Buesch
2006-08-29 21:12 ` Stefan Richter
2006-08-30 8:25 ` David Howells
2006-08-30 8:43 ` Stefan Richter
2006-08-30 12:49 ` Dave Kleikamp
2006-08-30 13:02 ` David Howells
2006-08-30 13:10 ` Dave Kleikamp
2006-08-29 18:06 ` [PATCH 19/19] BLOCK: Make it possible to disable the block layer " David Howells
2006-08-30 19:44 ` Andrew Morton
2006-08-30 20:24 ` Jens Axboe
2006-08-30 21:06 ` Trond Myklebust [this message]
2006-08-30 21:20 ` Andrew Morton
2006-08-30 20:13 ` David Howells
2006-08-30 12:06 ` [PATCH 00/19] BLOCK: Permit block layer to be disabled " Jens Axboe
2006-08-30 20:07 ` David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1156971999.5787.12.camel@localhost \
--to=trond.myklebust@fys.uio.no \
--cc=akpm@osdl.org \
--cc=axboe@kernel.dk \
--cc=dhowells@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).