linux/drivers/target/target_core_sbc.c
<<
0<.6./spaue= .6./forme= .6.a 0<.6 href="../linux+v3n> 7/drivers/target/target_core_sbc.c"> 0<.6.img src="../.static/gfx/right.png" alt=">>"> ./spaue= .spau class="lxr_search"> 0< 0<.6.input typn vhidden" namn vnavtarget"option v"> 0<.6.input typn vtext" namn vsearch" id vsearch"> 0<.6.butt Search 0<.6Prefs= .6./a> ./spaue=0<.6 6./dive=0<.6 6.form acvalu="ajax+*" method="post" onsubmit="return false;"> .input typn vhidden" namn vajax_lookup" id vajax_lookup" ption v"> 0<.6 6./forme= 0<.6 6.div class="headingbott m">= .div id vfile_contents"e
6 61./a>.spau class="comment">/*./spaue=6 62./a>.spau class="comment"> * SCSI Block Commands (SBC) parsing and emulavalu../spaue=6 63./a>.spau class="comment"> *./spaue=6 64./a>.spau class="comment"> * Copyright (c) 2002, 2003, 2004, 2005 PyX Technologies, Inc../spaue=6 65./a>.spau class="comment"> * Copyright (c) 2005, 2006, 2007 SBE, Inc../spaue=6 66./a>.spau class="comment"> * Copyright (c) 2007-2010 Rising Tide Systems./spaue=6 67./a>.spau class="comment"> * Copyright (c) 2008-2010 Linux-iSCSI.org./spaue=6 68./a>.spau class="comment"> *./spaue=6 69./a>.spau class="comment"> * Nicholas A. Bellinger <nab@kernel.org>./spaue=6 ptioa>.spau class="comment"> *./spaue=6 11./a>.spau class="comment"> * This program is free software; you cau redistribute it and/or modify./spaue=6 12./a>.spau class="comment"> * it under the terms of the GNU General Public License as published by./spaue=6 13./a>.spau class="comment"> * the Free Software Foundavalu; either vers  6 14./a>.spau class="comment"> * (at your n valu) any laver vers  <../spaue=6 15./a>.spau class="comment"> *./spaue=6 16./a>.spau class="comment"> * This program is distributed in the hope that it will be useful,./spaue=6 17./a>.spau class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of./spaue=6 18./a>.spau class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the./spaue=6 19./a>.spau class="comment"> * GNU General Public License for more details../spaue=6 2tioa>.spau class="comment"> *./spaue=6 21./a>.spau class="comment"> * You should have received a copy of the GNU General Public License./spaue=6 22./a>.spau class="comment"> * along with this program; if not, write to the Free Software./spaue=6 23./a>.spau class="comment"> * Foundavalu, Inc., 59 Temple Place - Suite 330, Bostlu, MA 02111-1307, USA../spaue=6 24./a>.spau class="comment"> */./spaue=6 25./a>=6 26./a>#include <linux/kernel.h./a>>=6 27./a>#include <linux/module.h./a>>=6 28./a>#include <linux/ravelimit.h./a>>=6 29./a>#include <asm/unaligned.h./a>>=6 30./a>#include <scsi/scsi.h./a>>=6 31./a>=6 32./a>#include <target/target_core_base.h./a>>=6 33./a>#include <target/target_core_backend.h./a>>=6 34./a>#include <target/target_core_fabric.h./a>>=6 35./a>=6 36./a>#include "target_core_internal.h./a>"=6 37./a>#include "target_core_ua.h./a>"=6 38./a>=6 39./a>=6 40./a>static int6.a href="+code=sbc_emulave_readcapacity" class="sref">sbc_emulave_readcapacity./a>(struct6.a href="+code=se_cmd" class="sref">se_cmd./a> *.a href="+code=cmd" class="sref">cmd./a>)=6 41./a>{=6 42./a>        struct6.a href="+code=se_device" class="sref">se_device./a> *.a href="+code=dev" class="sref">dev./a> =6.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="sref">se_dev./a>;=6 43./a>        unsigned char *.a href="+code=buf" class="sref">buf./a>;=6 44./a>        unsigned long long .a href="+code=blocks_long" class="sref">blocks_long./a> =6.a href="+code=dev" class="sref">dev./a>->.a href="+code=transport" class="sref">transport./a>->.a href="+code=get_blocks" class="sref">get_blocks./a>(.a href="+code=dev" class="sref">dev./a>);=6 45./a>        .a href="+code=u32" class="sref">u32./a> .a href="+code=blocks" class="sref">blocks./a>;=6 46./a>=6 47./a>        if (.a href="+code=blocks_long" class="sref">blocks_long./a> >= 0x00000000ffffffff)=6 48./a>                .a href="+code=blocks" class="sref">blocks./a> = 0xffffffff;=6 49./a>        else=6 50./a>                .a href="+code=blocks" class="sref">blocks./a> = (.a href="+code=u32" class="sref">u32./a>).a href="+code=blocks_long" class="sref">blocks_long./a>;=6 51./a>=6 52./a>        .a href="+code=buf" class="sref">buf./a> =6.a href="+code=transport_kmap_data_sg" class="sref">transport_kmap_data_sg./a>(.a href="+code=cmd" class="sref">cmd./a>);=6 53./a>=6 54./a>        .a href="+code=buf" class="sref">buf./a>[0] = (.a href="+code=blocks" class="sref">blocks./a> >> 24) & 0xff;=6 55./a>        .a href="+code=buf" class="sref">buf./a>[1] = (.a href="+code=blocks" class="sref">blocks./a> >> 16) & 0xff;=6 56./a>        .a href="+code=buf" class="sref">buf./a>[2] = (.a href="+code=blocks" class="sref">blocks./a> >> 8) & 0xff;=6 57./a>        .a href="+code=buf" class="sref">buf./a>[3] =6.a href="+code=blocks" class="sref">blocks./a> & 0xff;=6 58./a>        .a href="+code=buf" class="sref">buf./a>[4] = (.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> >> 24) & 0xff;=6 59./a>        .a href="+code=buf" class="sref">buf./a>[5] = (.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> >> 16) & 0xff;=6 60./a>        .a href="+code=buf" class="sref">buf./a>[6] = (.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> >> 8) & 0xff;=6 61./a>        .a href="+code=buf" class="sref">buf./a>[7] =6.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> & 0xff;=6 62./a>=6 63./a>        .a href="+code=transport_kunmap_data_sg" class="sref">transport_kunmap_data_sg./a>(.a href="+code=cmd" class="sref">cmd./a>);=6 64./a>=6 65./a>        .a href="+code=target_complete_cmd" class="sref">target_complete_cmd./a>(.a href="+code=cmd" class="sref">cmd./a>, .a href="+code=GOOD" class="sref">GOOD./a>);=6 66./a>        return 0;=6 67./a>}=6 68./a>=6 69./a>static int6.a href="+code=sbc_emulave_readcapacity_16" class="sref">sbc_emulave_readcapacity_16./a>(struct6.a href="+code=se_cmd" class="sref">se_cmd./a> *.a href="+code=cmd" class="sref">cmd./a>)=6 70./a>{=6 71./a>        struct6.a href="+code=se_device" class="sref">se_device./a> *.a href="+code=dev" class="sref">dev./a> =6.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="sref">se_dev./a>;=6 72./a>        unsigned char *.a href="+code=buf" class="sref">buf./a>;=6 73./a>        unsigned long long .a href="+code=blocks" class="sref">blocks./a> = .a href="+code=dev" class="sref">dev./a>->.a href="+code=transport" class="sref">transport./a>->.a href="+code=get_blocks" class="sref">get_blocks./a>(.a href="+code=dev" class="sref">dev./a>);=6 74./a>=6 75./a>        .a href="+code=buf" class="sref">buf./a> =6.a href="+code=transport_kmap_data_sg" class="sref">transport_kmap_data_sg./a>(.a href="+code=cmd" class="sref">cmd./a>);=6 76./a>=6 77./a>        .a href="+code=buf" class="sref">buf./a>[0] = (.a href="+code=blocks" class="sref">blocks./a> >> 56) & 0xff;=6 78./a>        .a href="+code=buf" class="sref">buf./a>[1] = (.a href="+code=blocks" class="sref">blocks./a> >> 48) & 0xff;=6 79./a>        .a href="+code=buf" class="sref">buf./a>[2] = (.a href="+code=blocks" class="sref">blocks./a> >> 40) & 0xff;=6 80./a>        .a href="+code=buf" class="sref">buf./a>[3] = (.a href="+code=blocks" class="sref">blocks./a> >> 32) & 0xff;=6 81./a>        .a href="+code=buf" class="sref">buf./a>[4] = (.a href="+code=blocks" class="sref">blocks./a> >> 24) & 0xff;=6 82./a>        .a href="+code=buf" class="sref">buf./a>[5] = (.a href="+code=blocks" class="sref">blocks./a> >> 16) & 0xff;=6 83./a>        .a href="+code=buf" class="sref">buf./a>[6] = (.a href="+code=blocks" class="sref">blocks./a> >> 8) & 0xff;=6 84./a>        .a href="+code=buf" class="sref">buf./a>[7] =6.a href="+code=blocks" class="sref">blocks./a> & 0xff;=6 85./a>        .a href="+code=buf" class="sref">buf./a>[8] = (.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> >> 24) & 0xff;=6 86./a>        .a href="+code=buf" class="sref">buf./a>[9] = (.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> >> 16) & 0xff;=6 87./a>        .a href="+code=buf" class="sref">buf./a>[10] = (.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> >> 8) & 0xff;=6 88./a>        .a href="+code=buf" class="sref">buf./a>[11] =6.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> & 0xff;=6 89./a>        .spau class="comment">/*./spaue=6 9tioa>.spau class="comment">         * Set Thin Provis  6 91./a>.spau class="comment">         * READ CAPACITY (16) byte 14 if emulave_tpu or emulave_tpws is enabled../spaue=6 92./a>.spau class="comment">         */./spaue=6 93./a>        if (.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=emulave_tpu" class="sref">emulave_tpu./a> ||6.a href="+code=dev" class="sref">dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=emulave_tpws" class="sref">emulave_tpws./a>)=6 94./a>                .a href="+code=buf" class="sref">buf./a>[14] = 0x80;=6 95./a>=6 96./a>        .a href="+code=transport_kunmap_data_sg" class="sref">transport_kunmap_data_sg./a>(.a href="+code=cmd" class="sref">cmd./a>);=6 97./a>=6 98./a>        .a href="+code=target_complete_cmd" class="sref">target_complete_cmd./a>(.a href="+code=cmd" class="sref">cmd./a>, .a href="+code=GOOD" class="sref">GOOD./a>);=6 99./a>        return 0;=6100./a>}=6101./a>=6102./a>int6.a href="+code=spc_get_write_samn_secvors" class="sref">spc_get_write_samn_secvors./a>(struct6.a href="+code=se_cmd" class="sref">se_cmd./a> *.a href="+code=cmd" class="sref">cmd./a>)=6103./a>{=6104./a>        .a href="+code=u32" class="sref">u32./a> .a href="+code=num_blocks" class="sref">num_blocks./a>;=6105./a>=6106./a>        if (.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=t_task_cdb" class="sref">t_task_cdb./a>[0] ==6.a href="+code=WRITE_SAME" class="sref">WRITE_SAME./a>)=6107./a>                .a href="+code=num_blocks" class="sref">num_blocks./a> =6.a href="+code=get_unaligned_be16" class="sref">get_unaligned_be16./a>(&.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=t_task_cdb" class="sref">t_task_cdb./a>[7]);=6108./a>        else if (.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=t_task_cdb" class="sref">t_task_cdb./a>[0] ==6.a href="+code=WRITE_SAME_16" class="sref">WRITE_SAME_16./a>)=6109./a>                .a href="+code=num_blocks" class="sref">num_blocks./a> =6.a href="+code=get_unaligned_be32" class="sref">get_unaligned_be32./a>(&.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=t_task_cdb" class="sref">t_task_cdb./a>[10]);=6110./a>        else .spau class="comment">/* WRITE_SAME_32 via VARIABLE_LENGTH_CMD */./spaue=6111./a>                .a href="+code=num_blocks" class="sref">num_blocks./a> =6.a href="+code=get_unaligned_be32" class="sref">get_unaligned_be32./a>(&.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=t_task_cdb" class="sref">t_task_cdb./a>[28]);=6112./a>=6113./a>        .spau class="comment">/*./spaue=6114./a>.spau class="comment">         * Use the explicit range when non zero is supplied, otherwise calculave./spaue=6115./a>.spau class="comment">         * the remai6116./a>.spau class="comment">         */./spaue=6117./a>        if (.a href="+code=num_blocks" class="sref">num_blocks./a>)=6118./a>                return .a href="+code=num_blocks" class="sref">num_blocks./a>;=6119./a>=6120./a>        return .a href="+code=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="sref">se_dev./a>->.a href="+code=transport" class="sref">transport./a>->.a href="+code=get_blocks" class="sref">get_blocks./a>(.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="sref">se_dev./a>) -=6121./a>                .a href="+code=cmd" class="sref">cmd./a>->.a href="+code=t_task_lba" class="sref">t_task_lba./a> + 1;=6122./a>}=6123./a>.a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL./a>(.a href="+code=spc_get_write_samn_secvors" class="sref">spc_get_write_samn_secvors./a>);=6124./a>=6125./a>static int6.a href="+code=sbc_emulave_verify" class="sref">sbc_emulave_verify./a>(struct6.a href="+code=se_cmd" class="sref">se_cmd./a> *.a href="+code=cmd" class="sref">cmd./a>)=6126./a>{=6127./a>        .a href="+code=target_complete_cmd" class="sref">target_complete_cmd./a>(.a href="+code=cmd" class="sref">cmd./a>, .a href="+code=GOOD" class="sref">GOOD./a>);=6128./a>        return 0;=6129./a>}=6130./a>=6131./a>static int6.a href="+code=sbc_emulave_noop" class="sref">sbc_emulave_noop./a>(struct6.a href="+code=se_cmd" class="sref">se_cmd./a> *.a href="+code=cmd" class="sref">cmd./a>)=6132./a>{=6133./a>        .a href="+code=target_complete_cmd" class="sref">target_complete_cmd./a>(.a href="+code=cmd" class="sref">cmd./a>, .a href="+code=GOOD" class="sref">GOOD./a>);=6134./a>        return 0;=6135./a>}=6136./a>=6137./a>static .a href="+code=inline" class="sref">inline./a> .a href="+code=u32" class="sref">u32./a> .a href="+code=sbc_get_size" class="sref">sbc_get_size./a>(struct6.a href="+code=se_cmd" class="sref">se_cmd./a> *.a href="+code=cmd" class="sref">cmd./a>, .a href="+code=u32" class="sref">u32./a> .a href="+code=secvors" class="sref">secvors./a>)=6138./a>{=6139./a>        return .a href="+code=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="sref">se_dev./a>->.a href="+code=se_sub_dev" class="sref">se_sub_dev./a>->.a href="+code=se_dev_attrib" class="sref">se_dev_attrib./a>..a href="+code=block_size" class="sref">block_size./a> * .a href="+code=secvors" class="sref">secvors./a>;=6140./a>}=6141./a>=6142./a>static int6.a href="+code=sbc_check_valid_secvors" class="sref">sbc_check_valid_secvors./a>(struct6.a href="+code=se_cmd" class="sref">se_cmd./a> *.a href="+code=cmd" class="sref">cmd./a>)=6143./a>{=6144./a>        struct6.a href="+code=se_device" class="sref">se_device./a> *.a href="+code=dev" class="sref">dev./a> =6.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="sref">se_dev./a>;=6145./a>        unsigned long long .a href="+code=end_lba" class="sref">end_lba./a>;=6146./a>        .a href="+code=u32" class="sref">u32./a> .a href="+code=secvors" class="sref">secvors./a>;=6147./a>=6148./a>        .a href="+code=secvors" class="sref">secvors./a> =6.a href="+code=cmd" class="sref">cmd./a>->.a href="+code=data_lengrh" class="sref">dlass="srefnamn vL114">6114./a>.spau hrefy1ref">=buf./a>[/a>->.a href="+code=se_dev" cl=buf" class="sref">buf./a>;=6 73./a>        unsigned long long .a href="+code=blocks" class="sref">blocks./a> = .a href="target/target_core_sbc.c#L121" id vL121" class="lilocks" cl1ass="sref">blocks./a> = 10xfff15return 0;=1block15cks./a>(.a hrclass="sref">cmd./a>->.a href="+code=t_task_cdb" class="sref">t_task>se_dev./a>) -="sref">buf./a>[/a>->.a href="+code=se_dev" cl) (struct6.a href="+code=se_cmd" class="sref">sea href="+1code=blocks_long" class=1"sref1>blocks_long./" class="sref">buf./a>[pr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qcmd" c: dev %llu, .c#L147 %u exceedu./sd dev %llu\n href="maiseavors" claref">buf./a> =6.a href="1+code153locks_long./" class=ef="+code=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="sref">se_dev./a>) -=->.a href="+code=se_dev" cl)et/target_core_sbc.c#L121" id vL121" class="lilcmd./a> *./a>(.a href="+code=cmd"1 clas1="sref">cmd./a/a>)==6 54./a>        .a hre1f="+c1de=buf" class=+code=block_size" class="sref">block_size./a> namn vL551">6 55./a>        .a hre1f="+c15return 0;=6 56./a>        .a hr1ef="+1ode=buf" classa>(.a href="+code=cmd" class="sref">cmd./a>, .a href=" class="l1ine" namn vL57">6 57./a>1     1  .a h+code=block_size" class="sref">block_size./a> n .a href=ref="+code=se_dev_attrib1" cla15ne" namn vL118">6118./a>                return .a ->.a h1ref="+code=se_dev_attrib1" cla16n vL38">6 38a href="drivers/target/target_core_sbc.c#L136" id vL136" class="line" namn vL136">6136./a>=numa>static int6.a href="+code=sbc_check_valid_se>->.a 1href="+code=se_dev_attri1b" cl16city./a>(struct6.a href="+code=se_cmd" class="sref1e_sub_dev1./a>->.a href="+code=1se_de16e=buf" class="href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn vLcode=bloc1k_size" class="sref">blo1ck_si16vL22">6 22./a>.spau class="ccccccccc"line"8-     c#L14return.  SBC-3 says:rget_core_sbc.c#L112" id vL112" class="line" namn vLccmd./a> */a>        .a href="+cod1e=tra16et_core_sbc.c#L113" id vL113" class="rget_core_sbc.c#L112" id vL112" class="line" namn vLcamn vL541./a>(.a href="+code=cmd"1 clas16lass="comment">         * Use the expl  A TRANSFER lass=" field  ctthe  .spaspecifies5./a>.25retet_core_sbc.c#L112" id vL112" class="line" namn vLcny laver vvers  <../spaue=         * the the.spacal f="+co shaclass=get_ten.  Anyment">returnetet_core_sbc.c#L112" id vL112" class="line" namn vLcnamn vL51=GOOD" class="sref">GOOD1./a>)16">6 16./a>.spau class="comme   * the thespecifies5./e numb">rofe.spacal f="+co ./a>.shaclassetet_core_sbc.c#L112" id vL112" class="line" namn vLcclass="l1ss="line" namn vL66">6 616./a>167">6 17./a>.spau class="comm   * the theget_ten.etet_core_sbc.c#L112" id vL112" class="line" namn vLc .a href=L67" id vL67" class="lin1e" na1618">6 18./a>.spau class="com   * the remaisbc_emulave_read1capac17locks./a>;=numks" ? :.25ref="+code=cmd" class="sref">cmd./a>, .a href="">se_cmd.1/a> *.a href="+code=cmd"1 clas1="sref+code=block_size" class="sref">block_size./a> vice./a> 1*.a href="+code=dev" cla1ss="s17href="+code=cmd" class="sref">cmd./a>->.a href=="drivers1/target/target_core_sbc.1c#L721 id vL8">6 38a href="drivers/target/target_core_sbc.c#L136" id vL136" class="line" namn vL136">6136./a>=get_unaligs="linvL95" clas137" c#L147_ href=l.a href="+code=cmd" class="sreode=num_blocks" clef">numa>static int6.a href="+code=sbc_check_valid_se+code=tra1nsport" class="sref">tra1nspor1./a>-&/a>(struct6.a href="+code=se_cmd" class="sref1et_blocks1./a>(.a href="+code=dev"1 clas1="sref">dev./a href="ne" namn vL49">6 49./a>        else=cmd./a>de=num_blocks" clef">numk7]ref="ef=">-&gar href="drivers/>de=num_blocks" clef">numk8]ef="+code=cmd" class="sref">cmd./a>, .a href=""ny laver ref">buf./a> =6.a href="1+code1transp+code=block_size" class="sref">block_size./a> v.c#L16" idd vL16" class="line" namn/a>)17./a>        .a href="+code=u32" class="sref">u32./namn vL771">6 77./a>        .a hre1f="+c1de=buf8">6 38a href="drivers/target/target_core_sbc.c#L136" id vL136" class="line" namn vL136">6136./a>=line" namn vL136vL95" clas137" c#L147_>lref=l.a href="+code=cmd" class="sreode=num_blocks" clef">numa>static int6.a href="+code=sbc_check_valid_se+ .a href=">6 78./a>        .a hre1f="+c1de=buf/a>(struct6.a href="+code=se_cmd" class="sref1namn vL791">6 79./a>        .a hre1f="+c18locks./a>;=6 49./a>        else=cmd./a>de=num_blocks" clef">numk6]ref="ef=">->+ass="sref">cmd./a>de=num_blocks" clef">numk7]ref="ef="> cmd./a>de=num_blocks" clef">numk8]ref="ef=">-&gar href="drivers/>de=num_blocks" clef">numk9]ef="+code=cmd" class="sref">cmd./a>, .a href="namn vL801">6 80./a>        .a hre1f="+c18"sref+code=block_size" class="sref">block_size./a> namn vL811">6 81./a>        .a hre1f="+c18href="+code=cmd" class="sref">cmd./a>->.a href=namn vL821">6 82./a>        .a hre1f="+c18id vL8">6 38a href="drivers/target/target_core_sbc.c#L136" id vL136" class="line" namn vL136">6136./a>=L108" class="linvL95" clas137" c#L147_1Lde=bl.a href="+code=cmd" class="sreode=num_blocks" clef">numa>static int6.a href="+code=sbc_check_valid_se namn vL813">6 83./a>        .a hr1ef="+18/a>-&/a>(struct6.a href="+code=se_cmd" class="sref1 class="l1ine" namn vL84">6 84./a>1     18"sref">dev./a href="ne" namn vL49">6 49./a>        else=cmd./a>de=num_blocks" clef">numklassef="ef=">->+ass="sref">cmd./a>de=num_blocks" clef">numkclasef="ef="> (struct6.a href="+code=se_cmd" class="sref1 ny laver ref="+code=se_dev_attrib1" cla1s="sref">se_deeeeeeeeeeeeess="sref">cmd./a>de=num_blocks" clef">numkc2]ref="ef=">-&gar href="drivers/>de=num_blocks" clef">numk13]ef="+code=cmd" class="sref">cmd./a>, .a href="n.c#L16" iref="+code=se_dev_attrib1" cla18->.a 1href="+code=se_dev_attri1b" cl18      return 0;=6 18./a>.spau class="cotarget_core_sbc.c#L112" id vL112" class="line" namn vLe./a> &am1p; 0xff;=6 1tioa>.spau class="comment">   remai6 91.1/a>.s192d vL8">6 38a href="drivers/target/target_core_sbc.c#L136" id vL136" class="line" namn vL136">6136./a>=numa>static int6.a href="+code=sbc_check_valid_se enabled.1./spaue=sesref">se_1sub_dev./a>->.a href=1"+cod19omplete_cmd./a>(.a hne" namn vL49">6 49./a>        else=cmd./a>de=num_blocks" clef">numk28ssef="ef=">->+ass="sref">cmd./a>de=num_blocks" clef">numk29asef="ef="> (struct6.a href="+code=se_cmd" class="sref1ivers/tar1get/target_core_sbc.c#L914" id195"sref">se_deeeeeeeeeeeeess="sref">cmd./a>de=num_blocks" clef">numk30]ref="ef=">-&gar href="drivers/>de=num_blocks" clef">numk31]ef="+code=cmd" class="sref">cmd./a>, .a href="    .a hr1ef="+code=buf" class="sr1ef">b19return 0;=6 96.1/a>        .a href="+cod1e=tra19(.a href="+code=cmd"1 clas19      return 0;=tar199d vL8">6 38a href="drivers/target/target_core_sbc.c#L136" id vL136" class="line" namn vL136">6136./a>=numa>static int6.a href="+code=sbc_check_valid_s2f="+code=2OOD" class="sref">GOOD./2>);=<20y_16./a>(struct6.a href="+code=se_cmd" class="sref2" class="2ine" namn vL99">6 99./a>2     201mplete_cmd./a>(.a hnss="sref">cmd./a>de=num_blocks" clef">numkc]f">dev./a1f)sef="ef="> cmd./a>de=num_blocks" clef">numk2]ref="ef=">-&gev./a>->.a hre>de=num_blocks" clef">numk3]ef="+code=cmd" class="sref">cmd./a>, .a href=2c#L100" i2 vL100" class="line" nam2 vL1020 href="+code=cmd" class="sref">cmd./a>->.a href2rs" class2"sref">spc_get_write_sam2_secv20ransport_kmap_data_sg" class="sref">transport_kma2_cmd./a> 2.a href="+code=cmd" clas2="sre2">cmd.8">6 38a href="drivers/target/target_core_sbc.c#L136" id vL136" class="line" namn vL136">6136./a>=numa>static int6.a href="+code=sbc_check_valid_s2f5md./a> 2.et/target_core_sbc.c#L924./a>2      /a>(struct6.a href="+code=se_cmd" class="sref2"6md./a> 2.f="+code=buf" class="sr2">num2blocks./a>;=(.a hne" namn vL49">6>de=num_blocks" clef">numk2]ref="ef=">->|ass="sref">cmd./a>de=num_blocks" clef">numk3]sef="ef="> cmd./a>de=num_blocks" clef">numk4]ref="ef=">-&gev./a>->.a hre>de=num_blocks" clef">numk5]ef="+code=cmd" class="sref">cmd./a>, .a href=2c7md./a> 2.a>        .a href="+cod2="+co20get_unaligned_be16./a>2&20      return 0;=->.a href="+co2e=t_t209d vL8">6 38a href="drivers/target/target_core_sbc.c#L136" href="+code=cmd" class="sref">cmd.vL95" claslba_/a>         vL136vL95" claslba_6et_col.a href="+code=cmd" class="sreode=num_blocks" clef">numa>static int6.a href="+code=sbc_check_valid_s2ass="sref2>get_unaligned_be32./a>(2amp;.21y_16./a>(struct6.a href="+code=se_cmd" class="sref2ore_sbc.c2L110" id vL110" class="l2ne" n2mn vL110">6110.a href="a href="drivers/tar__vet_blocks" vL136__ve" idf="+code=u32" cla__vline" namn vL136__vlef">=get_unaligned_be32./a>(2amp;.2 href="+code=cmd" class="sref">cmd./a>->.a href2"+code=t_2ask_cdb" class="sref">t_2ask_c21>cmd./a>)=block_size>de=num_blocks" clef">numk2]ref="ef=">->|ass="sref">cmd./a>de=num_blocks" clef">numk3]sef="ef="> cmd./a>de=num_blocks" clef">numk4]ref="ef=">-&gev./a>->.a hre>de=num_blocks" clef">numk5]ef="+code=cmd" class="sref">cmd./a>, .a href=2112">61122/a>=s="sref">block_size>de=num_blocks" clef">numk6]ref="ef=">->|ass="sref">cmd./a>de=num_blocks" clef">numk7]ref="ef="> cmd./a>de=num_blocks" clef">numk8]ref="ef=">-&gev./a>->.a hre>de=num_blocks" clef">numk9]ef="+code=cmd" class="sref">cmd./a>, .a href=2" class="2ine" namn vL114">6114./a2.spau21      .a href="+code=u32" class="sref">u32./a> .a2d vL115" 2lass="line" namn vL115">2115./21locks./a>;=(.a hn(href="+code=cmd" cef="drivers/targ__vline" namn vL136__vlef">in|ashref="+code=cmd" cef="drivers/targ__vet_blocks" vL136__ve" idsef="ef=">32ef="+code=cmd" class="sref">cmd./a>, .a href=2"7md./a> 2ue=6 18./a>.spau class="cotarget_core_sbc.c#L112" id vL112" class="line" namn v2href="+co2e=num_blocks" class="sre2">num22t/target_core_sbc.c#L89" id "lForask_cdb" class="srDB.w/>32ng Enaextend+corDBsrget_core_sbc.c#L112" id vL112" class="line" namn v2ef="+code2get_blocks" class="sref"2get_b22ioa>.spau class="comment">   remai6121./a>          2     222d vL8">6 38a href="drivers/target/target_core_sbc.c#L136" href="+code=cmd" class="sref">cmd.vL95" claslba_/a_ext>         vL136vL95" claslba_6e_extt_col.a href="+code=cmd" class="sreode=num_blocks" clef">numa>static int6.a href="+code=sbc_check_valid_s2"+code=t_2ask_lba" class="sref">t_2ask_l22s./a>(struct6.a href="+code=se_cmd" class="sref">s2ef="+code2EXPORT_SYMBOL" class="sr2f">EX224 vL110">6110.a href="a href="drivers/tar__vet_blocks" vL136__ve" idf="+code=u32" cla__vline" namn vL136__vlef">=spc_get_write_2amn_s22      .a href="+code=u32" class="sref">u32./a> .a2ave_verif2" class="sref">sbc_emula2e_ver22line" namn vL145">6145./a>  __vet_blocks" vL136__ve" ids="sref">block_size>de=num_blocks" clef">numk12]ref="ef=">->|ass="sref">cmd./a>de=num_blocks" clef">numk13]sef="ef="> cmd./a>de=num_blocks" clef">numk14]ref="ef=">-&gev./a>->.a hre>de=num_blocks" clef">numk15]ef="+code=cmd" class="sref">cmd./a>, .a href=2_cmd./a> 2.a href="+code=cmd" clas2="sre2">cmd./a>)=s="sref">block_size>de=num_blocks" clef">numk16]ref="ef=">->|ass="sref">cmd./a>de=num_blocks" clef">numk17]ref="ef="> cmd./a>de=num_blocks" clef">numk18]ref="ef=">-&gev./a>->.a hre>de=num_blocks" clef">numk19]ef="+code=cmd" class="sref">cmd./a>, .a href=2target_co2plete_cmd" class="sref">2arget22      return 0;=GOOD./a>)2=)=in|ashref="+code=cmd" cef="drivers/targ__vet_blocks" vL136__ve" idsef="ef=">32ef="+code=cmd" class="sref">cmd./a>, .a href=2 class="l2ne" namn vL128">6128./a>2     23ref="+code=block_size" class="sref">block_size./a>2c#L129" i2 vL129" class="line" nam2 vL1223vors./a>;=sbc_emu2ave_n23>6140./a>}=6143./a>{=s2_cmd./a> 2.a href="+code=cmd" clas2="sre233locks_long./" class=.a href="+code=cmd" class="sreflag/target_core_sbcflag/>numa>static int6.a href="+code=sbc_check_valid_s2target_co2plete_cmd" class="sref">2arget23/a>-&/a>(struct6.a href="+code=se_cmd" class="sref2+code=GOO2" class="sref">GOOD./a>)2=se_declasss="sref">cmd./aflag/target_core_sbcflag/>numarge">dev./a0>||ass="sref">cmd./aflag/target_core_sbcflag/>numarge">dev./a02)) (struct6.a href="+code=se_cmd" class="sref">s2 class="l2ne" namn vL134">6134./a>2     23="sref">se_deeeeeeeees="sref">cmd./apr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qa href="+c PBDATA andSLBDATA href="mais2 cmd./a> 2 vL135" class="line" nam2 vL1323=t_task_cdb" class="seeeeeeeesclass="comme"linng"h./a>&q    s not cup claee foraB="+c Discard href="mais2 arget_co2 *.a href="+code=cmd" cl2ss="s23" class="line" namn veeeeeeeesclass="comme"linng"h./a>&q E" claion\n href="mais23k_cdb" class="sref">thref="d-+ 1;==se_dev_attrib.2a>..a24locks./a>;=block_size./a>2* .a href2"+code=secvors" class="s2ef">s2cvors./a>;=sbc_check_vali2_secv24vL22">6 22./a>.spau class="ccccccccc"lCurrassly fora namn" clas="+ase we only acceptrget_core_sbc.c#L112" id vL112" class="line" namn v2carget_co2.a href="+code=cmd" clas2="sre24et_core_sbc.c#L113" id vL113" class="lsecvawitha namUNMAP=1      ct.etet_core_sbc.c#L112" id vL112" class="line" namn v2ice./a> *2a href="+code=dev" class2"sref24lass="comment">         * Use the expremai;=cmd./aflag/target_core_sbcflag/>numarge">dev./a08)) (struct6.a href="+code=se_cmd" class="sref">s26" id vL126" class="line" namn vL126">6124=t_task_cdb" class="sref">t_task_cdbpr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qa href="+c w/omUNMAP     not href="mais2a> .a hre2="+code=secvors" class="2ref">24" class="line" namn veeeeeeeesclass="comme"linng"h./a>&q cup claee foraB="+c Discard E" claion\n href="maithref="d-+ 1;==blocks./a> = 20xfff25locks./a>;=block_size./a>2href="+co2de=blocks" class="sref">2block25vors./a>;=blocks_long./a>(.a href="+code=cmd" class="sref">cmd./a>, .a href=2avors" cl2ref">buf./a> =6.a href="2+code253lock+code=block_size" class="sref">block_size./a>2harget_co2./a>(.a href="+code=cmd"2 clas25RT_SYMBOL./a>(.a href="+code=spc_get_write_samn_s2namn vL542">6 54./a>        .a hre2f="+c25vors./a>);=t_task_cdbxdreadget_cocallback;.a href="+codexdreadget_cocallbackt_colhref="drivers/target/targrget/target_core_sbc.c#L142" id vL142" class="line" namn vL142">6142./a>static int6.a href="+code=sbc_check_valid_s2namn vL552">6 55./a>        .a hre2f="+c25y./a>(struct6.a href="+code=se_cmd" class="sref">s2 namn vL526">6 56./a>        .a hr2ef="+2ode=buf" class.a href="+code=cmd" class="srettrib./a>..a href="+code=,e=cmd" class="sreaddr;.a href="+codeaddref">=6 57./a>2     25" class="linehref="drivers/target/tacatterlist>         vL136acatterlist142" id vL142" class=re_sbc.c#L95" id n vL95=;=;=->.a href="+code=2se_de26e=buf" class="href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v2code=bloc2k_size" class="sref">blo2ck_si26vL22">6 22./a>.spau class="ccccccccc"lFromclass="c.pdfent">/*. 5.48 XDa hreet Th(10) u clandrget_core_sbc.c#L112" id vL112" class="line" namn v2carget_co2/a>        .a href="+cod2e=tra26et_core_sbc.c#L113" id vL113" class="rget_core_sbc.c#L112" id vL112" class="line" namn v2camn vL542./a>(.a href="+code=cmd"2 clas26lass="comment">         * Use the expl1) reada namspecifiede.spacal f="+c(s)="mais2cny laver2vvers  <../spaue=         * the t2) vL95"fere.spacal f="+co fromc nam id -out "+cfer="mais2cnamn vL52=GOOD" class="sref">GOOD2./a>)26">6 16./a>.spau class="comme   * the t3) XORc nam.spacal f="+co .L95"ferree fromc nam id -out "+cferawith"mais2c> .a hre2ss="line" namn vL66">6 626./a>267">6 17./a>.spau class="comm   * the thec nam.spacal f="+co read,ehroinnglicit rsullave.XORc id ommea "+cfer="mais2c .a href2L67" id vL67" class="lin2e" na2618">6 18./a>.spau class="com   * the  4)a hricitDISdb" .a hre     u clctthe  .sp,ricineget_ec nam.spacal"mais216" class2="sref">sbc_emulave_read2capac27t/target_core_sbc.c#L89" id vL89" classssf="+co .L95"ferree fromc nam id -out "+cfer; andrget_core_sbc.c#L112" id vL112" class="line" namn v2">se_cmd.2/a> *.a href="+code=cmd"2 clas27ioa>.spau class="comment">         * S5) vL95"fereicit rsullave.XORc id ohe  nam id -mme"+cfer.etet_core_sbc.c#L112" id vL112" class="line" namn v2vice./a> 2*.a href="+code=dev" cla2ss="s27u class="comment">         * READ CAPACITY (16) byte 14 if emulave_tpu or emulave_tpws is2="drivers2/target/target_core_sbc.2c#L7227>cmd./a>)=..a href=kmallocde=blo vL142" class="line" namn vL142">6142./a href="drivers/target/target_core_sbc.c#L148" id vL148" clas/target_core_sbc.cFP_KERNEt/target_core_sbcFP_KERNEt42./a=tra2nspor274 vL110">6110 hre!href="drivers/tttrib./a>..a href="+code=) (struct6.a href="+code=se_cmd" class="sref">s2et_blocks2./a>(.a href="+code=dev"2 clas275"sref">se_deeeeeeeeeref">t_task_cdbpr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qUnableohe alloca_ecxorocallbacke"+c\n href="maibuf./a> =6.a href="2+code27="sref">se_deeeeeeeeea>(.a et/target_core_sbc.c#L121" id vL121" class="l2"namn vL52dd vL16" class="line" na2n/a>)27de=buf" class+code=block_size" class="sref">block_size./a>2namn vL772">6 77./a>        .a hre2f="+c278=buf" class="href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v2+ .a href2">6 78./a>        .a hre2f="+c2718">6 18./a>.spau class="com   * the  Copya namscatterlist.a hre  +cferaloca_ed at >61a hrete" namn vLet_core_sbc.c#L112" id vL112" class="line" namn v2namn vL792">6 79./a>        .a hre2f="+c28t/target_core_sbc.c#L89" id vL89" clasa hoc nam.scally alloca_ed *"+codet_core_sbc.c#L112" id vL112" class="line" namn v2n>se_cmd.2">6 80./a>        .a hre2f="+c28ioa>.spau class="comment">         * ACITY (16) byte 14 if emulave_tpu or emulave_tpws is2namn vL812">6 81./a>        .a hre2f="+c282cmd./a>)=6142./a href="drivers/targte" namn >         vL136ve" namn vLdr,struct6.a href="+code=se_cmd" class="sref">s2namn vL822">6 82./a>        .a hre2f="+c283locks_long./" class=ef="+codode=cmd" class="sref">cmd./a>->.a href="+code=se_dev" class="" namnnt"/target_core_sbc="" namnnt"/vLdr,struct6.a href="+code=se_cmd" class="sref">s2ncode=tra23">6 83./a>        .a hr2ef="+28"sref">cmd./a/a>)=s2nt_blocks2ine" namn vL84">6 84./a>2     285"sref">se_deeeeeeeeeeeee+codode=cmd" class="sref">cmd./a>->.a href="+code=se_dev" classet/target_core_sbc.c#L148" id vL148" clas)et/target_core_sbc.c#L121" id vL121" class="l2 ny laver2ref="+code=se_dev_attrib2" cla28return 0;=->.a 2href="+code=se_dev_attri2b" cl287">6 17./a>.spau class="comm   * the tNow performc namXORcagainst. namBIDI readamemoryaloca_ed atrget_core_sbc.c#L112" id vL112" class="line" namn v2> .a href2./a>->.a href="+code=2se_de2818">6 18./a>.spau class="com   * the t>61a hretemem_bidi_list14et_core_sbc.c#L112" id vL112" class="line" namn v2e./a> &am2p; 0xff;=6 29vors./a>;=6 91.2/a>.s292cmd./a>)=cmd./a>, .a href=2 enabled.2./spaue=         vL136for_eachmn de=blo vL142" class="line" namn vL142">6142./a href="drivers/targtebidi_" namn >         vL136vebidi_" namn clas/target_core_sbc.re_sbc.c#L95" id n vL95/target_core_sbc."line" namn vL142">6142./a href="drivers/targtebidi_" namnnt"/target_core_sbc="bidi_" namnnt"/vL95/target_core_sbc."ount_sbc.c#L95" id countvL95) (struct6.a href="+code=se_cmd" class="sref">s2sref">se_2sub_dev./a>->.a href=2"+cod29"sref">cmd./a/a>)==buf" class="sref"kmap_atomicib./a>..a href=kmap_atomicde=blo vL142" class=n upagre_sbc.c#L143" id upagrde=blo vL142" class=n _sbc.c#L95" id n vL95))et/target_core_sbc.c#L121" id vL121" class="l2ivers/tar2get/target_core_sbc.c#L924" id295"sref">se_deeeeeeeee hre!href="drivers/taddr;.a href="+codeaddref">a>static int6.a href="+code=sbc_check_valid_s2    .a hr2ef="+code=buf" class="sr2ef">b29="sref">se_deeeeeeeeeeeeeeeeegohochref="drivers/tout_sbc.c#L95" id outvL95=6 96.2/a>        .a href="+cod2e=tra29./a>        .a href="+code=u32" class="sref">u32.2p_data_sg2./a>(.a href="+code=cmd"2 clas29" class="line" namn vforalo vL142" class=it/target_core_sbvL95=bureref="drivers/tarit/target_core_sbvL95sef="target_core_sbc.re_sbc.c#L95" id n vL95a href="drivers/targrget_core_sbc.c#L148"L148" claseref="drivers/tarit/target_core_sbvL95++a>static int6.a href="+code=sbc_check_valid_s2  .a href2omplete_cmd" class="sref2">tar29k_cdb" class="sref">t       * lo vL142" class=addr;.a href="+codeaddref">=ar href="drivers/te_sbc.c#L95" id n vL95a href="drivers/targoff ct_sbc.c#L95" id off ctvL95=ar href="drivers/it/target_core_sbvL95) ^=* lo vL142" class=ttrib./a>..a href="+code==ar href="drivers/off ct_sbc.c#L95" id off ctvL95=ar href="drivers/it/target_core_sbvL95)=GOOD./3>);=<30return 0;=6 99./a>3     30cks./a>(.a href="+code=cmd" class="soff ct_sbc.c#L95" id off ctvL95=abuf" class="sref"re_sbc.c#L95" id n vL95a href="drivers/targrget_core_sbc.c#L148"L148" clasen 0;=6 91.3 vL1030blocks_long./" class="sref">buf./a>[kunmap_atomicib./a>..a href=kunmap_atomicde=blo vL142" class=addr;.a href="+codeaddref">aen 0;=cmd./a>)=block_size./a>3_cmd./a> 3.a href="+code=cmd" clas3="sre30RT_SYMBOL./a>(.a href="+code=spc_get_write_samn_s3f5md./a> 3.et/target_core_sbc.c#L934./a>3      href="drivers/tout_sbc.c#L95" id outvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3f6md./a> 3.f="+code=buf" class="sr3">num30line" namn vL145">6145./a>  kfrere_sbc.c#L143" ikfrerde=blo vL142" class=ttrib./a>..a href="+code=)en 0;= 3.a>        .a href="+cod3="+co30get_unaligned_be16./a>3&30      return 0;=->.a href="+co3e=t_t309d vLa href="drivers/target/parbc.cde=num_blocks" clget/parbc.cdet_colhref="drivers/target/targrget/target_core_sbc.c#L142" id vL142" class="line" namn vL142">6142./,ehref="drivers/target/tapc_op/target_core_sbc.pc_op/142" id vL142" class=op/target_core_sbcop/142"a>static int6.a href="+code=sbc_check_valid_s3ass="sref3>get_unaligned_be32./a>(3amp;.31y_16./a>(struct6.a href="+code=se_cmd" class="sref3ore_sbc.c3L110" id vL110" class="l3ne" n3mn vL110">6110href="drivers/target/targsubsystem_ef">secvors./a> =6.a hresystem_ef"142" id vL142" class=ru_ef">secvors./a> =6.u_ref="drivers/target/target_core_sbc.c#L144" id vL144" class="line" namn vL144">6144./a>        structf="+code=secvors" class="sref">secvors./a> =6.a href="+codeen 0;=get_unaligned_be32./a>(3amp;.312 vL110">6110href="drivers/target/target_core_sbc.c#L143" id vL143" class="line" namn vL143">6143./a>{=6144./a>        struct6.a href="+code=se_device" class="sref">se_de3"+code=t_3ask_cdb" class="sref">t_3ask_c31>cmd./a>)=numivers/target/target_core_sbc.c#L144" id vL144" class="line" namhref="dode=num_blocks" clhref="doderuct6.a href="+code=se_device" class="sref">se_de3"cmd./a> 3/a>==6114./a3.spau315ine" namn vL145">6145./a>        unsigned long long .a href="+code=end_lba" class="sref">end_lba./a>;=buref="+code=cmd" class="sref">cmd./a>, .a href=3d vL115" 3lass="line" namn vL115">3115./31locks./a>;= 3ue=u32.3rs/target3target_core_sbc.c#L117" 3d vL131" class="linehwitchass="sref">cmd./a>de=num_blocks" clef">numk0]) (struct6.a href="+code=se_cmd" class="sref">s3arget_cor3_sbc.c#L118" id vL118" c3ass="31k_cdb" class=+ase s="sref">cmd./aet ToL108" class="linet ToLvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3href="+co3e=num_blocks" class="sre3">num32locks./a>;=6145./a>  target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_L108" class="linvL95" clas137" c#L147_Lde=bls="sref">cmd./a>de=num_blocks" clef">num)en 0;=(.a href="+code=cmd" class="s>->.a href="+code=t_task_cdb" class="sref">t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=6121./a>          3     32blocks_long./" class="sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=t_3ask_l323locks_long./" class="sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95= 3EXPORT_SYMBOL" class="sr3f">EX32"sref">cmd./a/a>)=spc_get_write_3amn_s325_cdb" class=+ase s="sref">cmd./aet To>get_unaligs="linet To>gvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3h vL115" 3" class="sref">sbc_emula3e_ver32="sref">se_deeeeeeeees="sref">cmd./atarget/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>get_unaligs="linvL95" clas137" c#L147_ href=ls="sref">cmd./a>de=num_blocks" clef">num)en 0;=t_task_cdb>->.a href="+code=t_task_cdb" class="sref">t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=3arget32" class="line" namn v"sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=GOOD./a>)3=t"sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=6128./a>3     33locks./a>;=cmd./aet To>line" namn vL136et To>lvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3emulave_n3op" class="sref">sbc_emu3ave_n33blocks_long./" class="sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>line" namn vL136vL95" clas137" c#L147_>lref=ls="sref">cmd./a>de=num_blocks" clef">num)en 0;=t_task_cdb>->.a href="+code=t_task_cdb" class="sref">t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=3arget33"sref">cmd./a/a>)=GOOD./a>)3=se_deeeeeeeeeref">t_task_cdbt_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=6134./a>3     33="sref">se_deeeeeeeeebreak=cmd./aet To>L108" class="linet To1LvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3 arget_co3 *.a href="+code=cmd" cl3ss="s33" class="line" namn v"sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>L108" class="linvL95" clas137" c#L147_1Lde=bls="sref">cmd./a>de=num_blocks" clef">num)en 0;=s33k_cdb" class="sref">tref">t_task_cdb>->.a href="+code=t_task_cdb" class="sref">t_task>se_dev./a>) -=         vL136vL95" claslba_6et_cols="sref">cmd./a>de=num_blocks" clef">num)en 0;=se_dev_attrib.3a>..a34locks./a>;=6145./a>  t_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=s34cks./a>(.a href="+code=cmd" class="s>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=sbc_check_vali3_secv343t_task_cdb" +ase s="sref">cmd./aa hrefL108" class="lina hrefLvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3carget_co3.a href="+code=cmd" clas3="sre34"sref">cmd./a/a>)=cmd./a>de=num_blocks" clef">num)en 0;=se_deeeeeeeeeref">t_task_cdbt_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=se_deeeeeeeees="sref">cmd./at_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=6134=t_task_cdb" class="sref">t_task_cdb>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=34" class="line" namn vbreak=cmd./aa href>get_unaligs="lina href>gvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3locks" cl3ass="sref">blocks./a> = 30xfff35locks./a>;=cmd./aa hrefVERIFYet_unaligs="lina hrefVERIFYvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3l .a href3de=blocks" class="sref">3block35cks./a>(.a href="+code=cmd" class="starget/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>get_unaligs="linvL95" clas137" c#L147_ href=ls="sref">cmd./a>de=num_blocks" clef">num)en 0;=buf./a>[t_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=buf./a> =6.a href="3+code353locks_long./" class= hres="sref">cmd./a>de=num_blocks" clef">numkc]f">dev./a8a>static int6.a href="+code=sbc_check_valid_s3harget_co3./a>(.a href="+code=cmd"3 clas35"sref">cmd./a/a>)=cmd./at_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_FUAtarget_core_sbcSCF_FUAvL95=6 54./a>        .a hre3f="+c355"sref">se_deeeeeeeeeref">t_task_cdbt_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=6 55./a>        .a hre3f="+c35="sref">se_deeeeeeeees="sref">cmd./at_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=6 56./a>        .a hr3ef="+35=t_task_cdb" class="sbreak=6 57./a>3     35" class="line+ase s="sref">cmd./aa href>line" namn vL136a href>lvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3lrget_cor3ref="+code=se_dev_attrib3" cla35k_cdb" class="sref">tref">t_task_cdbtarget/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>line" namn vL136vL95" clas137" c#L147_>lref=ls="sref">cmd./a>de=num_blocks" clef">num)en 0;=;=6145./a>  t_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=(.a href="+cod hres="sref">cmd./a>de=num_blocks" clef">numkc]f">dev./a8a>static int6.a href="+code=sbc_check_valid_s3- href="+3./a>->.a href="+code=3se_de36blocks_long./" class=eeeeeeeeref">t_task_cdbt_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_FUAtarget_core_sbcSCF_FUAvL95=blo3ck_si363locks_long./" class=ref">t_task_cdb>->.a href="+code=t_task_cdb" class="sref"n v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=cmd./a/a>)=se_deeeeeeeeebreak=cmd./aa href>L108" class="lina href1LvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3cnamn vL53=GOOD" class="sref">GOOD3./a>)36=t_task_cdb" class="sref">t_task_cdbtarget/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>L108" class="linvL95" clas137" c#L147_1Lde=bls="sref">cmd./a>de=num_blocks" clef">num)en 0;=6 636./a>36" class="line" namn v"sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=         vL136vL95" claslba_6et_cols="sref">cmd./a>de=num_blocks" clef">num)en 0;=t hres="sref">cmd./a>de=num_blocks" clef">numkc]f">dev./a8a>static int6.a href="+code=sbc_check_valid_s316" class3="sref">sbc_emulave_read3capac37locks./a>;=t_task_cdb>->.a href="+code=t_task_cdb" class="sref"n v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_FUAtarget_core_sbcSCF_FUAvL95=se_cmd.3/a> *.a href="+code=cmd"3 clas37cks./a>(.a href="+code=cmd" class="s>->.a href="+code=t_task_cdb" class="sref"n v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=buf./a>[t_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=tra3nspor374 vL110">6110+ase s="sref">cmd./aXDa hreet T_>get_unaligs="linXDa hreet T_>gvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s3et_blocks3./a>(.a href="+code=dev"3 clas375"sref">se_deeeeeeeeeclasss="sref">cmd./aref">cmd./a>->.a href="+code=se_dev" classet/tadirt">/*.">cmd./a>->.et/tadirt">/*."sref!vL147" class="linDMA_TO_DEVICE">cmd./a>->.DMA_TO_DEVICE>num) ||MBOL./a>(.a href="+code=spc_get_write_samn_s3eny laver3ref">buf./a> =6.a href="3+code37="sref">se_deeeeeeeeeeeee!ss="sref">cmd./a>->.a href="+code=t_task_cdb" class="sref"n v id_flag/target_core_sbcn v id_flag/locks">dev.147" class="linSCF_BIDItarget_core_sbcSCF_BIDI>num)a>static int6.a href="+code=sbc_check_valid_s31namn vL53dd vL16" class="line" na3n/a>)37=t_task_cdb" class="seeeeeeeegohochref="drivers/tout_invaliddode_fiel>.a href="+coout_invaliddode_fiel&vL95=6 77./a>        .a hre3f="+c37" class="line" namn v"sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>get_unaligs="linvL95" clas137" c#L147_ href=ls="sref">cmd./a>de=num_blocks" clef">num)en 0;=6 78./a>        .a hre3f="+c3718">6n 0;=6 79./a>        .a hre3f="+c38locks./a>;=6145./a>  t_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=6 80./a>        .a hre3f="+c38cks./a>(.a href="+code=cmd" class="s>->.a href="+code=t_task_cdb" class="sref"n v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95=6 81./a>        .a hre3f="+c382cmd.6 82./a>        .a hre3f="+c383locks_long./" class="href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v3ncode=tra33">6 83./a>        .a hr3ef="+38et_core_sbc.c#L113" id vL113" class=========* SetupmBIDI XORccallbackehocbe run after I/O u cple>/*..etet_core_sbc.c#L112" id vL112" class="line" namn v3nt_blocks3ine" namn vL84">6 84./a>3     38lass="comment">         * Use the ex========*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is3 ny laver3ref="+code=se_dev_attrib3" cla38="sref">se_deeeeeeeees="sref">cmd./at_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=t_task_cdb>->.a href="+code=t_task_cdb" class="sref">L95" clasu cple>cocallback;.a href="+code>L95" clasu cple>cocallbackers/tvL">devb" class="sref"xdreadget_cocallback;.a href="+codexdreadget_cocallbackt_co=cmd./a>de=num_blocks" clef">numkc]f">dev./a8a>static int6.a href="+code=sbc_check_valid_s3> .a href3./a>->.a href="+code=3se_de38k_cdb" class="sref">t       *ref">t_task_cdb>->.a href="+code=t_task_cdb" class="sref"n v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_FUAtarget_core_sbcSCF_FUAvL95=;=6 391_cdb" class=+ase s="sref">cmd./aVARIdb" _LENGTH_CMDtarget_core_sbcVARIdb" _LENGTH_CMDvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s391" class3="line" namn vL91">6 91.3/a>.s392cmd./a>)=s3 enabled.3./spaue=t_task_cdbu>L108" class="linu1locks.b" class="sref"n r43" _a">/*.">cmd./a>->.n r43" _a">/*.ers/tvL147" class="lin" clunaliref=_be>L108" class="lin" clunaliref=_be>Lde=bl">devb" class="sref">de=num_blocks" clef">numk8])en 0;=se_3sub_dev./a>->.a href=3"+cod39"sref">cmd./a/a>)=cmd./an r43" _a">/*.">cmd./a>->.n r43" _a">/*.ers/) (struct6.a href="+code=se_cmd" class="sref">s3ivers/tar3get/target_core_sbc.c#L934" id395"sref">se_deeeeeeeee+ase s="sref">cmd./aXDa hreet T_"line" namn vL136XDa hreet T_"lvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s39ny laver3ef="+code=buf" class="sr3ef">b39="sref">se_deeeeeeeeeeeeeeeee"sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_"line" namn vL136vL95" clas137" c#L147_"lde=bls="sref">cmd./a>de=num_blocks" clef">num)en 0;=6 96.3/a>        .a href="+cod3e=tra39./a>        .a href="+code=u32" class="sref">u32.3p_data_sg3./a>(.a href="+code=cmd"3 clas39" class="line" namn veeeeeeee"href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v3  .a href3omplete_cmd" class="sref3">tar3918">6 18./a>.spau class="com   * theeeeeeeeeeeeeeeee* Use a href32 and et T_"l opmd./s fora namn" clas=rget_core_sbc.c#L112" id vL112" class="line" namn v4f="+code=4OOD" class="sref">GOOD./4>);=<40t/target_core_sbc.c#L89" id        *eeeeeeeeeeeeeeee* XDa hre_et T_"l .spac.etet_core_sbc.c#L112" id vL112" class="line" namn v4" class="4ine" namn vL99">6 99./a>4     40ioa>.spau class="comment">         *eeeeeeeeeeeeeeee*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is4"2class="4i"line" namn vL91">6 91.4 vL1040blocks_long./" class=eeeeeeee"sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=buf./a>[t_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95= 4.et/target_core_sbc.c#L944./a>405"sref">se_deeeeeeeeeeeee+cod"href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v4f6md./a> 4.f="+code=buf" class="sr4">num40.spau class="comment">         * theeeeeeeeeeeeeeeee* SetupmBIDI XORccallbackehocbe run duinnglafter I/Orget_core_sbc.c#L112" id vL112" class="line" namn v4f7md./a> 4.a>        .a href="+cod4="+co40">6 16./a>.spau class="comme   * theeeeeeeeeeeeeeeee* u cple>/*..etet_core_sbc.c#L112" id vL112" class="line" namn v4lass="sre4">get_unaligned_be16./a>4&407">6 17./a>.spau class="comm   * theeeeeeeeeeeeeeeee*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is4"9ss="sre4"mplete_cmd" class="sref4e=t_t40k_cdb" class="sref">t       *ref">t_task_cdb>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgrwt/target_core_sexecutrgrwvL95=get_unaligned_be32./a>(4amp;.41locks./a>;=t_task_cdb>->.a href="+code=t_task_cdb" class="sref">L95" clasu cple>cocallback;.a href="+code>L95" clasu cple>cocallbackers/tvL">devb" class="sref"xdreadget_cocallback;.a href="+codexdreadget_cocallbackt_co=(.a href="+coddddddddd hres="sref">cmd./a>de=num_blocks" clef">numkc]f">dev./a8a>static int6.a href="+code=sbc_check_valid_s4ass="sref4>get_unaligned_be32./a>(4amp;.41blocks_long./" class=eeeeeeee" class=ref">t_task_cdb>->.a href="+code=t_task_cdb" class="sref"n v id_flag/target_core_sbcn v id_flag/locks|vL147" class="linSCF_FUAtarget_core_sbcSCF_FUAvL95=t_4ask_c413locks_long./" class=eeeeeeeebreak= 4/a>=cmd./a/a>)=cmd./aa hrefSAME_"line" namn vL136a hrefSAME_"lvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s4" class="4ine" namn vL114">6114./a4.spau415"sref">se_deeeeeeeeeeeee+cod hre!href="drivers/top/target_core_sbcop/142"44" class="line" namexecutrgget_cos114t/target_core_sexecutrgget_cos114>num)MBOL./a>(.a href="+code=spc_get_write_samn_s4"6md./a> 4lass="line" namn vL115">4115./41="sref">se_deeeeeeeeeeeeeeeeeeeeeeeeegohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95= 4ue=u32.4rs/target4target_core_sbc.c#L117" 4d vL141" class="line" namn veeeeeeee"sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_"line" namn vL136vL95" clas137" c#L147_"lde=bls="sref">cmd./a>de=num_blocks" clef">num)en 0;=t       * hre!href="drivers/ttarget/target_core_sbc.c#L147" id) (struct6.a href="+code=se_cmd" class="sref">s4href="+co4e=num_blocks" class="sre4">num42locks./a>;=buf./a>[pr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qWSNZ=1, a hrefSAME w/.c#L147=0 not href="mais4hre_sbc.c4get_blocks" class="sref"4get_b42cks./a>(.a href="+codnamn vL" namn veeeeeeee"class="comme"linng"h./a>&q sup claed\n href="mai6121./a>          4     42blocks_long./" class=================gohochref="drivers/tout_invaliddode_fiel>.a href="+coout_invaliddode_fiel&vL95=t_4ask_l423locks_long./" class=========ef="drivers/target/target_core_sbc.c#L66" id 4"cmd./a> 4EXPORT_SYMBOL" class="sr4f">EX42RT_SYMBOL./a>(.a href="+code=spc_get_write_samn_s4" class="4ss="sref">spc_get_write_4amn_s425"sref">se_deeeeeeeeeeeee+cod"ref="drivers/ttet/target_core_sbc.y1ref"> vL147" class="linget/137" et/target_core_sbc.et/137" et/de=bls="sref">cmd./a>line" namn vL142">6142./,e1)et/target_core_sbc.c#L121" id vL121" class="l4e6md./a> 4" class="sref">sbc_emula4e_ver42="sref">se_deeeeeeeeeeeee+cod"ref="drivers/tt_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=         vL136" clunaliref=_be/ade=bl">devb" class="sref">de=num_blocks" clef">numk12])en 0;=u32.4es/target4plete_cmd" class="sref">4arget42" class="line" namn vvvvvvvvv hres="sref">cmd./a.et/get_cos114_sup claedtarget_core_sbc.et/get_cos114_sup claedde=bls="sref">cmd./a43">6143./a>{=devb" class="sref">de=num_blocks" clef">numk10]) ef="t0)MBOL./a>(.a href="+code=spc_get_write_samn_s4"rget_cor4" class="sref">GOOD./a>)4=t================gohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95=6128./a>4     43locks./a>;=num=(.a href="+codnamn vL"break=sbc_emu4ave_n43blocks_long./" class=default:MBOL./a>(.a href="+code=spc_get_write_samn_s4_cmd./a> 4.a href="+code=cmd" clas4="sre433locks_long./" class=eeee+cod"ref="drivers/tpr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qVARIdb" _LENGTH_CMD n r43"  a">/*. href="mais4target_co4plete_cmd" class="sref">4arget43"sref">cmd./a/a>)=&q 0x%04x not sup claed\n href="mai/*.">cmd./a>->.n r43" _a">/*.ers/)=GOOD./a>)4=se_deeeeeeeeeeeeeeeeegohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95=6134./a>4     43="sref">se_deeeeeeeeeef="drivers/target/target_core_sbc.c#L66" id 4c7md./a> 4 vL135" class="line" nam4 vL1343=t_task_cdb" class="sbreak=s43k_cdb" class=+ase s="sref">cmd./aet ToCAPACITYet_unaligs="linet ToCAPACITYvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s4ttrib" cl4ss="sref">se_dev_attrib.4a>..a44locks./a>;=6145./a>  tet/target_core_sbc.y1ref"> vL147" class="linet ToCAP_LENet_unaligs="linet ToCAP_LENvL95=s44cks./a>(.a href="+code=cmd" class="s>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="lin.et/n" clas_readcapacitytarget_core_sbc.et/n" clas_readcapacityvL95=sbc_check_vali4_secv443t_task_cdb" +ase s="sref">cmd./aSERVICE_ACTION_INet_unaligs="linSERVICE_ACTION_INvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s4target_co4.a href="+code=cmd" clas4="sre44"sref">cmd./a/a>)=cmd./a>_core_sbc.c#L144" id vL144" class="line" namhref="dode=num_blocks" clhref="dodeructkc]f">dev./a1f) (struct6.a href="+code=se_cmd" class="sref">s4ice./a> *4a href="+code=dev" class4"sref445"sref">se_deeeeeeeee+ase s="sref">cmd./aSAI_et ToCAPACITY_>L108" class="linSAI_et ToCAPACITY_>LvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s4t6md./a> 4re_sbc.c#L145" id vL145"4class44="sref">se_deeeeeeeeeef="+code=cmd" class="s>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="lin.et/n" clas_readcapacity_>L108" class="lin.et/n" clas_readcapacity_>LvL95=6144=t_task_cdb" class="s" class=break=44" class="line" namn vdefault:MBOL./a>(.a href="+code=spc_get_write_samn_s4crget_cor4et_core_sbc.c#L48" id vL448" c44k_cdb" class="sref">t       *ref">t_task_cdbpr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qUnsup claed SA: 0x%02x\n href="mai(.a href="+code=spc_get_write_samn_s4locks" cl4ass="sref">blocks./a> = 40xfff45locks./a>;=buf./a>[>_core_sbc.c#L144" id vL144" class="line" namhref="dode=num_blocks" clhref="dodeructkc]f">dev./a1f)=4block45cks./a>(.a href="+codddddddddgohochref="drivers/tout_invaliddode_fiel>.a href="+coout_invaliddode_fiel&vL95=buf./a> =6.a href="4+code453locks_long./" class=145">6145./a>  tet/target_core_sbc.y1ref"> vLes="sref">cmd./a>de=num_blocks" clef">numkc0] ef="ef="t24) |Les="sref">cmd./a>de=num_blocks" clef">numkc1] ef="ef="t16) |f="drivers/target/target_core_sbc.c#L66" id 4aarget_co4./a>(.a href="+code=cmd"4 clas45"sref">cmd./a/a>)=cmd./a>de=num_blocks" clef">numkc2] ef="ef="t8) |Ls="sref">cmd./a>de=num_blocks" clef">numkc3]=6 54./a>        .a hre4f="+c455"sref">se_deeeeeeeeebreak=6 55./a>        .a hre4f="+c456 class="line+ase s="sref">cmd./aSYNCHRONIZEoCACHE">cmd./a>->.SYNCHRONIZEoCACHEvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s4 namn vL546">6 56./a>        .a hr4ef="+45=t_task_cdb" +ase s="sref">cmd./aSYNCHRONIZEoCACHE_>L108" class="linSYNCHRONIZEoCACHE_>LvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s4 arget_co4ine" namn vL57">6 57./a>4     45" class="line" namn v hre!href="drivers/top/target_core_sbcop/142"44" class="line" namexecutrgsync_cach4t/target_core_sexecutrgsync_cach4>num)MBOL./a>(.a href="+code=spc_get_write_samn_s4lrget_cor4ref="+code=se_dev_attrib4" cla45k_cdb" class="sref">tddddddddgohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95=(.a href="+cod"href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v4- href="+4./a>->.a href="+code=4se_de46blockre_sbc.c#L113" id vL113" class=========* Extract LBA and rangeehocbe flushed foran" clas= SYNCHRONIZEoCACHEvLet_core_sbc.c#L112" id vL112" class="line" namn v4-vors" cl4k_size" class="sref">blo4ck_si463lock"comment">         * Use the ex========*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is4carget_co4/a>        .a href="+cod4e=tra46"sref">cmd./a/a>)=cmd./a>de=num_blocks" clef">numk0] =vL147" class="linSYNCHRONIZEoCACHE">cmd./a>->.SYNCHRONIZEoCACHEvL95) (struct6.a href="+code=se_cmd" class="sref">s4camn vL544./a>(.a href="+code=cmd"4 clas465"sref">se_deeeeeeeeeef="+cod"sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>get_unaligs="linvL95" clas137" c#L147_ href=ls="sref">cmd./a>de=num_blocks" clef">num)en 0;=se_deeeeeeeeeeeee+cod"ref="drivers/tt_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=cmd./a>de=num_blocks" clef">num)en 0;=GOOD4./a>)46=t_task_cdb" class="s} else (struct6.a href="+code=se_cmd" class="sref">s4carget_co4ss="line" namn vL66">6 646./a>46" class="line" namn vef="+cod"sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>L108" class="linvL95" clas137" c#L147_1Lde=bls="sref">cmd./a>de=num_blocks" clef">num)en 0;=teeee+cod"ref="drivers/tt_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=         vL136vL95" claslba_6et_cols="sref">cmd./a>de=num_blocks" clef">num)en 0;=sbc_emulave_read4capac47locks./a>;=se_cmd.4/a> *.a href="+code=cmd"4 clas47cks./f="drivers/target/target_core_sbc.c#L66" id 4" href="+4*.a href="+code=dev" cla4ss="s47blocks_long./" class="sref">buf./a>[tet/target_core_sbc.y1ref"> vL147" class="linget/137" et/target_core_sbc.et/137" et/de=bls="sref">cmd./a>line" namn vL142">6142./,ehref="drivers/ttarget/target_core_sbc.c#L147" id)en 0;=tra4nspor47"sref">cmd./a/a>)=(.a href="+code=dev"4 clas47lass="comment">         * Use the ex========* Checkehocensureehhat LBA + Rangeedoes not exces= past end ofrget_core_sbc.c#L112" id vL112" class="line" namn v4eny laver4ref">buf./a> =6.a href="4+code47.spau class="comment">         * theeeeeeeee* de43"  foraIBLOCK and FILEIO 44" cdogsync_cach4() backend callsrget_core_sbc.c#L112" id vL112" class="line" namn v4enamn vL54dd vL16" class="line" na4n/a>)47">6 16./a>.spau class="comme   * theeeeeeeee*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is4=> .a hre4">6 77./a>        .a hre4f="+c47" class="line" namn v hres="sref">cmd./a>_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=cmd./atarget/target_core_sbc.c#L147" id) (struct6.a href="+code=se_cmd" class="sref">s4+ .a href4">6 78./a>        .a hre4f="+c47k_cdb" class="sref">t       * hre147" class="linget/check_validdtarget/target_core_sbc.et/check_validdtarget/de=bls="sref">cmd./a>line" namn vL142">6142./) ef="t0)MBOL./a>(.a href="+code=spc_get_write_samn_s4namn vL794">6 79./a>        .a hre4f="+c48locks./a>;=6 80./a>        .a hre4f="+c48cks./a>(.a href="+codef="drivers/target/target_core_sbc.c#L66" id 4namn vL814">6 81./a>        .a hre4f="+c48blocks_long./" class="sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgsync_cach4t/target_core_sexecutrgsync_cach4>num=6 82./a>        .a hre4f="+c483locks_long./" class=break=6 83./a>        .a hr4ef="+484 vL110">6110+ase s="sref">cmd./aUNMAPt/target_core_sUNMAPvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s4nt_blocks4ine" namn vL84">6 84./a>4     485"sref">se_deeeeeeeeeclas!href="drivers/top/target_core_sbcop/142"44" class="line" namexecutrgunmapt/target_core_sexecutrgunmap>num)MBOL./a>(.a href="+code=spc_get_write_samn_s4 ny laver4ref="+code=se_dev_attrib4" cla48="sref">se_deeeeeeeeeLLLLLLLLgohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95=        .a href="+code=u32" class="sref">u32.4 > .a hre4href="+code=se_dev_attri4b" cl48" class="line" namn v"sref">buf./a>[tet/target_core_sbc.y1ref"> vL147" class="ling clunaliref=_be>L108" class="lin" clunaliref=_be>Lde=bl">devb" class="sref">de=num_blocks" clef">numk7])en 0;=t"sref">buf./a>[t_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgunmapt/target_core_sexecutrgunmap>numen 0;=;=6 491_cdb" class=+ase s="sref">cmd./aa hrefSAME_>L108" class="lina hrefSAME_>LvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s491" class4="line" namn vL91">6 91.4/a>.s49blocks_long./" class= hre!href="drivers/top/target_core_sbcop/142"44" class="line" namexecutrgget_cos114t/target_core_sexecutrgget_cos114>num)MBOL./a>(.a href="+code=spc_get_write_samn_s4 enabled.4./spaue=se_4sub_dev./a>->.a href=4"+cod49RT_SYMBOL./a>(.a href="+code=spc_get_write_samn_s4ivers/tar4get/target_core_sbc.c#L944" id495"sref">se_deeeeeeeee"sref">buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>L108" class="linvL95" clas137" c#L147_1Lde=bls="sref">cmd./a>de=num_blocks" clef">num)en 0;=b49="sref">se_deeeeeeeee hre!href="drivers/ttarget/target_core_sbc.c#L147" id) (struct6.a href="+code=se_cmd" class="sref">s496">6 96.4/a>        .a href="+cod4e=tra49=t_task_cdb" class="s" class=ref">t_task_cdbpr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qWSNZ=1, a hrefSAME w/.c#L147=0 not sup claed\n href="maitar49k_cdb" class="sref">tef="drivers/target/target_core_sbc.c#L66" id 5f="+code=5OOD" class="sref">GOOD./5>);=<50locks6 99./a>5     50cks./a>(.a href="+code=cmd" class="stet/target_core_sbc.y1ref"> vL147" class="linget/137" et/target_core_sbc.et/137" et/de=bls="sref">cmd./a>line" namn vL142">6142./,e1)et/target_core_sbc.c#L121" id vL121" class="l5"2class="5i"line" namn vL91">6 91.5 vL1050blocks_long./" class="ref="drivers/tt_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=         vL136" clunaliref=_be/ade=bl">devb" class="sref">de=num_blocks" clef">numk2])en 0;=cmd./a/a>)=cmd./a.et/get_cos114_sup claedtarget_core_sbc.et/get_cos114_sup claedde=bls="sref">cmd./a43">6143./a>{=devb" class="sref">de=num_blocks" clef">numk1]) ef="t0)MBOL./a>(.a href="+code=spc_get_write_samn_s5f5md./a> 5.et/target_core_sbc.c#L954./a>505"sref">se_deeeeeeeeeeeee+codgohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95=num50="sref">se_deeeeeeeees="sref">cmd./at_core_sbc.c#L144" id vL144" class="line" namexecutrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgget_cos114t/target_core_sexecutrgget_cos114>num=get_unaligned_be16./a>5&50" class="line+ase s="sref">cmd./aa hrefSAME108" class="lina hrefSAMEvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s5"9ss="sre5"mplete_cmd" class="sref5e=t_t50k_cdb" class="sref">t hre!href="drivers/top/target_core_sbcop/142"44" class="line" namexecutrgget_cos114t/target_core_sexecutrgget_cos114>num)MBOL./a>(.a href="+code=spc_get_write_samn_s5ass="sref5>get_unaligned_be32./a>(5amp;.51locks./a>;=buf./a>[target/target_core_sbc.c#L147" id vL147" class="linvL95" clas137" c#L147_>get_unaligs="linvL95" clas137" c#L147_ href=ls="sref">cmd./a>de=num_blocks" clef">num)en 0;=t_5ask_c513locks_long./" class= hre!href="drivers/ttarget/target_core_sbc.c#L147" id) (struct6.a href="+code=se_cmd" class="sref">s5"cmd./a> 5/a>=cmd./a/a>)=buf./a>[pr_err;.a href="+codepr_errde=bloclass="comme"linng"h./a>&qWSNZ=1, a hrefSAME w/.c#L147=0 not sup claed\n href="mai6114./a5.spau515"sref">se_deeeeeeeeeeeee+codgohochref="drivers/tout_invaliddode_fiel>.a href="+coout_invaliddode_fiel&vL95= 5lass="line" namn vL115">5115./51="sref">se_deeeeeeeeeef="drivers/target/target_core_sbc.c#L66" id 5"7md./a> 5ue=u32.5rs/target5target_core_sbc.c#L117" 5d vL151" class="line" namn ve=cmd" class="stet/target_core_sbc.y1ref"> vL147" class="linget/137" et/target_core_sbc.et/137" et/de=bls="sref">cmd./a>line" namn vL142">6142./,e1)et/target_core_sbc.c#L121" id vL121" class="l5arget_cor5_sbc.c#L118" id vL118" c5ass="51k_cdb" class="sref">t"ref="drivers/tt_core_sbc.c#L144" id vL144" class="line" nam>t_task>se_dev./a>) -=devb" class="sref">de=num_blocks" clef">numk2])en 0;=num52locks(.a href="+cod"href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v5ess="sref5L121">6121./a>          5     52blockre_sbc.c#L113" id vL113" class=========* Follow  nar26 with a hrefSAME (10) and check fora namnxistencerget_core_sbc.c#L112" id vL112" class="line" namn v5e+code=t_5ask_lba" class="sref">t_5ask_l523lock"comment">         * Use the ex========* of byte 1 bit 3 UNMAP instead of original ren r4ed fiel&vLet_core_sbc.c#L112" id vL112" class="line" namn v5ecmd./a> 5EXPORT_SYMBOL" class="sr5f">EX52et_core_sbc.c#L113" id vL113" class=========*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is5" class="5ss="sref">spc_get_write_5amn_s525"sref">se_deeeeeeeee hres="sref">cmd./a.et/get_cos114_sup claedtarget_core_sbc.et/get_cos114_sup claedde=bls="sref">cmd./a43">6143./a>{=devb" class="sref">de=num_blocks" clef">numk1]) ef="t0)MBOL./a>(.a href="+code=spc_get_write_samn_s5e6md./a> 5" class="sref">sbc_emula5e_ver52="sref">se_deeeeeeeeeeeee+codgohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95=t_task_cdb>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="linop/target_core_sbcop/142"44" class="line" namexecutrgget_cos114t/target_core_sexecutrgget_cos114>num=5arget52" class="line" namn vbreak=GOOD./a>)5=cmd./aVERIFYet_unaligs="linVERIFYvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s5 class="l5ne" namn vL128">6128./a>5     53locks./a>;= vL0=(.a href="+codref">t_task_cdb>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="lin.et/n" clas_ersifytarget_core_sbc.et/n" clas_ersify>num=sbc_emu5ave_n53blocks_long./" class=break=cmd./aREZERO_UNITtarget_core_sbcREZERO_UNITvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s5 cmd./a> 5plete_cmd" class="sref">5arget534 vL110">6110+ase s="sref">cmd./aSEEK_L108" class="linSEEK_LvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s5  class="5" class="sref">GOOD./a>)5=se_de+ase s="sref">cmd./aSEEK_>get_unaligs="linSEEK_>gvL95:MBOL./a>(.a href="+code=spc_get_write_samn_s5 6md./a> 5ne" namn vL134">6134./a>5     53="sref">se_deeeeeeeee"href="drivers/target/target_core_sbc.c#L112" id vL112" class="line" namn v5c7md./a> 5 vL135" class="line" nam5 vL1353">6 16./a>.spau class="comme   * theeeeeeeee* There are still.spi"cos outa nare which useehhen  old SCSI-2rget_core_sbc.c#L112" id vL112" class="line" namn v5cs/target5 *.a href="+code=cmd" cl5ss="s537">6 17./a>.spau class="comm   * theeeeeeeee* u cmands. This mainly happens when runnnnglVMs with legacyrget_core_sbc.c#L112" id vL112" class="line" namn v5crget_cor5"+code=secvors" class="s5ef">s5318">6 18./a>.spau class="com   * theeeeeeeee* guest systems, u nnecas= via SCSI u cmand pass-through torget_core_sbc.c#L112" id vL112" class="line" namn v5ttrib" cl5ss="sref">se_dev_attrib.5a>..a54t/target_core_sbc.c#L89" id        *eeeeeeee* iSCSI class=s. Makeehhem happy and return status GOOD.etet_core_sbc.c#L112" id vL112" class="line" namn v5* .a href5"+code=secvors" class="s5ef">s54ioa>.spau class="comment">         *eeeeeeee*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is5*mulave_n5 vL140" class="line" nam5 vL1454blocks_long./" class=e=cmd" class="stet/target_core_sbc.y1ref"> vL0=sbc_check_vali5_secv543locks_long./" class=145">6145./a>  >->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/tvL147" class="lin.et/n" clas_noopt/target_core_s.et/n" clas_noop>num=cmd./a/a>)=se_dedefault:MBOL./a>(.a href="+code=spc_get_write_samn_s5t6md./a> 5re_sbc.c#L145" id vL145"5class54="sref">se_deeeeeeeee147" class="linrett/target_core_sreters/tvL147" class="lin.pc_parn v de=num_blocks" cl.pc_parn v dede=bls="sref">cmd./a>line" namn vL142">6142./,e">devb" class="sref"tet/target_core_sbc.y1ref">)en 0;=6154=t_task_cdb" class="s hres="sref">cmd./arett/target_core_sreters/)MBOL./a>(.a href="+code=spc_get_write_samn_s5carget_co5="+code=secvors" class="5ref">54" class="line" namn vvvvvvvvvreturn s="sref">cmd./arett/target_core_sreters/en 0;=blocks./a> = 50xfff55locks5block55cks./a>(.a hr"href="drivers/target/tavrejeca any u cmand hhat weedon't have a handler fora*ACITY (16) byte 14 if emulave_tpu or emulave_tpws is5a href="+5code=blocks_long" class=5"sref55blocks_long./ hre!es="sref">cmd./a>_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks">dev.s="sref">cmd./aSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95)s">dev">dev.!href="drivers/t>->.a href="+code=t_task_cdb" class="sref"executrgrget/target_core_sexecutrgrgeers/)MBOL./a>(.a href="+code=spc_get_write_samn_s5avors" cl5ref">buf./a> =6.a href="5+code553locks_long./" class=gohochref="drivers/tout_unsup claeddode=num_blocks" clout_unsup claeddodevL95=(.a href="+code=spc_get_write_samn_s5ace./a> *5">6 54./a>        .a hre5f="+c555"sref">se_de hres="sref">cmd./a>_core_sbc.c#L144" id vL144" class="line" namn v id_flag/target_core_sbcn v id_flag/locks">dev.s="sref">cmd./aSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATAsrDBvL95)s(struct6.a href="+code=se_cmd" class="sref">s5namn vL555">6 55./a>        .a hre5f="+c55="sref">se_deeeeeeeeeunsiref= longllonglb" class="sref"endk>se_dev./a>) -=sevL95=6 56./a>        .a hr5ef="+55./a>        .a href="+code=u32" class="sref">u32.5 arget_co5ine" namn vL57">6 57./a>5     55" class="line" namn v hre"sref">buf./a>[target/target_core_sbc.c#L147" id 4" cL147" class="lin.u_43">6143./a>{=) -.lass="line" namhabI *5">6 54./a>  vors" cl4/target/target_core_sbc.4c#L72473lockn 0;=line" namn vL142">6142 0;=line" n55./a>        .a hre5f="+c55="sref">se_deeeeeeeeeunsitarget/tahref="drivers/tout_unsup5claed5ode=num_blocks" clout_unsup cl"h./a>&qWSNZ=1, aintk_ro5.limi6143./a>{={=4arget43"sref">cmd./a/a>)=line" n:o4plete_cmd" class="sref">4arget43"sref">cmd./a/a>)=/*.ers/)=blocks./a> = 40xfff45locks./a>;=) -.lass="line" namhabI *5">6 54./a>  vors" cl4/target/target_core_sbc.4c#L72473lockn 0;=line" namn vL142">6142 0;=line" n55./a>        .a hr5ef="+55./a>        .a href="+co* Use the5ex========*ACITY (16) by5e 14 56de=num_blocks" clout_unsup claeddodevL95= 5lass="line" namn vL115">5115./51="sref">se_deeeeeeeeeef=es="sref"5cmd./a>de=num_blocks" cl5f">nu5k0] =vL147" class="lin>blocks./a> = 50xfff55locksbuf./a>[target/target_5ore_s5c.c#L147" id vL147" clss="lin.u_43">6143./a>{=) -.lass="line" namhabI *5">6 54./a>  vors" cl4/target/target_core_sbc.4c#L72473locknhw hre>line" namn vL142">6142hw hre>line" n55./a>        .a hre5f="+c55="sref">se_deeeeeeeeeunse+cod"ref5"drivers/tt_core_sbc.c#L544" i5 vL144" class="line" nam>t_task>se_dev./a>) - aintk_ro5.limi6143./a>{={=4arget43"sref">cmd./a/a>)=s4carget_co4ss="line" nam>t_task/target_core_sbc.r r43" _a"big line" n _s4loumn v4ens namn vL5hw hre>line" n:o4plete_cmd" class="sref">4arget43"sref">cmd./a/a>)=bu">buf./a>[target/target_5ore_s5c.c#L147" id vL147" class="linam>t_task/target_core_sbc.r r43" _a"_s4lou" _a">/*.ers/)=blocks./a> = 40xfff45locks./a>;=t_tasam>t_task>se_dev./a>) -um_blocks" cl. v43"_attrie>) -.lass="line" namhabI *5">6 54./a>  vors" cl4/target/target_core_sbc.4c#L72473locknhw hre>line" namn vL142">6142hw hre>line" n55./a" namn vL115">5115./51="sref">se_deeeeeeeeeef="drivers/5arget/target_core_sbc.c#566" i5 4">se_cmd.4/a> *.a hrrrrrrrrraeddodevL95= 5lass="line" namn vL115">5115./51="sref">se_deeeeeeeeeef=arget_cor5_sbc.c#L66" id 4" href="54*.a 574namn vL814">6 81./a>        .a hre4f="+c48blocks_long./" class="s5ef">buf./5>[tet/target_core_sbc.y15ef"> 5L147"        .a hre4f="+c48blocks_long./" class="s5e Use the5target_core_sbc41arget_c54nspo57b" class="sref"executrgrget/target_core_sbc.c#L15a7md./a> 56">6 56./a"sref">cmd./a>linef">numk1]) ef="t0)MBOL./a" clasu cple>cocallbackers/tvne" namn vL136" ckers/tvL./a" clasu cple>cocallblongblocknamn vL142">6142longblockn">de=num_blocks" clef">numk1]) ef="t0)MBOL./a) + 1" namn vL115">5115./51="sref">se_deeeeeeeeeef=as="sref"5s/target/target_core_sbc5c#L115" id vL112" class="lin_task>se_dev./a>) -=cmd./atarget/target_core_sbc.c#L147" id) (struct6.a hr+nvL95" clas137" c#L147_>get_unaligs="linvL95" clas" namn v43"_attrie=nore_sbc.c#L15a7md./a> 56">6 56./aa>        .a hre5f="+c55="sref">se_deeeeeeeeeuns* Use the5ex========* Checkehocens5reehh57.c#L147" id vL147" class="linvL95" clas137"  a hrefSAME w/.c#L147=0 not sup claed\n href="mai4arget43"sref">cmd./a/a>)=blocks./a> = 40xfff45locks./a>;=s4carget_co4ss="line" nam>t_task v43"_attrie=nore_sbc.c#L15a7md./a> 56">6 56./acmd./atarget/target_core_sbc.c#L147" id) (struct6.a hdrivers/target/target_core_sbc41vors" cl4/target/target_core_sbc.4c#L72473lockn 0;=_core_sbc.c#L144"5id vL544" class="line" nam>tttttttttaeddodevL95= 5lass="line" namn vL115">5115./51="sref">se_deeeeeeeeeef=atarget/ta47" class="linget/check_5alidd5arget/target_core_sbc.        .a hre4f="+c48blocks_long./" class="s5LLLLLLLLL5LLLgohochref="drivers/to5t_inv58cks" class="sref">5block55cks./a>(.a hr"href="driv"drivers/5arget/target_core_sbc.c#566" i5 4namn vL814">6 81./a>rget/target_core_sbc.c#L15cvors" cl5ss="sref"=6142./,e1)et/target_core_sbc.c#L121" id vL121" class="l5arget_cor5_sbc.c#Livers/target/target_core_sbc41vors" cl4/target/target_core_sbc.4c#L72473lockn 0;=buf./5>[t_core_sbc.c#L144" id 5L144"5class="line" n        .a hre4f="+c48blocks_long./" class="s5L Use the5="drivers/target/target_5ore_s58f="+code=cmd" clas5="sre50"sref">cmd./a/a>)=cmd./a5NMAPt/target_core_sUNMAP5L95:M5OL./a>(.a href v de=num_blocks" cl.pc_parn v dede=bls="sref">cmd./a>linef">cmd./mdre_sb ef="t_sbc.c#L147" id)">cmd./mdre_sb ef="tc.c#L121" id vL121" class="l5arget_cor5_sbc.c#Livers/target/tarre_sbc5*7md./a> 56" class="line" namn vL156">6154=t_task_cdb" class="s hrs!href="d5ivers/top/target_core_sb5op/1458="line" namn v id_flag/target_cos" cl.pc_parn v dede=bls="ass="sref">sbc_emula5e_ver52="sref">se_deeeeeeeeeeeeLLLLLgoho5href="drivers/tout_unsup5claed5ode=num_blocks" clout_ers/target/target_core_sbc5*rget_cor5et_core_sbc.c#L48" id vL548" c54k_cdb" class=ef="driversde=u32" c5ass="sref">u32.4 > .a hr54href5"+code=se_dev_attri4b" cl48" class="line" namn v"s5ef">buf./5>[tet/target_core_sbc.y15ef"> 5L147" class="lers/tar>sbc_check_vali5_secv543locks_long./" class=145ef">buf./5>[t_core_sbc.c#L144" id 5L144"5class=bc_check_vali5_secv543locks_long./" class=145ak=(.a hr145" id vL145"5class54="sref">se_deeeeeeeee147f">cmd./a5 hrefSAME_>L108" class="5ina h5efSAME_>LvL95:_flag/target_core_sbcn v id_flag/locks">dev.s="sref">cmd./aSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATA|vL95) (struct6.a hs5namn vCDB_EXCEP4.a d" class="sref">s5namn vCDB_EXCEP4.a e_sbc.c#L48" id vL548" c54k_cdb" class=ef="driverse!href="d5ivers/top/target_core_sb5op/145"44" class="li_flag/target_core_sbcn v id_flag/locks">dev.s="sref">cmd./aSCcsi_sens4*7mdst_core_sbc.c#L14e csi_sens4*7mdst_bls="sref">cmd./a>lineTCM_UNSUPPORTEDnamn vOPCODte_samn_s5"9ss="TCM_UNSUPPORTEDnamn vOPCODte_sbc.c#L48" id vL548" c54k_cdb" class=ef="driverse Use the5href="drivers/tout_unsup5claed5ode=num_blocksers/tar-ef">cmd./a>lineEINVALe_samn_s5"9ss="EINVALe_sbc.c#L48" id vL548" c54k_cdb" class=ef="driverse">cmd./a5et_write_samn_s4ivers/ta54get/5arget_devL95= 5lass="line145" id vL145"5class54="sref">se_deeeeeeeee147f!href="d5>[target/target_core_sbc5c#L145" id vL147" cl_flag/target_core_sbcn v id_flag/locks">dev.s="sref">cmd./aSCF_SCSI_DATAsrDBtarget_core_sbcSCF_SCSI_DATA|vL95) (struct6.a hs5namn vCDB_EXCEP4.a d" class="sref">s5namn vCDB_EXCEP4.a e_sbc.c#L48" id vL548" c54k_cdb" class=ef="driverseLLLLgoho5ivers/ttarget/target_cor5_sbc.5#L147" id) (st_flag/target_core_sbcn v id_flag/locks">dev.s="sref">cmd./aSCcsi_sens4*7mdst_core_sbc.c#L14e csi_sens4*7mdst_bls="sref">cmd./a>lineTCM_INVALIDvCDB_FIELDe_samn_s5"9ss="TCM_INVALIDvCDB_FIELDe_sbc.c#L48" id vL548" c54k_cdb" class=ef="driversee=u32" c5t_task_cdbpr_err;.a href5"+cod5pr_errde=bloclers/tar-ef">cmd./a>lineEINVALe_samn_s5"9ss="EINVALe_sbc.c#L48" id vL548" c54k_cdb" class=ef="driversef">buf./5href="drivers/tout_inval5ddode5fiel&g        .a hre4f="+c48blocks_long./" class="s5"drivers/5arget/target_core_sbc.c#566" i5 5f="+ef">cmd./a>lineEXPORT_SYMBOLe_samn_s5"9ss="EXPORT_SYMBOLc.c#L121" id vL121" rgetmn vL142">6142./,e">devb"bclass="sref"tet"line" namn vL156">6154=t_task_cdb" class="s h6rget/targ6t_core_sbc.c#L15" class=65ine"6namn v


Thee" namn v5LXR softwc.c#bye+codne" namn http://sourcefok_c.nt_tprobytes/lxr">LXR f emun140" cl,e+cis experiACIT v556">ion#byene" namn mailto:lxr@c#Lux.no">lxr@c#Lux.noe_sbc
lxr.c#Lux.no kind112"os" clbyene" namn http://www.redpill-c#Lpro.no">Redpill L#Lpro AS" cl,eproviderlineL#Luxd vLsultmn vulavoperations md./ices mince 1995.