|
@@ -262,7 +262,7 @@ handle_t *ext4_journal_start_sb(struct super_block *sb, int nblocks)
|
|
* that sync() will call the filesystem's write_super callback if
|
|
* that sync() will call the filesystem's write_super callback if
|
|
* appropriate.
|
|
* appropriate.
|
|
*/
|
|
*/
|
|
-int __ext4_journal_stop(const char *where, handle_t *handle)
|
|
|
|
|
|
+int __ext4_journal_stop(const char *where, unsigned int line, handle_t *handle)
|
|
{
|
|
{
|
|
struct super_block *sb;
|
|
struct super_block *sb;
|
|
int err;
|
|
int err;
|
|
@@ -279,7 +279,7 @@ int __ext4_journal_stop(const char *where, handle_t *handle)
|
|
if (!err)
|
|
if (!err)
|
|
err = rc;
|
|
err = rc;
|
|
if (err)
|
|
if (err)
|
|
- __ext4_std_error(sb, where, err);
|
|
|
|
|
|
+ __ext4_std_error(sb, where, line, err);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -350,12 +350,13 @@ static void ext4_handle_error(struct super_block *sb)
|
|
}
|
|
}
|
|
|
|
|
|
void __ext4_error(struct super_block *sb, const char *function,
|
|
void __ext4_error(struct super_block *sb, const char *function,
|
|
- const char *fmt, ...)
|
|
|
|
|
|
+ unsigned int line, const char *fmt, ...)
|
|
{
|
|
{
|
|
va_list args;
|
|
va_list args;
|
|
|
|
|
|
va_start(args, fmt);
|
|
va_start(args, fmt);
|
|
- printk(KERN_CRIT "EXT4-fs error (device %s): %s: ", sb->s_id, function);
|
|
|
|
|
|
+ printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: comm %s: ",
|
|
|
|
+ sb->s_id, function, line, current->comm);
|
|
vprintk(fmt, args);
|
|
vprintk(fmt, args);
|
|
printk("\n");
|
|
printk("\n");
|
|
va_end(args);
|
|
va_end(args);
|
|
@@ -363,14 +364,18 @@ void __ext4_error(struct super_block *sb, const char *function,
|
|
ext4_handle_error(sb);
|
|
ext4_handle_error(sb);
|
|
}
|
|
}
|
|
|
|
|
|
-void ext4_error_inode(const char *function, struct inode *inode,
|
|
|
|
|
|
+void ext4_error_inode(struct inode *inode, const char *function,
|
|
|
|
+ unsigned int line, ext4_fsblk_t block,
|
|
const char *fmt, ...)
|
|
const char *fmt, ...)
|
|
{
|
|
{
|
|
va_list args;
|
|
va_list args;
|
|
|
|
|
|
va_start(args, fmt);
|
|
va_start(args, fmt);
|
|
- printk(KERN_CRIT "EXT4-fs error (device %s): %s: inode #%lu: (comm %s) ",
|
|
|
|
- inode->i_sb->s_id, function, inode->i_ino, current->comm);
|
|
|
|
|
|
+ printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: inode #%lu: ",
|
|
|
|
+ inode->i_sb->s_id, function, line, inode->i_ino);
|
|
|
|
+ if (block)
|
|
|
|
+ printk("block %llu: ", block);
|
|
|
|
+ printk("comm %s: ", current->comm);
|
|
vprintk(fmt, args);
|
|
vprintk(fmt, args);
|
|
printk("\n");
|
|
printk("\n");
|
|
va_end(args);
|
|
va_end(args);
|
|
@@ -378,8 +383,8 @@ void ext4_error_inode(const char *function, struct inode *inode,
|
|
ext4_handle_error(inode->i_sb);
|
|
ext4_handle_error(inode->i_sb);
|
|
}
|
|
}
|
|
|
|
|
|
-void ext4_error_file(const char *function, struct file *file,
|
|
|
|
- const char *fmt, ...)
|
|
|
|
|
|
+void ext4_error_file(struct file *file, const char *function,
|
|
|
|
+ unsigned int line, const char *fmt, ...)
|
|
{
|
|
{
|
|
va_list args;
|
|
va_list args;
|
|
struct inode *inode = file->f_dentry->d_inode;
|
|
struct inode *inode = file->f_dentry->d_inode;
|
|
@@ -390,8 +395,10 @@ void ext4_error_file(const char *function, struct file *file,
|
|
if (!path)
|
|
if (!path)
|
|
path = "(unknown)";
|
|
path = "(unknown)";
|
|
printk(KERN_CRIT
|
|
printk(KERN_CRIT
|
|
- "EXT4-fs error (device %s): %s: inode #%lu (comm %s path %s): ",
|
|
|
|
- inode->i_sb->s_id, function, inode->i_ino, current->comm, path);
|
|
|
|
|
|
+ "EXT4-fs error (device %s): %s:%d: inode #%lu "
|
|
|
|
+ "(comm %s path %s): ",
|
|
|
|
+ inode->i_sb->s_id, function, line, inode->i_ino,
|
|
|
|
+ current->comm, path);
|
|
vprintk(fmt, args);
|
|
vprintk(fmt, args);
|
|
printk("\n");
|
|
printk("\n");
|
|
va_end(args);
|
|
va_end(args);
|
|
@@ -436,7 +443,8 @@ static const char *ext4_decode_error(struct super_block *sb, int errno,
|
|
/* __ext4_std_error decodes expected errors from journaling functions
|
|
/* __ext4_std_error decodes expected errors from journaling functions
|
|
* automatically and invokes the appropriate error response. */
|
|
* automatically and invokes the appropriate error response. */
|
|
|
|
|
|
-void __ext4_std_error(struct super_block *sb, const char *function, int errno)
|
|
|
|
|
|
+void __ext4_std_error(struct super_block *sb, const char *function,
|
|
|
|
+ unsigned int line, int errno)
|
|
{
|
|
{
|
|
char nbuf[16];
|
|
char nbuf[16];
|
|
const char *errstr;
|
|
const char *errstr;
|
|
@@ -449,8 +457,8 @@ void __ext4_std_error(struct super_block *sb, const char *function, int errno)
|
|
return;
|
|
return;
|
|
|
|
|
|
errstr = ext4_decode_error(sb, errno, nbuf);
|
|
errstr = ext4_decode_error(sb, errno, nbuf);
|
|
- printk(KERN_CRIT "EXT4-fs error (device %s) in %s: %s\n",
|
|
|
|
- sb->s_id, function, errstr);
|
|
|
|
|
|
+ printk(KERN_CRIT "EXT4-fs error (device %s) in %s:%d: %s\n",
|
|
|
|
+ sb->s_id, function, line, errstr);
|
|
|
|
|
|
ext4_handle_error(sb);
|
|
ext4_handle_error(sb);
|
|
}
|
|
}
|
|
@@ -466,12 +474,13 @@ void __ext4_std_error(struct super_block *sb, const char *function, int errno)
|
|
*/
|
|
*/
|
|
|
|
|
|
void __ext4_abort(struct super_block *sb, const char *function,
|
|
void __ext4_abort(struct super_block *sb, const char *function,
|
|
- const char *fmt, ...)
|
|
|
|
|
|
+ unsigned int line, const char *fmt, ...)
|
|
{
|
|
{
|
|
va_list args;
|
|
va_list args;
|
|
|
|
|
|
va_start(args, fmt);
|
|
va_start(args, fmt);
|
|
- printk(KERN_CRIT "EXT4-fs error (device %s): %s: ", sb->s_id, function);
|
|
|
|
|
|
+ printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: ", sb->s_id,
|
|
|
|
+ function, line);
|
|
vprintk(fmt, args);
|
|
vprintk(fmt, args);
|
|
printk("\n");
|
|
printk("\n");
|
|
va_end(args);
|
|
va_end(args);
|
|
@@ -503,13 +512,13 @@ void ext4_msg (struct super_block * sb, const char *prefix,
|
|
}
|
|
}
|
|
|
|
|
|
void __ext4_warning(struct super_block *sb, const char *function,
|
|
void __ext4_warning(struct super_block *sb, const char *function,
|
|
- const char *fmt, ...)
|
|
|
|
|
|
+ unsigned int line, const char *fmt, ...)
|
|
{
|
|
{
|
|
va_list args;
|
|
va_list args;
|
|
|
|
|
|
va_start(args, fmt);
|
|
va_start(args, fmt);
|
|
- printk(KERN_WARNING "EXT4-fs warning (device %s): %s: ",
|
|
|
|
- sb->s_id, function);
|
|
|
|
|
|
+ printk(KERN_WARNING "EXT4-fs warning (device %s): %s:%d: ",
|
|
|
|
+ sb->s_id, function, line);
|
|
vprintk(fmt, args);
|
|
vprintk(fmt, args);
|
|
printk("\n");
|
|
printk("\n");
|
|
va_end(args);
|
|
va_end(args);
|