Re: How to figure out which block device has been created by tcm_loop?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Sep 26, 2015 at 12:24 AM, Ming Lin <mlin@xxxxxxxxxx> wrote:
> On Fri, 2015-09-25 at 20:00 -0700, Sheng Yang wrote:
>> Hi,
>>
>> I got hard time to determine which block device was created when I was
>> using tcm_loop.
>>
>> Normally I would just take a look at dmesg, see sda or sdb got
>> attached etc, but that's not a reliable way of doing it I guess.
>>
>> I also found the device showed up in "udevadm monitor", but unable to
>> find a way to associate with the original device I created from TCM
>> either.
>>
>> Here is the commands I've used to create the device(with tcmu-runner
>> running with file_handler demo code). I guess it's possible associate
>> with iscsi name somehow:
>>
>> mkdir -p /sys/kernel/config/target/core/user_1/test
>> echo dev_size=1024000000 > /sys/kernel/config/target/core/user_1/test/control
>> echo dev_config=file//root/test >
>> /sys/kernel/config/target/core/user_1/test/control
>> echo 1 > /sys/kernel/config/target/core/user_1/test/enable
>>
>> mkdir -p /sys/kernel/config/target/loopback/naa.60014059436855c1/tpgt_1
>> echo "naa.60014051153c198a" >
>> /sys/kernel/config/target/loopback/naa.60014059436855c1/tpgt_1/nexus
>> mkdir -p /sys/kernel/config/target/loopback/naa.60014059436855c1/tpgt_1/lun/lun_0
>> ln -s /sys/kernel/config/target/core/user_1/test
>> /sys/kernel/config/target/loopback/naa.60014059436855c1/tpgt_1/lun/lun_0/c68d79910b
>
> You can get scsi port/lun from the configfs.
>
> Try below script.
> The only missing part is I don't how to map wwn to SCSI host number.
> So you need to modify the hard-coded map_wwn_to_host().
>
> mlin@ssi:~$ ./tcm.sh
> /sys/kernel/config/target/loopback/naa.6000000000000001/tpgt_1/lun/lun_0:/dev/sdd
> /sys/kernel/config/target/loopback/naa.6000000000000001/tpgt_1/lun/lun_1:/dev/sde
> /sys/kernel/config/target/loopback/naa.6000000000000001/tpgt_5/lun/lun_3:/dev/sdf
> /sys/kernel/config/target/loopback/naa.60014055f195952b/tpgt_1/lun/lun_0:/dev/sdc
>
> ------
>
> #!/bin/bash
> #tcm.sh
>
> tcm_loop_dir=/sys/kernel/config/target/loopback
>
> function get_wwns()
> {
>         ls $tcm_loop_dir |grep naa
> }
>
> #$1: wwn
> function map_wwn_to_host()
> {
>         local wwn=$1
>         #TDB: how to map wwn to SCSI host number???
>         #I don't know, just hard code it now
>         #run "lsscsi -H" to see the scsi host number
>         if [ "$wwn" = "naa.6000000000000001" ] ; then
>                 echo 7
>         else
>                 echo 6
>         fi
> }
>
> #$1:wwn
> function get_ports()
> {
>         local wwn=$1
>         local wwn_path=${tcm_loop_dir}/${wwn}
>         ls $wwn_path |grep tpgt_ | awk -F"tpgt_" '{print $2}'
> }
>
> #$1:wwn
> #$2:port
> function get_luns()
> {
>         local wwn=$1
>         local port=$2
>         lun_path=${tcm_loop_dir}/${wwn}/tpgt_${port}/lun
>         ls $lun_path |grep lun_ | awk -F"lun_" '{print $2}'
> }
>
> #$1: host
> #$2: port
> #$3: lun
> function get_one_dev()
> {
>         local host=$1
>         local port=$2
>         local lun=$3
>         local id=$host:0:$port:$lun
>
>         lsscsi | grep $id | awk '{print $6}'
> }
>
> function get_all_devs()
> {
>         local host
>         local port
>         local lun
>         local wwn
>
>         for wwn in `get_wwns` ; do
>                 host=`map_wwn_to_host $wwn`
>                 for port in `get_ports $wwn` ; do
>                         for lun in `get_luns $wwn $port` ; do
>                                 echo -n $tcm_loop_dir/$wwn/tpgt_$port/lun/lun_$lun:
>                                 get_one_dev $host $port $lun
>                         done
>                 done
>         done
> }
>
> get_all_devs
>
>
>
>

Thank you Ming! The script works great, and now I would try to find
out the mapping between wwn and host number.

--Sheng
--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux