Commit d484d621 authored by Namjae Jeon's avatar Namjae Jeon Committed by Steve French
Browse files

ksmbd: add durable scavenger timer



Launch ksmbd-durable-scavenger kernel thread to scan durable fps that
have not been reclaimed by a client within the configured time.

Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 520da3c4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -149,6 +149,7 @@ void ksmbd_session_destroy(struct ksmbd_session *sess)

	ksmbd_tree_conn_session_logoff(sess);
	ksmbd_destroy_file_table(&sess->file_table);
	ksmbd_launch_ksmbd_durable_scavenger();
	ksmbd_session_rpc_clear_list(sess);
	free_channel_list(sess);
	kfree(sess->Preauth_HashValue);
@@ -326,6 +327,7 @@ void destroy_previous_session(struct ksmbd_conn *conn,

	ksmbd_destroy_file_table(&prev_sess->file_table);
	prev_sess->state = SMB2_SESSION_EXPIRED;
	ksmbd_launch_ksmbd_durable_scavenger();
out:
	up_write(&conn->session_lock);
	up_write(&sessions_table_lock);
+1 −0
Original line number Diff line number Diff line
@@ -377,6 +377,7 @@ static void server_ctrl_handle_reset(struct server_ctrl_struct *ctrl)
{
	ksmbd_ipc_soft_reset();
	ksmbd_conn_transport_destroy();
	ksmbd_stop_durable_scavenger();
	server_conf_free();
	server_conf_init();
	WRITE_ONCE(server_conf.state, SERVER_STATE_STARTING_UP);
+1 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ struct ksmbd_server_config {
	unsigned int		max_connections;

	char			*conf[SERVER_CONF_WORK_GROUP + 1];
	struct task_struct	*dh_task;
};

extern struct ksmbd_server_config server_conf;
+1 −1
Original line number Diff line number Diff line
@@ -3526,7 +3526,7 @@ int smb2_open(struct ksmbd_work *work)
					SMB2_CREATE_GUID_SIZE);
			if (dh_info.timeout)
				fp->durable_timeout = min(dh_info.timeout,
						300000);
						DURABLE_HANDLE_MAX_TIMEOUT);
			else
				fp->durable_timeout = 60;
		}
+2 −0
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@ struct create_durable_req_v2 {
	__u8 CreateGuid[16];
} __packed;

#define DURABLE_HANDLE_MAX_TIMEOUT	300000

struct create_durable_reconn_req {
	struct create_context_hdr ccontext;
	__u8   Name[8];
Loading