]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/buffer.c
[PATCH] Make BH_Unwritten a first class bufferhead flag V2
[mv-sheeva.git] / fs / buffer.c
index 7ff6e9346faed9f149948b8756934afbf79b9af6..a4b824234fb9bc510d03d69600448f9a8ab62079 100644 (file)
@@ -1440,6 +1440,7 @@ static void discard_buffer(struct buffer_head * bh)
        clear_buffer_req(bh);
        clear_buffer_new(bh);
        clear_buffer_delay(bh);
+       clear_buffer_unwritten(bh);
        unlock_buffer(bh);
 }
 
@@ -1823,6 +1824,7 @@ static int __block_prepare_write(struct inode *inode, struct page *page,
                        continue; 
                }
                if (!buffer_uptodate(bh) && !buffer_delay(bh) &&
+                   !buffer_unwritten(bh) &&
                     (block_start < from || block_end > to)) {
                        ll_rw_block(READ, 1, &bh);
                        *wait_bh++=bh;
@@ -2544,7 +2546,7 @@ int block_truncate_page(struct address_space *mapping,
        if (PageUptodate(page))
                set_buffer_uptodate(bh);
 
-       if (!buffer_uptodate(bh) && !buffer_delay(bh)) {
+       if (!buffer_uptodate(bh) && !buffer_delay(bh) && !buffer_unwritten(bh)) {
                err = -EIO;
                ll_rw_block(READ, 1, &bh);
                wait_on_buffer(bh);