Skip to content

Commit f2bf09e

Browse files
committed
cifs: Add tracepoints for errors on flush or fsync
Makes it easier to debug errors on writeback that happen later, and are being returned on flush or fsync For example: writetest-17829 [002] .... 13583.407859: cifs_flush_err: ino=90 rc=-28 Signed-off-by: Steve French <[email protected]>
1 parent d6fd419 commit f2bf09e

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

fs/cifs/file.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2632,8 +2632,10 @@ int cifs_fsync(struct file *file, loff_t start, loff_t end, int datasync)
26322632
struct cifs_sb_info *cifs_sb = CIFS_FILE_SB(file);
26332633

26342634
rc = file_write_and_wait_range(file, start, end);
2635-
if (rc)
2635+
if (rc) {
2636+
trace_cifs_fsync_err(file_inode(file)->i_ino, rc);
26362637
return rc;
2638+
}
26372639

26382640
xid = get_xid();
26392641

@@ -2666,7 +2668,8 @@ int cifs_flush(struct file *file, fl_owner_t id)
26662668
rc = filemap_write_and_wait(inode->i_mapping);
26672669

26682670
cifs_dbg(FYI, "Flush inode %p file %p rc %d\n", inode, file, rc);
2669-
2671+
if (rc)
2672+
trace_cifs_flush_err(inode->i_ino, rc);
26702673
return rc;
26712674
}
26722675

fs/cifs/trace.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,33 @@ DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \
547547

548548
DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
549549

550+
551+
DECLARE_EVENT_CLASS(smb3_sync_err_class,
552+
TP_PROTO(unsigned long ino,
553+
int rc),
554+
TP_ARGS(ino, rc),
555+
TP_STRUCT__entry(
556+
__field(unsigned long, ino)
557+
__field(int, rc)
558+
),
559+
TP_fast_assign(
560+
__entry->ino = ino;
561+
__entry->rc = rc;
562+
),
563+
TP_printk("\tino=%lu rc=%d",
564+
__entry->ino, __entry->rc)
565+
)
566+
567+
#define DEFINE_SMB3_SYNC_ERR_EVENT(name) \
568+
DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \
569+
TP_PROTO(unsigned long ino, \
570+
int rc), \
571+
TP_ARGS(ino, rc))
572+
573+
DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
574+
DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
575+
576+
550577
DECLARE_EVENT_CLASS(smb3_enter_exit_class,
551578
TP_PROTO(unsigned int xid,
552579
const char *func_name),

0 commit comments

Comments
 (0)