Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.24-rc6 /fs/direct-io.c

Filename:/fs/direct-io.c
Lines Added:4
Lines Deleted:13
Also changed in: (Previous) 2.6.24-rc5  2.6.24-rc4  2.6.24-rc3  2.6.24-rc2  2.6.24-rc1  2.6.23-git19 
(Following) 2.6.24-rc7  2.6.24-rc8  2.6.24  2.6.24-git15  2.6.24-git16  2.6.24-git17 

Location
[  2.6.24-rc6
  [  fs
     o  direct-io.c

Patch

diff --git a/fs/direct-io.c b/fs/direct-io.c
index 901dc55..acf0da1 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -163,7 +163,7 @@ static int dio_refill_pages(struct dio *dio)
    up_read(¤t->mm->mmap_sem);
 
    if (ret < 0 && dio->blocks_available && (dio->rw & WRITE)) {
-      struct page *page = ZERO_PAGE(dio->curr_user_address);
+      struct page *page = ZERO_PAGE(0);
       /*
        * A memory fault, but the filesystem has some outstanding
        * mapped blocks.  We need to use those blocks up to avoid
@@ -264,15 +264,12 @@ static int dio_bio_complete(struct dio *dio, struct bio *bio);
 /*
  * Asynchronous IO callback. 
  */
-static int dio_bio_end_aio(struct bio *bio, unsigned int bytes_done, int error)
+static void dio_bio_end_aio(struct bio *bio, int error)
 {
    struct dio *dio = bio->bi_private;
    unsigned long remaining;
    unsigned long flags;
 
-   if (bio->bi_size)
-      return 1;
-
    /* cleanup the bio */
    dio_bio_complete(dio, bio);
 
@@ -287,8 +284,6 @@ static int dio_bio_end_aio(struct bio *bio, unsigned int bytes_done, int error)
       aio_complete(dio->iocb, ret, 0);
       kfree(dio);
    }
-
-   return 0;
 }
 
 /*
@@ -298,21 +293,17 @@ static int dio_bio_end_aio(struct bio *bio, unsigned int bytes_done, int error)
  * During I/O bi_private points at the dio.  After I/O, bi_private is used to
  * implement a singly-linked list of completed BIOs, at dio->bio_list.
  */
-static int dio_bio_end_io(struct bio *bio, unsigned int bytes_done, int error)
+static void dio_bio_end_io(struct bio *bio, int error)
 {
    struct dio *dio = bio->bi_private;
    unsigned long flags;
 
-   if (bio->bi_size)
-      return 1;
-
    spin_lock_irqsave(&dio->bio_lock, flags);
    bio->bi_private = dio->bio_list;
    dio->bio_list = bio;
    if (--dio->refcount == 1 && dio->waiter)
       wake_up_process(dio->waiter);
    spin_unlock_irqrestore(&dio->bio_lock, flags);
-   return 0;
 }
 
 static int
@@ -772,7 +763,7 @@ static void dio_zero_block(struct dio *dio, int end)
 
    this_chunk_bytes = this_chunk_blocks << dio->blkbits;
 
-   page = ZERO_PAGE(dio->curr_user_address);
+   page = ZERO_PAGE(0);
    if (submit_page_section(dio, page, 0, this_chunk_bytes, 
             dio->next_block_for_io))
       return;


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.