Loading fs/nfs/nfs4proc.c +7 −2 Original line number Original line Diff line number Diff line Loading @@ -4964,8 +4964,9 @@ static int nfs4_proc_getlk(struct nfs4_state *state, int cmd, struct file_lock * int err; int err; do { do { err = nfs4_handle_exception(NFS_SERVER(state->inode), err = _nfs4_proc_getlk(state, cmd, request); _nfs4_proc_getlk(state, cmd, request), trace_nfs4_get_lock(request, state, cmd, err); err = nfs4_handle_exception(NFS_SERVER(state->inode), err, &exception); &exception); } while (exception.retry); } while (exception.retry); return err; return err; Loading Loading @@ -5163,6 +5164,7 @@ static int nfs4_proc_unlck(struct nfs4_state *state, int cmd, struct file_lock * rpc_put_task(task); rpc_put_task(task); out: out: request->fl_flags = fl_flags; request->fl_flags = fl_flags; trace_nfs4_unlock(request, state, F_SETLK, status); return status; return status; } } Loading Loading @@ -5386,6 +5388,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) return 0; return 0; err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_RECLAIM); err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_RECLAIM); trace_nfs4_lock_reclaim(request, state, F_SETLK, err); if (err != -NFS4ERR_DELAY) if (err != -NFS4ERR_DELAY) break; break; nfs4_handle_exception(server, err, &exception); nfs4_handle_exception(server, err, &exception); Loading @@ -5408,6 +5411,7 @@ static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) return 0; return 0; err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_EXPIRED); err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_EXPIRED); trace_nfs4_lock_expired(request, state, F_SETLK, err); switch (err) { switch (err) { default: default: goto out; goto out; Loading Loading @@ -5530,6 +5534,7 @@ static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock * do { do { err = _nfs4_proc_setlk(state, cmd, request); err = _nfs4_proc_setlk(state, cmd, request); trace_nfs4_set_lock(request, state, cmd, err); if (err == -NFS4ERR_DENIED) if (err == -NFS4ERR_DENIED) err = -EAGAIN; err = -EAGAIN; err = nfs4_handle_exception(NFS_SERVER(state->inode), err = nfs4_handle_exception(NFS_SERVER(state->inode), Loading fs/nfs/nfs4trace.h +75 −0 Original line number Original line Diff line number Diff line Loading @@ -336,6 +336,81 @@ TRACE_EVENT(nfs4_close, ) ) ); ); #define show_lock_cmd(type) \ __print_symbolic((int)type, \ { F_GETLK, "GETLK" }, \ { F_SETLK, "SETLK" }, \ { F_SETLKW, "SETLKW" }) #define show_lock_type(type) \ __print_symbolic((int)type, \ { F_RDLCK, "RDLCK" }, \ { F_WRLCK, "WRLCK" }, \ { F_UNLCK, "UNLCK" }) DECLARE_EVENT_CLASS(nfs4_lock_event, TP_PROTO( const struct file_lock *request, const struct nfs4_state *state, int cmd, int error ), TP_ARGS(request, state, cmd, error), TP_STRUCT__entry( __field(int, error) __field(int, cmd) __field(char, type) __field(loff_t, start) __field(loff_t, end) __field(dev_t, dev) __field(u32, fhandle) __field(u64, fileid) ), TP_fast_assign( const struct inode *inode = state->inode; __entry->error = error; __entry->cmd = cmd; __entry->type = request->fl_type; __entry->start = request->fl_start; __entry->end = request->fl_end; __entry->dev = inode->i_sb->s_dev; __entry->fileid = NFS_FILEID(inode); __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); ), TP_printk( "error=%d (%s) cmd=%s:%s range=%lld:%lld " "fileid=%02x:%02x:%llu fhandle=0x%08x", __entry->error, show_nfsv4_errors(__entry->error), show_lock_cmd(__entry->cmd), show_lock_type(__entry->type), (long long)__entry->start, (long long)__entry->end, MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle ) ); #define DEFINE_NFS4_LOCK_EVENT(name) \ DEFINE_EVENT(nfs4_lock_event, name, \ TP_PROTO( \ const struct file_lock *request, \ const struct nfs4_state *state, \ int cmd, \ int error \ ), \ TP_ARGS(request, state, cmd, error)) DEFINE_NFS4_LOCK_EVENT(nfs4_get_lock); DEFINE_NFS4_LOCK_EVENT(nfs4_set_lock); DEFINE_NFS4_LOCK_EVENT(nfs4_lock_reclaim); DEFINE_NFS4_LOCK_EVENT(nfs4_lock_expired); DEFINE_NFS4_LOCK_EVENT(nfs4_unlock); #endif /* _TRACE_NFS4_H */ #endif /* _TRACE_NFS4_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_PATH Loading Loading
fs/nfs/nfs4proc.c +7 −2 Original line number Original line Diff line number Diff line Loading @@ -4964,8 +4964,9 @@ static int nfs4_proc_getlk(struct nfs4_state *state, int cmd, struct file_lock * int err; int err; do { do { err = nfs4_handle_exception(NFS_SERVER(state->inode), err = _nfs4_proc_getlk(state, cmd, request); _nfs4_proc_getlk(state, cmd, request), trace_nfs4_get_lock(request, state, cmd, err); err = nfs4_handle_exception(NFS_SERVER(state->inode), err, &exception); &exception); } while (exception.retry); } while (exception.retry); return err; return err; Loading Loading @@ -5163,6 +5164,7 @@ static int nfs4_proc_unlck(struct nfs4_state *state, int cmd, struct file_lock * rpc_put_task(task); rpc_put_task(task); out: out: request->fl_flags = fl_flags; request->fl_flags = fl_flags; trace_nfs4_unlock(request, state, F_SETLK, status); return status; return status; } } Loading Loading @@ -5386,6 +5388,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) return 0; return 0; err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_RECLAIM); err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_RECLAIM); trace_nfs4_lock_reclaim(request, state, F_SETLK, err); if (err != -NFS4ERR_DELAY) if (err != -NFS4ERR_DELAY) break; break; nfs4_handle_exception(server, err, &exception); nfs4_handle_exception(server, err, &exception); Loading @@ -5408,6 +5411,7 @@ static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) return 0; return 0; err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_EXPIRED); err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_EXPIRED); trace_nfs4_lock_expired(request, state, F_SETLK, err); switch (err) { switch (err) { default: default: goto out; goto out; Loading Loading @@ -5530,6 +5534,7 @@ static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock * do { do { err = _nfs4_proc_setlk(state, cmd, request); err = _nfs4_proc_setlk(state, cmd, request); trace_nfs4_set_lock(request, state, cmd, err); if (err == -NFS4ERR_DENIED) if (err == -NFS4ERR_DENIED) err = -EAGAIN; err = -EAGAIN; err = nfs4_handle_exception(NFS_SERVER(state->inode), err = nfs4_handle_exception(NFS_SERVER(state->inode), Loading
fs/nfs/nfs4trace.h +75 −0 Original line number Original line Diff line number Diff line Loading @@ -336,6 +336,81 @@ TRACE_EVENT(nfs4_close, ) ) ); ); #define show_lock_cmd(type) \ __print_symbolic((int)type, \ { F_GETLK, "GETLK" }, \ { F_SETLK, "SETLK" }, \ { F_SETLKW, "SETLKW" }) #define show_lock_type(type) \ __print_symbolic((int)type, \ { F_RDLCK, "RDLCK" }, \ { F_WRLCK, "WRLCK" }, \ { F_UNLCK, "UNLCK" }) DECLARE_EVENT_CLASS(nfs4_lock_event, TP_PROTO( const struct file_lock *request, const struct nfs4_state *state, int cmd, int error ), TP_ARGS(request, state, cmd, error), TP_STRUCT__entry( __field(int, error) __field(int, cmd) __field(char, type) __field(loff_t, start) __field(loff_t, end) __field(dev_t, dev) __field(u32, fhandle) __field(u64, fileid) ), TP_fast_assign( const struct inode *inode = state->inode; __entry->error = error; __entry->cmd = cmd; __entry->type = request->fl_type; __entry->start = request->fl_start; __entry->end = request->fl_end; __entry->dev = inode->i_sb->s_dev; __entry->fileid = NFS_FILEID(inode); __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); ), TP_printk( "error=%d (%s) cmd=%s:%s range=%lld:%lld " "fileid=%02x:%02x:%llu fhandle=0x%08x", __entry->error, show_nfsv4_errors(__entry->error), show_lock_cmd(__entry->cmd), show_lock_type(__entry->type), (long long)__entry->start, (long long)__entry->end, MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle ) ); #define DEFINE_NFS4_LOCK_EVENT(name) \ DEFINE_EVENT(nfs4_lock_event, name, \ TP_PROTO( \ const struct file_lock *request, \ const struct nfs4_state *state, \ int cmd, \ int error \ ), \ TP_ARGS(request, state, cmd, error)) DEFINE_NFS4_LOCK_EVENT(nfs4_get_lock); DEFINE_NFS4_LOCK_EVENT(nfs4_set_lock); DEFINE_NFS4_LOCK_EVENT(nfs4_lock_reclaim); DEFINE_NFS4_LOCK_EVENT(nfs4_lock_expired); DEFINE_NFS4_LOCK_EVENT(nfs4_unlock); #endif /* _TRACE_NFS4_H */ #endif /* _TRACE_NFS4_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_PATH Loading