patch-2.4.17 linux/include/linux/ext3_jbd.h
Next file: linux/include/linux/fs.h
Previous file: linux/include/linux/ext3_fs.h
Back to the patch index
Back to the overall index
- Lines: 24
- Date:
Fri Dec 21 16:40:33 2001
- Orig file:
linux-2.4.16/include/linux/ext3_jbd.h
- Orig date:
Fri Nov 9 22:25:04 2001
diff -Naur -X /home/marcelo/lib/dontdiff linux-2.4.16/include/linux/ext3_jbd.h linux/include/linux/ext3_jbd.h
@@ -196,9 +196,22 @@
*/
static inline handle_t *ext3_journal_start(struct inode *inode, int nblocks)
{
+ journal_t *journal;
+
if (inode->i_sb->s_flags & MS_RDONLY)
return ERR_PTR(-EROFS);
- return journal_start(EXT3_JOURNAL(inode), nblocks);
+
+ /* Special case here: if the journal has aborted behind our
+ * backs (eg. EIO in the commit thread), then we still need to
+ * take the FS itself readonly cleanly. */
+ journal = EXT3_JOURNAL(inode);
+ if (is_journal_aborted(journal)) {
+ ext3_abort(inode->i_sb, __FUNCTION__,
+ "Detected aborted journal");
+ return ERR_PTR(-EROFS);
+ }
+
+ return journal_start(journal, nblocks);
}
static inline handle_t *
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)