-Index: linux-stage/fs/ext3/super.c
+Index: linux-2.6.9-42.0.10.EL_lustre.1.4.10/fs/ext3/super.c
===================================================================
---- linux-stage.orig/fs/ext3/super.c 2005-02-25 14:50:46.077845320 +0200
-+++ linux-stage/fs/ext3/super.c 2005-02-25 14:51:32.241827328 +0200
-@@ -123,6 +123,8 @@
+--- linux-2.6.9-42.0.10.EL_lustre.1.4.10.orig/fs/ext3/super.c 2007-05-16 08:46:24.000000000 +0200
++++ linux-2.6.9-42.0.10.EL_lustre.1.4.10/fs/ext3/super.c 2007-05-16 08:48:58.000000000 +0200
+@@ -123,6 +123,8 @@ void ext3_journal_abort_handle(const cha
journal_abort_handle(handle);
}
/* Deal with the reporting of failure conditions on a filesystem such as
* inconsistencies detected or read IO failures.
*
-@@ -2002,6 +2004,8 @@
+@@ -2064,6 +2066,8 @@ int ext3_force_commit(struct super_block
return ret;
}
/*
* Ext3 always journals updates to the superblock itself, so we don't
* have to propagate any other updates to the superblock on disk at this
-@@ -2433,6 +2437,10 @@
+@@ -2586,6 +2590,12 @@ int ext3_map_inode_page(struct inode *in
unsigned long *blocks, int *created, int create);
EXPORT_SYMBOL(ext3_map_inode_page);
+EXPORT_SYMBOL(ext3_xattr_get);
+EXPORT_SYMBOL(ext3_xattr_set_handle);
+EXPORT_SYMBOL(ext3_bread);
++EXPORT_SYMBOL(ext3_journal_start_sb);
++EXPORT_SYMBOL(__ext3_journal_stop);
+
MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
MODULE_DESCRIPTION("Second Extended Filesystem with journaling extensions");
-Index: linux-stage/fs/ext3/super.c
+Index: linux-2.6.5-7.283_lustre.1.4.10/fs/ext3/super.c
===================================================================
---- linux-stage.orig/fs/ext3/super.c 2004-04-02 16:40:18.000000000 -0500
-+++ linux-stage/fs/ext3/super.c 2004-04-02 16:40:18.000000000 -0500
-@@ -115,6 +115,8 @@
+--- linux-2.6.5-7.283_lustre.1.4.10.orig/fs/ext3/super.c 2007-05-16 08:57:44.000000000 +0200
++++ linux-2.6.5-7.283_lustre.1.4.10/fs/ext3/super.c 2007-05-16 08:59:11.000000000 +0200
+@@ -116,6 +116,8 @@ void ext3_journal_abort_handle(const cha
handle->h_err = err;
}
static char error_buf[1024];
/* Deal with the reporting of failure conditions on a filesystem such as
-@@ -1774,6 +1776,8 @@
+@@ -1895,6 +1897,8 @@ int ext3_force_commit(struct super_block
return ret;
}
/*
* Ext3 always journals updates to the superblock itself, so we don't
* have to propagate any other updates to the superblock on disk at this
-@@ -2088,6 +2092,10 @@
+@@ -2334,6 +2338,12 @@ int ext3_map_inode_page(struct inode *in
unsigned long *blocks, int *created, int create);
EXPORT_SYMBOL(ext3_map_inode_page);
+EXPORT_SYMBOL(ext3_xattr_get);
+EXPORT_SYMBOL(ext3_xattr_set_handle);
+EXPORT_SYMBOL(ext3_bread);
++EXPORT_SYMBOL(ext3_journal_start_sb);
++EXPORT_SYMBOL(__ext3_journal_stop);
+
MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
MODULE_DESCRIPTION("Second Extended Filesystem with journaling extensions");
* bug fixes
Severity : normal
+Frequency : sometimes when underlying device returns I/O errors
+Bugzilla : 11743
+Description: OSTs not going read-only during write failures
+Details : OSTs are not remounted read-only when the journal commit threads
+ get I/O errors because fsfilt_ext3 calls journal_start/stop()
+ instead of the ext3 wrappers.
+
+Severity : normal
Frequency : liblustre clients only
Bugzilla : 12229
Description: getdirentries does not give error when run on compute nodes
-Index: linux-stage/fs/ext3/super.c
+Index: linux-2.6.9-42.0.10.EL_lustre.1.4.10/fs/ext3/super.c
===================================================================
---- linux-stage.orig/fs/ext3/super.c 2005-02-25 14:50:46.077845320 +0200
-+++ linux-stage/fs/ext3/super.c 2005-02-25 14:51:32.241827328 +0200
-@@ -123,6 +123,8 @@
+--- linux-2.6.9-42.0.10.EL_lustre.1.4.10.orig/fs/ext3/super.c 2007-05-16 08:46:24.000000000 +0200
++++ linux-2.6.9-42.0.10.EL_lustre.1.4.10/fs/ext3/super.c 2007-05-16 08:48:58.000000000 +0200
+@@ -123,6 +123,8 @@ void ext3_journal_abort_handle(const cha
journal_abort_handle(handle);
}
/* Deal with the reporting of failure conditions on a filesystem such as
* inconsistencies detected or read IO failures.
*
-@@ -2002,6 +2004,8 @@
+@@ -2064,6 +2066,8 @@ int ext3_force_commit(struct super_block
return ret;
}
/*
* Ext3 always journals updates to the superblock itself, so we don't
* have to propagate any other updates to the superblock on disk at this
-@@ -2433,6 +2437,10 @@
+@@ -2586,6 +2590,12 @@ int ext3_map_inode_page(struct inode *in
unsigned long *blocks, int *created, int create);
EXPORT_SYMBOL(ext3_map_inode_page);
+EXPORT_SYMBOL(ext3_xattr_get);
+EXPORT_SYMBOL(ext3_xattr_set_handle);
+EXPORT_SYMBOL(ext3_bread);
++EXPORT_SYMBOL(ext3_journal_start_sb);
++EXPORT_SYMBOL(__ext3_journal_stop);
+
MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
MODULE_DESCRIPTION("Second Extended Filesystem with journaling extensions");
-Index: linux-stage/fs/ext3/super.c
+Index: linux-2.6.5-7.283_lustre.1.4.10/fs/ext3/super.c
===================================================================
---- linux-stage.orig/fs/ext3/super.c 2004-04-02 16:40:18.000000000 -0500
-+++ linux-stage/fs/ext3/super.c 2004-04-02 16:40:18.000000000 -0500
-@@ -115,6 +115,8 @@
+--- linux-2.6.5-7.283_lustre.1.4.10.orig/fs/ext3/super.c 2007-05-16 08:57:44.000000000 +0200
++++ linux-2.6.5-7.283_lustre.1.4.10/fs/ext3/super.c 2007-05-16 08:59:11.000000000 +0200
+@@ -116,6 +116,8 @@ void ext3_journal_abort_handle(const cha
handle->h_err = err;
}
static char error_buf[1024];
/* Deal with the reporting of failure conditions on a filesystem such as
-@@ -1774,6 +1776,8 @@
+@@ -1895,6 +1897,8 @@ int ext3_force_commit(struct super_block
return ret;
}
/*
* Ext3 always journals updates to the superblock itself, so we don't
* have to propagate any other updates to the superblock on disk at this
-@@ -2088,6 +2092,10 @@
+@@ -2334,6 +2338,12 @@ int ext3_map_inode_page(struct inode *in
unsigned long *blocks, int *created, int create);
EXPORT_SYMBOL(ext3_map_inode_page);
+EXPORT_SYMBOL(ext3_xattr_get);
+EXPORT_SYMBOL(ext3_xattr_set_handle);
+EXPORT_SYMBOL(ext3_bread);
++EXPORT_SYMBOL(ext3_journal_start_sb);
++EXPORT_SYMBOL(__ext3_journal_stop);
+
MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
MODULE_DESCRIPTION("Second Extended Filesystem with journaling extensions");
#define FSFILT_DELETE_TRANS_BLOCKS(sb) EXT3_DELETE_TRANS_BLOCKS(sb)
#endif
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+#define fsfilt_ext3_journal_start(inode, nblocks) \
+ journal_start(EXT3_JOURNAL(inode),nblocks)
+#define fsfilt_ext3_journal_stop(handle) journal_stop(handle)
+#else
+#define fsfilt_ext3_journal_start(inode, nblocks) ext3_journal_start(inode, nblocks)
+#define fsfilt_ext3_journal_stop(handle) ext3_journal_stop(handle)
+#endif
+
static kmem_cache_t *fcb_cache;
struct fsfilt_cb_data {
journal_start:
LASSERTF(nblocks > 0, "can't start %d credit transaction\n", nblocks);
lock_24kernel();
- handle = journal_start(EXT3_JOURNAL(inode), nblocks);
+ handle = fsfilt_ext3_journal_start(inode, nblocks);
unlock_24kernel();
if (!IS_ERR(handle))
LASSERTF(needed > 0, "can't start %d credit transaction\n", needed);
lock_24kernel();
- handle = journal_start(journal, needed);
+ handle = fsfilt_ext3_journal_start(fso->fso_dentry->d_inode, needed);
unlock_24kernel();
if (IS_ERR(handle)) {
CERROR("can't get handle for %d credits: rc = %ld\n", needed,
handle->h_sync = 1; /* recovery likes this */
lock_24kernel();
- rc = journal_stop(handle);
+ rc = fsfilt_ext3_journal_stop(handle);
unlock_24kernel();
return rc;
tid = transaction->t_tid;
/* we don't want to be blocked */
handle->h_sync = 0;
- rc = journal_stop(handle);
+ rc = fsfilt_ext3_journal_stop(handle);
if (rc) {
CERROR("error while stopping transaction: %d\n", rc);
unlock_24kernel();
ext3_up_truncate_sem(inode);
lock_24kernel();
- handle = journal_start(EXT3_JOURNAL(inode), count+EXT3_ALLOC_NEEDED+1);
+ handle = fsfilt_ext3_journal_start(inode, count+EXT3_ALLOC_NEEDED+1);
unlock_24kernel();
if (IS_ERR(handle)) {
ext3_down_truncate_sem(inode);
if (tgen != EXT_GENERATION(tree)) {
/* the tree has changed. so path can be invalid at moment */
lock_24kernel();
- journal_stop(handle);
+ fsfilt_ext3_journal_stop(handle);
unlock_24kernel();
return EXT_REPEAT;
}
out:
lock_24kernel();
- journal_stop(handle);
+ fsfilt_ext3_journal_stop(handle);
unlock_24kernel();
map:
if (err >= 0) {
struct inode *inode = file->f_dentry->d_inode;
loff_t old_size = inode->i_size, offset = *offs;
loff_t new_size = inode->i_size;
- journal_t *journal;
handle_t *handle;
int err = 0, block_count = 0, blocksize, size, boffs;
block_count = (*offs & (blocksize - 1)) + bufsize;
block_count = (block_count + blocksize - 1) >> inode->i_blkbits;
- journal = EXT3_SB(inode->i_sb)->s_journal;
lock_24kernel();
- handle = journal_start(journal,
+ handle = fsfilt_ext3_journal_start(inode,
block_count * FSFILT_DATA_TRANS_BLOCKS(inode->i_sb) + 2);
unlock_24kernel();
if (IS_ERR(handle)) {
}
lock_24kernel();
- journal_stop(handle);
+ fsfilt_ext3_journal_stop(handle);
unlock_24kernel();
if (err == 0)