tgtd illustration

9
tgtd illustration based on https://github.com/fujita/tgt 1 Tuesday, November 8, 11

Upload: xu-wang

Post on 25-Dec-2014

3.651 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Tgtd illustration

tgtd illustrationbased on https://github.com/fujita/tgt

1Tuesday, November 8, 11

Page 2: Tgtd illustration

spc & devices

SCSI

General Arch

Core

target

lu

mgmt

low level drivers

backing stores

epoll

initiator

tgtadm

iSCSI, iSER, FCoE, etc.

bst: aio, rdwr, null, sg, ssc

mmc, osd, sbc, scc, smc, ssc

utils, common

conn

mtask

R&W

2Tuesday, November 8, 11

Page 3: Tgtd illustration

mtask_handlerHDR_RECVPDU_RECV

If req Len>tgtadm_req

Mgmt Routine

sys_mgmt

target_mgmt

portal_mgmt

device_mgmt

account_mgmt

connection_mgmt

tgt_mgmt

mtask_handlerRSP_SEND

IPC:

tgtadm send commands here

mgmt_task

3Tuesday, November 8, 11

Page 4: Tgtd illustration

State Transition of Conn

Free

SecuritySecurity

authSecurity

Done

Security login

Security fullLogin Login full

Full Kernel

ScsiCloseExitLogoutProto Error

Network ErrorOnl

y fo

r iSE

R

Ready

Start

Init

4Tuesday, November 8, 11

Page 5: Tgtd illustration

Cmd rx in iscsid 1OpXX

OP_DATA_OUT

iscsi_task_queueImmediate:

iscsi_task_ececuteOther:

expected SNs:

iscsi_task_executeOthers:

Add to pending listNOOP_OUT/LOGOUT:

Set EPOLLIN|EPOLLOUTSCSI_CMD:

iscsi_scsi_cmd_executeSCSI_TMFUNC:

iscsi_tm_execute

iscsi_task_ececute

all:

Set EPOLLIN|EPOLLOUT

queue:

target_cmd_queue... target.c

target_mgmt_request... target.c

5Tuesday, November 8, 11

Page 6: Tgtd illustration

Cmd rx in iscsid 2OpXX

OP_DATA_OUT iscsi_data_out_rx_done

FINAL && not pending:

iscsi_scsi_cmd_execute... as in prev page

Do nothing

6Tuesday, November 8, 11

Page 7: Tgtd illustration

SCSI Cmd ProcessingIn target.c, scsi.c, & devs

cmd_perform ==

scsi_cmd_perfor

scsi_cmd_queuedProcessed later

dev_type_template.ops[op]. cmd_perfor

sbc_rw, sbc_sync_cache

Others processed in sbc.c or spc.c

BS

7Tuesday, November 8, 11

Page 8: Tgtd illustration

Backing Storagebs_init

Create LU

bs_open

bs_thread_info follows lu

pathname, fd, size

Dev request bs_cmd_submit(cmd)

Destroy LU bs_close, bs_exit

8Tuesday, November 8, 11

Page 9: Tgtd illustration

That's All.Thanks!

9Tuesday, November 8, 11