On 2018年03月06日 13:44, Mike Snitzer wrote:
> On Mon, Mar 05 2018 at 10:35pm -0500,
> Wang Sheng-Hui <shh...@foxmail.com> wrote:
>
>> Dear,
>>
>> Sorry to trouble you.
>>
>> I noticed some code in dm-*.c like:
>> "
>> static int multipath_prepare_ioctl(struct dm_target *ti,
>>              struct block_device **bdev, fmode_t *mode)
>> {
>> ...
>>      /*
>>       * Only pass ioctls through if the device sizes match exactly.
>>       */
>>      if (!r && ti->len != i_size_read((*bdev)->bd_inode) >> SECTOR_SHIFT)
>>              return 1;
>> ...
>> }
>> "
>> Here, return value 1 means 
>> "ioctl is being issued against a subset of the parent bdev; require extra 
>> privileges."
>> (comment in dm_blk_ioctl)
>>
>> I'm confused by the comment and '!=' test for multipath. 
>> In which cases, the size of low level single device is not equal to the 
>> parent 
>> size of multipath device?
> Given that ti->len is sent down from userspace, the DM multipath
> target's ti->len _could_ be smaller than the underlying path(s).  But in
> practice that doesn't occur with multipathd.. a partitioned multipath
> device is generally done, via kpartx, in terms of linear mappings ontop
> of the multipath device.
>
> The same != test is done in the dm linear target and is much more
> relevant to concerns about ioctls being sent to partition.
>
> Mike
>
>
Thanks for your explanation, Mike!

Regards,
shenghui




--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to