From 2944ea6424634f35337dade81715665d631c0f13 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 13 Nov 2025 15:04:41 -0800 Subject: [PATCH] remove generic_file_buffered_write backport for el7 We still need to keep KC_GENERIC_PERFORM_WRITE_KIOCB_IOV_ITER for el8. So kc_generic_perform_write remains in place for now. Signed-off-by: Auke Kok --- kmod/src/Makefile.kernelcompat | 9 --------- kmod/src/ioctl.c | 6 ++++-- kmod/src/kernelcompat.c | 22 ---------------------- kmod/src/kernelcompat.h | 6 ------ 4 files changed, 4 insertions(+), 39 deletions(-) diff --git a/kmod/src/Makefile.kernelcompat b/kmod/src/Makefile.kernelcompat index ec79b23e..ef24230a 100644 --- a/kmod/src/Makefile.kernelcompat +++ b/kmod/src/Makefile.kernelcompat @@ -6,15 +6,6 @@ ccflags-y += -include $(src)/kernelcompat.h -# -# v3.14-rc8-130-gccad2365668f -# -# generic_file_buffered_write is removed, backport it -# -ifneq (,$(shell grep 'extern ssize_t generic_file_buffered_write' include/linux/fs.h)) -ccflags-y += -DKC_GENERIC_FILE_BUFFERED_WRITE=1 -endif - # # v5.7-438-g8151b4c8bee4 # diff --git a/kmod/src/ioctl.c b/kmod/src/ioctl.c index 156538ad..5a9622f2 100644 --- a/kmod/src/ioctl.c +++ b/kmod/src/ioctl.c @@ -489,6 +489,7 @@ static long scoutfs_ioc_stage(struct file *file, unsigned long arg) struct scoutfs_lock *lock = NULL; struct kiocb kiocb; struct iovec iov; + struct iov_iter iter; size_t written; loff_t end_size; loff_t isize; @@ -559,8 +560,9 @@ static long scoutfs_ioc_stage(struct file *file, unsigned long arg) pos = args.offset; written = 0; do { - ret = generic_file_buffered_write(&kiocb, &iov, 1, pos, &pos, - args.length, written); + iov_iter_init(&iter, WRITE, &iov, 1, args.length); + ret = kc_generic_perform_write(&kiocb, &iter, pos); + BUG_ON(ret == -EIOCBQUEUED); if (ret > 0) written += ret; diff --git a/kmod/src/kernelcompat.c b/kmod/src/kernelcompat.c index f36a4a6a..561dcad1 100644 --- a/kmod/src/kernelcompat.c +++ b/kmod/src/kernelcompat.c @@ -3,28 +3,6 @@ #include "kernelcompat.h" - -#ifndef KC_GENERIC_FILE_BUFFERED_WRITE -ssize_t -kc_generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov, - unsigned long nr_segs, loff_t pos, loff_t *ppos, - size_t count, ssize_t written) -{ - ssize_t status; - struct iov_iter i; - - iov_iter_init(&i, WRITE, iov, nr_segs, count); - status = kc_generic_perform_write(iocb, &i, pos); - - if (likely(status >= 0)) { - written += status; - *ppos = pos + status; - } - - return written ? written : status; -} -#endif - #include #ifdef KC_LIST_LRU_WALK_CB_ITEM_LOCK diff --git a/kmod/src/kernelcompat.h b/kmod/src/kernelcompat.h index 58f90754..bc150026 100644 --- a/kmod/src/kernelcompat.h +++ b/kmod/src/kernelcompat.h @@ -42,11 +42,6 @@ #define KC_UNREGISTER_SHRINKER(ptr) (unregister_shrinker(ptr)) #define KC_SHRINKER_FN(ptr) (ptr) -#ifndef KC_GENERIC_FILE_BUFFERED_WRITE -ssize_t kc_generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov, - unsigned long nr_segs, loff_t pos, loff_t *ppos, - size_t count, ssize_t written); -#define generic_file_buffered_write kc_generic_file_buffered_write #ifdef KC_GENERIC_PERFORM_WRITE_KIOCB_IOV_ITER static inline int kc_generic_perform_write(struct kiocb *iocb, struct iov_iter *iter, loff_t pos) { @@ -60,7 +55,6 @@ static inline int kc_generic_perform_write(struct kiocb *iocb, struct iov_iter * return generic_perform_write(file, iter, pos); } #endif -#endif // KC_GENERIC_FILE_BUFFERED_WRITE #ifndef KC_HAVE_BLK_OPF_T /* typedef __u32 __bitwise blk_opf_t; */