xfs: clarify units in the failed metadata io message
PATCH 1/1 xfs: clarify units in the failed metadata io message
From: Darrick J. Wong <[email protected]>
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
--- fs/xfs/xfs_buf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/xfs/xfs_buf.c +1 -1
@@ -1196,7 +1196,7 @@ xfs_buf_ioerror_alert( const char *func) {xfs_alert (bp->b_target->bt_mount, -"metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d" , +"metadata I/O error: daddr 0x%llx (\"%s\") error %d numblks %d" , (uint64_t )XFS_BUF_ADDR (bp), func, -bp->b_error, bp->b_length); }
On 1/8/18 1:40 PM, Darrick J. Wong wrote:> From: Darrick J. Wong <[email protected]>
Quoted 15 lines
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
Signed-off-by Darrick J. Wong <[email protected]>--- fs/xfs/xfs_buf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)fs/xfs/xfs_buf.c +0
-0
fs/xfs/xfs_buf.c xfs_buf_ioerror_alert( · line 1200
Quoted 6 lines
fs/xfs/xfs_buf.c +1
-1@@ -1196,7 +1196,7 @@ xfs_buf_ioerror_alert( const char *func) {xfs_alert (bp->b_target->bt_mount, -"metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d" , +"metadata I/O error: daddr 0x%llx (\"%s\") error %d numblks %d" , (uint64_t )XFS_BUF_ADDR (bp), func, -bp->b_error, bp->b_length);
Ok, so I might have nodded in approval on IRC a little early; if "block" was misleading, I think "numblks" is too. So if you change one to daddr, I wonder if the other should be changed as well to, um ...
"metadata I/O error: daddr 0x%llx (\"%s\") error %d count %d"
? That's a bit vague but at least not misleadingly containing a form of "blocks" - whatchathink? Maybe "len?" Even "sectors" is a bit overloaded now. :(
-Eric
Quoted 27 lines · Eric Sandeen
On 1/8/18 1:40 PM, Darrick J. Wong wrote:> From: Darrick J. Wong <[email protected]>
Quoted 15 lines
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
Signed-off-by Darrick J. Wong <[email protected]>--- fs/xfs/xfs_buf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)fs/xfs/xfs_buf.c +0
-0fs/xfs/xfs_buf.c xfs_buf_ioerror_alert( · line 1200
Quoted 6 lines
fs/xfs/xfs_buf.c +1
-1@@ -1196,7 +1196,7 @@ xfs_buf_ioerror_alert( const char *func) {xfs_alert (bp->b_target->bt_mount, -"metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d" , +"metadata I/O error: daddr 0x%llx (\"%s\") error %d numblks %d" , (uint64_t )XFS_BUF_ADDR (bp), func, -bp->b_error, bp->b_length);Ok, so I might have nodded in approval on IRC a little early; if "block" was misleading, I think "numblks" is too. So if you change one to daddr, I wonder if the other should be changed as well to, um ...
Quoted 1 line
"metadata I/O error: daddr 0x%llx (\"%s\") error %d count %d"
"metadata I/O error in ("\%s\") at daddr 0x%llx len %d error %d"
also:
"%s: daddr out of range: block 0x%llx, EOFS 0x%llx ", __func__, b_bn, eofs
"%s: no ops on buf for daddr 0x%llx/0x%x", __func__, b_bn, b_length
"Corruption Alert: Buffer at daddr 0x%llx had permanent write failures!"
So I guess it's also not consistent how we print buffer length either? I'll work on something to clean all this up...
--D
Quoted 9 lines
? That's a bit vague but at least not misleadingly containing a form of "blocks" - whatchathink? Maybe "len?" Even "sectors" is a bit overloaded now. :(
-Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/1 xfs: clarify units in the failed metadata io message
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
---
v2: fix more messages
--- fs/xfs/xfs_buf.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
fs/xfs/xfs_buf.c +7 -6
@@ -585,8 +585,8 @@ _xfs_buf_find(* returning a specific error on buffer lookup failures. */ xfs_alert (btp->bt_mount, -"%s: Block out of range: block 0x%llx, EOFS 0x%llx " , - __func__, cmap.bm_bn, eofs); +"%pS: daddr 0x%llx out of range, EOFS 0x%llx" , + __return_address, cmap.bm_bn, eofs);WARN_ON (1 );return NULL ; }
@@ -1196,8 +1196,9 @@ xfs_buf_ioerror_alert( const char *func) {xfs_alert (bp->b_target->bt_mount, -"metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d" , - (uint64_t )XFS_BUF_ADDR (bp), func, -bp->b_error, bp->b_length); +"metadata I/O error in %pS (\"%s\") at daddr 0x%llx len %d error %d" , + __return_address, func, (uint64_t )XFS_BUF_ADDR (bp), + bp->b_length, -bp->b_error); }int
@@ -1379,7 +1380,7 @@ _xfs_buf_ioapply(*/ if (xfs_sb_version_hascrc (&mp->m_sb)) {xfs_warn (mp, -"%s: no ops on block 0x%llx/0x%x" , +"%s: no buf ops on daddr 0x%llx len %d" , __func__, bp->b_bn, bp->b_length);xfs_hex_dump (bp->b_addr,XFS_CORRUPTION_DUMP_LEN );
@@ -1673,7 +1674,7 @@ xfs_wait_buftarg(list_del_init (&bp->b_lru);if (bp->b_flags &XBF_WRITE_FAIL ) {xfs_alert (btp->bt_mount, -"Corruption Alert: Buffer at block 0x%llx had permanent write failures!" , +"Corruption Alert: Buffer at daddr 0x%llx had permanent write failures!" , (long long )bp->b_bn);xfs_alert (btp->bt_mount,"Please run xfs_repair to determine the extent of the problem." );
Quoted 9 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
Signed-off-by Darrick J. Wong <[email protected]>---
v2: fix more messages
A useful cleanup...
Quoted 9 lines
--- fs/xfs/xfs_buf.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)fs/xfs/xfs_buf.c +0
-0
fs/xfs/xfs_buf.c _xfs_buf_find( · line 589
Quoted 7 lines
fs/xfs/xfs_buf.c +2
-2@@ -585,8 +585,8 @@ _xfs_buf_find(* returning a specific error on buffer lookup failures. */ xfs_alert (btp->bt_mount, -"%s: Block out of range: block 0x%llx, EOFS 0x%llx " , - __func__, cmap.bm_bn, eofs); +"%pS: daddr 0x%llx out of range, EOFS 0x%llx" , + __return_address, cmap.bm_bn, eofs);
That return address won't tell us anything useful - it'll almost always be xfs_buf_get_map(). That's why I used __func__ originally here, and the code hasn't really changed since I did that....
fs/xfs/xfs_buf.c xfs_buf_ioerror_alert( · line 1202
Quoted 13 lines
fs/xfs/xfs_buf.c +3
-2WARN_ON (1 );return NULL ; }@@ -1196,8 +1196,9 @@ xfs_buf_ioerror_alert( const char *func) {xfs_alert (bp->b_target->bt_mount, -"metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d" , - (uint64_t )XFS_BUF_ADDR (bp), func, -bp->b_error, bp->b_length); +"metadata I/O error in %pS (\"%s\") at daddr 0x%llx len %d error %d" , + __return_address, func, (uint64_t )XFS_BUF_ADDR (bp), + bp->b_length, -bp->b_error); }
Same here - the return address is basically going to tell us exactly the same information as the func parameter that is passed in.
Cheers,
Dave.
Signature · 2 lines
Dave Chinner [email protected]
Quoted 17 lines · Dave Chinner
Quoted 9 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
Signed-off-by Darrick J. Wong <[email protected]>---
v2: fix more messagesA useful cleanup...
Quoted 4 lines
--- fs/xfs/xfs_buf.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
Quoted 16 lines
fs/xfs/xfs_buf.c _xfs_buf_find( · line 589
Quoted 12 lines
fs/xfs/xfs_buf.c +2
-2@@ -585,8 +585,8 @@ _xfs_buf_find(* returning a specific error on buffer lookup failures. */ xfs_alert (btp->bt_mount, -"%s: Block out of range: block 0x%llx, EOFS 0x%llx " , - __func__, cmap.bm_bn, eofs); +"%pS: daddr 0x%llx out of range, EOFS 0x%llx" , + __return_address, cmap.bm_bn, eofs);That return address won't tell us anything useful - it'll almost always be
xfs_buf_get_map(). That's why I used__func__originally here, and the code hasn't really changed since I did that....
<nod>
Quoted 8 lines
Quoted 8 lines
fs/xfs/xfs_buf.c +0
-1WARN_ON (1 );return NULL ; }@@ -1196,8 +1196,9 @@ xfs_buf_ioerror_alert( const char *func) { xfs_alert(bp->b_target->bt_mount, -"metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d",
Quoted 8 lines
fs/xfs/xfs_buf.c xfs_buf_ioerror_alert( · line 1202
Quoted 5 lines
fs/xfs/xfs_buf.c +3
-1- (uint64_t)XFS_BUF_ADDR(bp), func, -bp->b_error, bp->b_length); +"metadata I/O error in %pS (\"%s\") at daddr 0x%llx len %d error %d" , + __return_address, func, (uint64_t )XFS_BUF_ADDR (bp), + bp->b_length, -bp->b_error); }Same here - the return address is basically going to tell us exactly the same information as the func parameter that is passed in.
I was making a follow-on patch that removes the func argument entirely, but eh, maybe I'll stick to strictly cleaning up units and reporting formats here.
--D
Quoted 11 lines
Cheers,
Dave.
Signature · 6 lines
Dave Chinner [email protected] -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v3 1/1 xfs: clarify units in the failed metadata io message
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
---
v3: fix only the units reporting, don't print the caller
v2: fix more messages
--- fs/xfs/xfs_buf.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
fs/xfs/xfs_buf.c +6 -5
@@ -585,7 +585,7 @@ _xfs_buf_find(* returning a specific error on buffer lookup failures. */ xfs_alert (btp->bt_mount, -"%s: Block out of range: block 0x%llx, EOFS 0x%llx " , +"%s: daddr 0x%llx out of range, EOFS 0x%llx" , __func__, cmap.bm_bn, eofs);WARN_ON (1 );return NULL ;
@@ -1196,8 +1196,9 @@ xfs_buf_ioerror_alert( const char *func) {xfs_alert (bp->b_target->bt_mount, -"metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d" , - (uint64_t )XFS_BUF_ADDR (bp), func, -bp->b_error, bp->b_length); +"metadata I/O error in \"%s\" at daddr 0x%llx len %d error %d" , + func, (uint64_t )XFS_BUF_ADDR (bp), bp->b_length, + -bp->b_error); }int
@@ -1379,7 +1380,7 @@ _xfs_buf_ioapply(*/ if (xfs_sb_version_hascrc (&mp->m_sb)) {xfs_warn (mp, -"%s: no ops on block 0x%llx/0x%x" , +"%s: no buf ops on daddr 0x%llx len %d" , __func__, bp->b_bn, bp->b_length);xfs_hex_dump (bp->b_addr,XFS_CORRUPTION_DUMP_LEN );
@@ -1673,7 +1674,7 @@ xfs_wait_buftarg(list_del_init (&bp->b_lru);if (bp->b_flags &XBF_WRITE_FAIL ) {xfs_alert (btp->bt_mount, -"Corruption Alert: Buffer at block 0x%llx had permanent write failures!" , +"Corruption Alert: Buffer at daddr 0x%llx had permanent write failures!" , (long long )bp->b_bn);xfs_alert (btp->bt_mount,"Please run xfs_repair to determine the extent of the problem." );
Quoted 10 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
If a metadata IO error happens, we report the location of the failed IO request in units of daddrs. However, the printk message misleads people into thinking that the units are fs blocks, so fix the reported units.
Signed-off-by Darrick J. Wong <[email protected]>---
v3: fix only the units reporting, don't print the caller
v2: fix more messages
Looks good.
Signature · 2 lines
Dave Chinner [email protected]