Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 144802 Details for
Bug 213921
SAN file systems becoming read-only
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
This is the upstream patch from attachment 144007 adjusted to apply to RHEL4 kernels
upstream-fix.patch (text/plain), 4.05 KB, created by
Chip Coldwell
on 2007-01-04 15:26:47 UTC
(
hide
)
Description:
This is the upstream patch from attachment 144007 adjusted to apply to RHEL4 kernels
Filename:
MIME Type:
Creator:
Chip Coldwell
Created:
2007-01-04 15:26:47 UTC
Size:
4.05 KB
patch
obsolete
>--- linux-2.6.9/fs/ext3/inode.c.orig 2006-12-19 14:40:59.000000000 -0500 >+++ linux-2.6.9/fs/ext3/inode.c 2006-12-19 14:42:49.000000000 -0500 >@@ -693,7 +693,7 @@ err_out: > * The BKL may not be held on entry here. Be sure to take it early. > */ > >-static int >+int > ext3_get_block_handle(handle_t *handle, struct inode *inode, sector_t iblock, > struct buffer_head *bh_result, int create, int extend_disksize) > { >--- linux-2.6.9/fs/ext3/dir.c.orig 2004-10-18 17:54:30.000000000 -0400 >+++ linux-2.6.9/fs/ext3/dir.c 2006-12-19 14:42:49.000000000 -0500 >@@ -28,6 +28,8 @@ > #include <linux/smp_lock.h> > #include <linux/slab.h> > #include <linux/rbtree.h> >+#include <linux/pagemap.h> >+#include <linux/mm.h> > > static unsigned char ext3_filetype_table[] = { > DT_UNKNOWN, DT_REG, DT_DIR, DT_CHR, DT_BLK, DT_FIFO, DT_SOCK, DT_LNK >@@ -95,11 +97,10 @@ static int ext3_readdir(struct file * fi > void * dirent, filldir_t filldir) > { > int error = 0; >- unsigned long offset, blk; >- int i, num, stored; >- struct buffer_head * bh, * tmp, * bha[16]; >- struct ext3_dir_entry_2 * de; >- struct super_block * sb; >+ unsigned long offset; >+ int i, stored; >+ struct ext3_dir_entry_2 *de; >+ struct super_block *sb; > int err; > struct inode *inode = filp->f_dentry->d_inode; > int ret = 0; >@@ -124,12 +125,29 @@ static int ext3_readdir(struct file * fi > } > #endif > stored = 0; >- bh = NULL; > offset = filp->f_pos & (sb->s_blocksize - 1); > > while (!error && !stored && filp->f_pos < inode->i_size) { >- blk = (filp->f_pos) >> EXT3_BLOCK_SIZE_BITS(sb); >- bh = ext3_bread(NULL, inode, blk, 0, &err); >+ unsigned long blk = filp->f_pos >> EXT3_BLOCK_SIZE_BITS(sb); >+ struct buffer_head map_bh; >+ struct buffer_head *bh = NULL; >+ >+ map_bh.b_state = 0; >+ err = ext3_get_block_handle(NULL, inode, blk, &map_bh, 0, 0); >+ if (!err) { >+ page_cache_readahead(sb->s_bdev->bd_inode->i_mapping, >+ &filp->f_ra, >+ filp, >+ map_bh.b_blocknr >> >+ (PAGE_CACHE_SHIFT - inode->i_blkbits), >+ 1); >+ bh = ext3_bread(NULL, inode, blk, 0, &err); >+ } >+ >+ /* >+ * We ignore I/O errors on directories so users have a chance >+ * of recovering data when there's a bad sector >+ */ > if (!bh) { > ext3_error (sb, "ext3_readdir", > "directory #%lu contains a hole at offset %lu", >@@ -138,26 +156,6 @@ static int ext3_readdir(struct file * fi > continue; > } > >- /* >- * Do the readahead >- */ >- if (!offset) { >- for (i = 16 >> (EXT3_BLOCK_SIZE_BITS(sb) - 9), num = 0; >- i > 0; i--) { >- tmp = ext3_getblk (NULL, inode, ++blk, 0, &err); >- if (tmp && !buffer_uptodate(tmp) && >- !buffer_locked(tmp)) >- bha[num++] = tmp; >- else >- brelse (tmp); >- } >- if (num) { >- ll_rw_block (READA, num, bha); >- for (i = 0; i < num; i++) >- brelse (bha[i]); >- } >- } >- > revalidate: > /* If the dir block has changed since the last call to > * readdir(2), then we might be pointing to an invalid >--- linux-2.6.9/mm/readahead.c.orig 2006-12-19 14:41:04.000000000 -0500 >+++ linux-2.6.9/mm/readahead.c 2006-12-19 14:42:49.000000000 -0500 >@@ -534,6 +534,7 @@ ra_off: > } > goto out; > } >+EXPORT_SYMBOL_GPL(page_cache_readahead); > > > /* >--- linux-2.6.9/include/linux/ext3_fs.h.orig 2006-12-19 14:40:59.000000000 -0500 >+++ linux-2.6.9/include/linux/ext3_fs.h 2006-12-19 14:42:49.000000000 -0500 >@@ -751,9 +751,12 @@ extern unsigned long ext3_count_free (st > > > /* inode.c */ >-extern int ext3_forget(handle_t *, int, struct inode *, struct buffer_head *, int); >-extern struct buffer_head * ext3_getblk (handle_t *, struct inode *, long, int, int *); >-extern struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *); >+int ext3_forget(handle_t *, int, struct inode *, struct buffer_head *, int); >+struct buffer_head * ext3_getblk (handle_t *, struct inode *, long, int, int *); >+struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *); >+int ext3_get_block_handle(handle_t *handle, struct inode *inode, >+ sector_t iblock, struct buffer_head *bh_result, int create, >+ int extend_disksize); > > extern void ext3_read_inode (struct inode *); > extern int ext3_write_inode (struct inode *, int);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 213921
:
140585
|
140586
|
140588
|
140598
|
140912
|
140913
|
142617
|
142618
|
143176
|
143187
|
143188
|
143334
|
143456
|
143555
|
143556
|
143567
|
143633
|
143648
|
143707
|
143795
|
143801
|
143921
|
143938
|
144006
|
144007
|
144044
|
144045
|
144802
|
145256