Looks good, I personally prefer not changing ovl_stack_put ->
__ovl_stack_put and not adding unified ovl_stacks_put to be closer to
existing code, but that is not a big thing.
Reviewed-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>
On 7/20/24 06:07, Konstantin Khorenko wrote:
RedHat in RHEL9.4 has backported overlayfs data-only lower layers
feature (ms commit 37ebf056d6cf ("ovl: introduce data-only lower
layers")), so we have to adjust our dynamic path resolving feature.
Additionally store number of lowerpaths as it now differs from saved
number of lowerstacks due to data-only lower layers presence.
Fixes: 5f2c7b5e4d33 ("overlayfs: add dynamic path resolving in mount
options")
https://virtuozzo.atlassian.net/browse/PSBM-157244
Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com>
diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c
index 3676eaa83f7d..21acc780ebfc 100644
--- a/fs/overlayfs/util.c
+++ b/fs/overlayfs/util.c
@@ -100,7 +100,7 @@ void ovl_stack_cpy(struct ovl_path *dst, struct ovl_path
*src, unsigned int n)
dget(src[i].dentry);
}
-void ovl_stack_put(struct ovl_path *stack, unsigned int n)
+void __ovl_stack_put(struct ovl_path *stack, unsigned int n)
Do we really need this change?
{
unsigned int i;
@@ -110,10 +110,24 @@ void ovl_stack_put(struct ovl_path *stack, unsigned int n)
void ovl_stack_free(struct ovl_path *stack, unsigned int n)
{
- ovl_stack_put(stack, n);
+ __ovl_stack_put(stack, n);
kfree(stack);
}
+void __ovl_lowerpaths_put(struct path *lowerpaths, unsigned int n)
+{
+ unsigned int i;
+
+ for (i = 0; i < n; i++)
+ path_put(&lowerpaths[i]);
+}
+
+void ovl_stacks_put(struct ovl_entry *oe)
+{
+ __ovl_stack_put(ovl_lowerstack(oe), ovl_numlower(oe));
+ __ovl_lowerpaths_put(ovl_lowerpaths(oe), ovl_numlowerpaths(oe));
+}
Do we really need to put those together in separate function? Maybe just
add:
ovl_lowerpaths_put(ovl_lowerpaths(oe), ovl_numlowerpaths(oe));
kfree(ovl_lowerpaths(oe));
where needed, without changing preexisting functions?
+
struct ovl_entry *ovl_alloc_entry(unsigned int numlower)
{
size_t size = offsetof(struct ovl_entry, __lowerstack[numlower]);
@@ -127,7 +141,8 @@ struct ovl_entry *ovl_alloc_entry(unsigned int numlower)
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel