Re: [PATCH for-next v3] RDMA/nldev: Add copy-on-fork attribute to get sys command

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

 



On 12/04/2021 10:51, Leon Romanovsky wrote:
> On Mon, Apr 12, 2021 at 09:41:50AM +0300, Gal Pressman wrote:
>> The new attribute indicates that the kernel copies DMA pages on fork,
>> hence libibverbs' fork support through madvise and MADV_DONTFORK is not
>> needed.
>>
>> The introduced attribute is always reported as supported since the
>> kernel has the patch that added the copy-on-fork behavior. This allows
>> the userspace library to identify older vs newer kernel versions.
>> Extra care should be taken when backporting this patch as it relies on
>> the fact that the copy-on-fork patch is merged, hence no check for
>> support is added.
>>
>> Don't backport this patch unless you also have the following series:
>> 70e806e4e645 ("mm: Do early cow for pinned pages during fork() for ptes")
>> and 4eae4efa2c29 ("hugetlb: do early cow when page pinned on src mm").
>>
>> Fixes: 70e806e4e645 ("mm: Do early cow for pinned pages during fork() for ptes")
>> Fixes: 4eae4efa2c29 ("hugetlb: do early cow when page pinned on src mm")
>> Signed-off-by: Gal Pressman <galpress@xxxxxxxxxx>
>> ---
>> PR was sent:
>> https://github.com/linux-rdma/rdma-core/pull/975
>>
>> Changelog -
>> v2->v3: https://lore.kernel.org/linux-rdma/21317d2c-9a8e-0dd7-3678-d2933c5053c4@xxxxxxxxxx/
>> * Remove check if copy-on-fork attribute was provided from nldev_set_sys_set_doit()
>>
>> v1->v2: https://lore.kernel.org/linux-rdma/20210405114722.98904-1-galpress@xxxxxxxxxx/
>> * Remove nla_put_u8() return value check
>> * Add commit hashes to commit message and code comment
>> ---
>>  drivers/infiniband/core/nldev.c  | 11 +++++++++++
>>  include/uapi/rdma/rdma_netlink.h |  2 ++
>>  2 files changed, 13 insertions(+)
>>
>> diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
>> index b8dc002a2478..4889e06a581a 100644
>> --- a/drivers/infiniband/core/nldev.c
>> +++ b/drivers/infiniband/core/nldev.c
>> @@ -146,6 +146,7 @@ static const struct nla_policy nldev_policy[RDMA_NLDEV_ATTR_MAX] = {
>>  	[RDMA_NLDEV_ATTR_UVERBS_DRIVER_ID]	= { .type = NLA_U32 },
>>  	[RDMA_NLDEV_NET_NS_FD]			= { .type = NLA_U32 },
>>  	[RDMA_NLDEV_SYS_ATTR_NETNS_MODE]	= { .type = NLA_U8 },
>> +	[RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK]	= { .type = NLA_U8 },
>>  };
>>  
>>  static int put_driver_name_print_type(struct sk_buff *msg, const char *name,
>> @@ -1697,6 +1698,16 @@ static int nldev_sys_get_doit(struct sk_buff *skb, struct nlmsghdr *nlh,
>>  		nlmsg_free(msg);
>>  		return err;
>>  	}
>> +
>> +	/*
>> +	 * Copy-on-fork is supported.
>> +	 * See commits:
>> +	 * 70e806e4e645 ("mm: Do early cow for pinned pages during fork() for ptes")
>> +	 * 4eae4efa2c29 ("hugetlb: do early cow when page pinned on src mm")
>> +	 * for more details. Don't backport this without them.
>> +	 */
>> +	nla_put_u8(msg, RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK, 1);
>> +
> 
> Nit, it is good to write here that we don't check nla_put_u8() on purpose.
> 
> Thanks,
> Reviewed-by: Leon Romanovsky <leonro@xxxxxxxxxx>

Thanks Leon!



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux