[stgt] stgt: backing store NULL sets uaddr to 0

Joe Eykholt jeykholt at cisco.com
Fri Aug 6 02:34:53 CEST 2010


On 8/5/10 5:25 PM, FUJITA Tomonori wrote:
> On Thu, 05 Aug 2010 17:20:46 -0700
> Joe Eykholt<jeykholt at cisco.com>  wrote:
>
>> Hi all,
>>
>> When I add a LUN using btype NULL:
>>
>> tgtadm --lld ftgt --op new --mode logicalunit --tid 1 --lun 2 -b null2 --bstype null
>>
>> I get this failure in the kernel on every read:
>>
>> [  711.424119] scsi_map_user_pages(378) Could not handle request of size 4096.
>> [  711.431907] scsi_tgt_kspace_exec(514) cmd ffff88045b628eb8 ret -22 uaddr 0 len 4096 rw 2
>>
>> scsi_map_user_pages() doesn't like uaddr == 0.
>
> Yeah, uaddr is supposed to be an user-space address.
>
>
>> Should this be fixed in the kernel or in tgtd?
>
> Needs to fix tgtd.

Good.

 > "NULL" bstype means that we don't any real I/Os so
> the kernel module has nothing to do with it.

The HBA still needs a buffer to transfer to or from.  The kernel module
could special-case uaddr 0 as being from the null bstype and just send out
zeros and drop write data, but it would have to allocate a zero buffer,
possibly large, for that.

It'd be easier if the daemon would do the allocation and
we didn't need to special-case it.

>> I'm using tgt-1.0.5 (very lightly modified to add ftgt).

	Cheers,
	Joe


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



More information about the stgt mailing list