From 10ebd8556b7990499c896a550e3d416b444211e6 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 10 May 2024 02:23:07 +0000 Subject: [PATCH] add led --- kernel/fs/orangefs/orangefs-bufmap.c | 26 ++++++++++++++++++-------- 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/kernel/fs/orangefs/orangefs-bufmap.c b/kernel/fs/orangefs/orangefs-bufmap.c index 6d20b1b..b501dc0 100644 --- a/kernel/fs/orangefs/orangefs-bufmap.c +++ b/kernel/fs/orangefs/orangefs-bufmap.c @@ -105,7 +105,7 @@ left = t; else left = t + (left - n); - if (unlikely(signal_pending(current))) + if (signal_pending(current)) left = -EINTR; } while (left > 0); @@ -168,10 +168,7 @@ static void orangefs_bufmap_unmap(struct orangefs_bufmap *bufmap) { - int i; - - for (i = 0; i < bufmap->page_count; i++) - put_page(bufmap->page_array[i]); + unpin_user_pages(bufmap->page_array, bufmap->page_count); } static void @@ -267,8 +264,8 @@ int offset = 0, ret, i; /* map the pages */ - ret = get_user_pages_fast((unsigned long)user_desc->ptr, - bufmap->page_count, 1, bufmap->page_array); + ret = pin_user_pages_fast((unsigned long)user_desc->ptr, + bufmap->page_count, FOLL_WRITE, bufmap->page_array); if (ret < 0) return ret; @@ -279,7 +276,7 @@ for (i = 0; i < ret; i++) { SetPageError(bufmap->page_array[i]); - put_page(bufmap->page_array[i]); + unpin_user_page(bufmap->page_array[i]); } return -ENOMEM; } @@ -537,3 +534,16 @@ } return 0; } + +void orangefs_bufmap_page_fill(void *page_to, + int buffer_index, + int slot_index) +{ + struct orangefs_bufmap_desc *from; + void *page_from; + + from = &__orangefs_bufmap->desc_array[buffer_index]; + page_from = kmap_atomic(from->page_array[slot_index]); + memcpy(page_to, page_from, PAGE_SIZE); + kunmap_atomic(page_from); +} -- Gitblit v1.6.2