Re: [PATCH v5 03/10] maple_tree: Introduce interfaces __mt_dup() and mtree_dup()

From: Matthew Wilcox
Date: Mon Oct 16 2023 - 10:11:17 EST


On Mon, Oct 16, 2023 at 11:22:19AM +0800, Peng Zhang wrote:
> +++ b/lib/maple_tree.c
> @@ -4,6 +4,10 @@
> * Copyright (c) 2018-2022 Oracle Corporation
> * Authors: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
> * Matthew Wilcox <willy@xxxxxxxxxxxxx>
> + *
> + * Algorithm for duplicating Maple Tree
> + * Copyright (c) 2023 ByteDance
> + * Author: Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx>

You can't copyright an algorithm. You can copyright the
_implementation_ of an algorithm. You have a significant chunk of code
in this file, so adding your copyright is reasonable (although not
legally required, AIUI). Just leave out this line:

+ * Algorithm for duplicating Maple Tree

> +/**
> + * __mt_dup(): Duplicate an entire maple tree
> + * @mt: The source maple tree
> + * @new: The new maple tree
> + * @gfp: The GFP_FLAGS to use for allocations
> + *
> + * This function duplicates a maple tree in Depth-First Search (DFS) pre-order
> + * traversal. It uses memcopy() to copy nodes in the source tree and allocate

memcpy()?

> +int __mt_dup(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)
> +{
> + int ret = 0;
> + MA_STATE(mas, mt, 0, 0);
> + MA_STATE(new_mas, new, 0, 0);
> +
> + mas_dup_build(&mas, &new_mas, gfp);
> +
> + if (unlikely(mas_is_err(&mas))) {
> + ret = xa_err(mas.node);
> + if (ret == -ENOMEM)
> + mas_dup_free(&new_mas);
> + }
> +
> + return ret;
> +}
> +EXPORT_SYMBOL(__mt_dup);

Why does it need to be exported?