The commit is pushed to "branch-rh9-5.14.vz9.1.x-ovz" and will appear at 
https://src.openvz.org/scm/ovz/vzkernel.git
after ark-5.14
------>
commit f0fc5bbaa0ec5313a51405c52df0c759b0673433
Author: Cyrill Gorcunov <gorcu...@virtuozzo.com>
Date:   Thu Sep 30 16:04:06 2021 +0300

    fs/pipe: Use kvcalloc for pipe buffers
    
    To restore big slabs of memory (more than 1G) via pipes we need
    pipes to be able to carry such sizes, for this sake Andrey propose
    to use kvcalloc calls. Looking into the code I didn't find a reason
    why we can't do so, thus here is a patch.
    
    https://jira.sw.ru/browse/PSBM-69201
    
    CC: Andrey Vagin <ava...@virtuozzo.com>
    CC: Andrey Ryabinin <aryabi...@virtuozzo.com>
    CC: Konstantin Khorenko <khore...@virtuozzo.com>
    CC: "Denis V. Lunev" <d...@virtuozzo.com>
    Signed-off-by: Cyrill Gorcunov <gorcu...@virtuozzo.com>
    
    Rebase to vz8
     - Change kvmalloc to kvcalloc to respect mainline kmalloc->kcalloc change
     - Rename patch "Use kvmalloc..." -> "Use kvcalloc..."
    
    (cherry-picked from vz7 commit 606b246f934c ("fs/pipe: Use kvmalloc for pipe
    buffers"))
    Signed-off-by: Andrey Zhadchenko <andrey.zhadche...@virtuozzo.com>
    
    (cherry picked from vz8 commit f7e7ab79c22584567beedf9f596267b2fa29729c)
    Signed-off-by: Andrey Zhadchenko <andrey.zhadche...@virtuozzo.com>
---
 fs/pipe.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/pipe.c b/fs/pipe.c
index 6d4342bad9f1..7f07ce7199bb 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -802,7 +802,7 @@ struct pipe_inode_info *alloc_pipe_info(void)
        if (too_many_pipe_buffers_hard(user_bufs) && 
pipe_is_unprivileged_user())
                goto out_revert_acct;
 
-       pipe->bufs = kcalloc(pipe_bufs, sizeof(struct pipe_buffer),
+       pipe->bufs = kvcalloc(pipe_bufs, sizeof(struct pipe_buffer),
                             GFP_KERNEL_ACCOUNT);
 
        if (pipe->bufs) {
@@ -845,7 +845,7 @@ void free_pipe_info(struct pipe_inode_info *pipe)
        }
        if (pipe->tmp_page)
                __free_page(pipe->tmp_page);
-       kfree(pipe->bufs);
+       kvfree(pipe->bufs);
        kfree(pipe);
 }
 
@@ -1260,7 +1260,7 @@ int pipe_resize_ring(struct pipe_inode_info *pipe, 
unsigned int nr_slots)
        if (nr_slots < n)
                return -EBUSY;
 
-       bufs = kcalloc(nr_slots, sizeof(*bufs),
+       bufs = kvcalloc(nr_slots, sizeof(*bufs),
                       GFP_KERNEL_ACCOUNT | __GFP_NOWARN);
        if (unlikely(!bufs))
                return -ENOMEM;
@@ -1288,7 +1288,7 @@ int pipe_resize_ring(struct pipe_inode_info *pipe, 
unsigned int nr_slots)
        head = n;
        tail = 0;
 
-       kfree(pipe->bufs);
+       kvfree(pipe->bufs);
        pipe->bufs = bufs;
        pipe->ring_size = nr_slots;
        if (pipe->max_usage > nr_slots)
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to