[patch 6/15] larger b_size, and misc fixlets

From: Andrew Morton (akpm@zip.com.au)
Date: Sun May 19 2002 - 14:39:53 EST


Miscellany.

- make the printk in buffer_io_error() sector_t-aware.

- Some buffer.c cleanups from AntonA: remove a couple of !uptodate
  checks, and set a new buffer's b_blocknr to -1 in a more sensible
  place.

- Make buffer_head.b_size a 32-bit quantity. Needed for 64k pagesize
  on ia64. Does not increase sizeof(struct buffer_head).

=====================================

--- 2.5.16/fs/buffer.c~sector_t-printing Sun May 19 11:49:47 2002
+++ 2.5.16-akpm/fs/buffer.c Sun May 19 12:02:57 2002
@@ -179,8 +179,8 @@ __clear_page_buffers(struct page *page)
 
 static void buffer_io_error(struct buffer_head *bh)
 {
- printk(KERN_ERR "Buffer I/O error on device %s, logical block %ld\n",
- bdevname(bh->b_bdev), bh->b_blocknr);
+ printk(KERN_ERR "Buffer I/O error on device %s, logical block %Ld\n",
+ bdevname(bh->b_bdev), (u64)bh->b_blocknr);
 }
 
 /*
@@ -189,12 +189,12 @@ static void buffer_io_error(struct buffe
  */
 void end_buffer_io_sync(struct buffer_head *bh, int uptodate)
 {
- if (!uptodate)
- buffer_io_error(bh);
- if (uptodate)
+ if (uptodate) {
                 set_buffer_uptodate(bh);
- else
+ } else {
+ buffer_io_error(bh);
                 clear_buffer_uptodate(bh);
+ }
         unlock_buffer(bh);
         put_bh(bh);
 }
@@ -519,14 +519,12 @@ static void end_buffer_async_read(struct
 
         BUG_ON(!buffer_async_read(bh));
 
- if (!uptodate)
- buffer_io_error(bh);
-
         page = bh->b_page;
         if (uptodate) {
                 set_buffer_uptodate(bh);
         } else {
                 clear_buffer_uptodate(bh);
+ buffer_io_error(bh);
                 SetPageError(page);
         }
 
@@ -579,13 +577,11 @@ static void end_buffer_async_write(struc
 
         BUG_ON(!buffer_async_write(bh));
 
- if (!uptodate)
- buffer_io_error(bh);
-
         page = bh->b_page;
         if (uptodate) {
                 set_buffer_uptodate(bh);
         } else {
+ buffer_io_error(bh);
                 clear_buffer_uptodate(bh);
                 SetPageError(page);
         }
@@ -907,6 +903,7 @@ try_again:
 
                 bh->b_bdev = NULL;
                 bh->b_this_page = head;
+ bh->b_blocknr = -1;
                 head = bh;
 
                 bh->b_state = 0;
@@ -2442,7 +2439,6 @@ static void init_buffer_head(void *data,
                 struct buffer_head * bh = (struct buffer_head *)data;
 
                 memset(bh, 0, sizeof(*bh));
- bh->b_blocknr = -1;
                 INIT_LIST_HEAD(&bh->b_assoc_buffers);
         }
 }
--- 2.5.16/include/linux/buffer_head.h~sector_t-printing Sun May 19 11:49:47 2002
+++ 2.5.16-akpm/include/linux/buffer_head.h Sun May 19 12:02:57 2002
@@ -44,7 +44,7 @@ struct buffer_head {
         struct page *b_page; /* the page this bh is mapped to */
 
         sector_t b_blocknr; /* block number */
- unsigned short b_size; /* block size */
+ u32 b_size; /* block size */
         char *b_data; /* pointer to data block */
 
         struct block_device *b_bdev;

-
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu May 23 2002 - 22:00:17 EST