Print this page
NEX-1643 dtrace provider for smbsrv
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
NEX-6041 Should pass the smbtorture lock tests
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
re #7815 SMB server delivers old modification time...

*** 20,30 **** */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * ! * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #include <smbsrv/smb_kproto.h> /* --- 20,30 ---- */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * ! * Copyright 2017 Nexenta Systems, Inc. All rights reserved. */ #include <smbsrv/smb_kproto.h> /*
*** 43,60 **** { int rc; rc = smbsr_decode_vwv(sr, "wl", &sr->smb_fid, &sr->arg.timestamp); ! DTRACE_SMB_1(op__Close__start, smb_request_t *, sr); return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR); } void smb_post_close(smb_request_t *sr) { ! DTRACE_SMB_1(op__Close__done, smb_request_t *, sr); } smb_sdrc_t smb_com_close(smb_request_t *sr) { --- 43,60 ---- { int rc; rc = smbsr_decode_vwv(sr, "wl", &sr->smb_fid, &sr->arg.timestamp); ! DTRACE_SMB_START(op__Close, smb_request_t *, sr); return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR); } void smb_post_close(smb_request_t *sr) { ! DTRACE_SMB_DONE(op__Close, smb_request_t *, sr); } smb_sdrc_t smb_com_close(smb_request_t *sr) {
*** 84,101 **** { int rc; rc = smbsr_decode_vwv(sr, "wl", &sr->smb_fid, &sr->arg.timestamp); ! DTRACE_SMB_1(op__CloseAndTreeDisconnect__start, smb_request_t *, sr); return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR); } void smb_post_close_and_tree_disconnect(smb_request_t *sr) { ! DTRACE_SMB_1(op__CloseAndTreeDisconnect__done, smb_request_t *, sr); } smb_sdrc_t smb_com_close_and_tree_disconnect(smb_request_t *sr) { --- 84,101 ---- { int rc; rc = smbsr_decode_vwv(sr, "wl", &sr->smb_fid, &sr->arg.timestamp); ! DTRACE_SMB_START(op__CloseAndTreeDisconnect, smb_request_t *, sr); return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR); } void smb_post_close_and_tree_disconnect(smb_request_t *sr) { ! DTRACE_SMB_DONE(op__CloseAndTreeDisconnect, smb_request_t *, sr); } smb_sdrc_t smb_com_close_and_tree_disconnect(smb_request_t *sr) {
*** 107,118 **** return (SDRC_ERROR); } mtime = smb_time_local_to_gmt(sr, sr->arg.timestamp); smb_ofile_close(sr->fid_ofile, mtime); ! smb_session_cancel_requests(sr->session, sr->tid_tree, sr); smb_tree_disconnect(sr->tid_tree, B_TRUE); if (smbsr_encode_empty_result(sr) != 0) return (SDRC_ERROR); return (SDRC_SUCCESS); --- 107,119 ---- return (SDRC_ERROR); } mtime = smb_time_local_to_gmt(sr, sr->arg.timestamp); smb_ofile_close(sr->fid_ofile, mtime); ! smb_tree_disconnect(sr->tid_tree, B_TRUE); + smb_session_cancel_requests(sr->session, sr->tid_tree, sr); if (smbsr_encode_empty_result(sr) != 0) return (SDRC_ERROR); return (SDRC_SUCCESS);