nfs: remove ->write_pageio_init from rpc ops
Subsystems (2)
PATCH v2 1/2 nfs: remove ->write_pageio_init from rpc ops
We only use one static ops vector or grab it from the layout driver, so clean up the whole code path to make that more obvious.
--- fs/nfs/direct.c | 4 ++-- fs/nfs/nfs3proc.c | 1 - fs/nfs/nfs4proc.c | 1 - fs/nfs/pnfs.c | 14 -------------- fs/nfs/pnfs.h | 8 -------- fs/nfs/proc.c | 1 - fs/nfs/write.c | 20 ++++++++++++-------- include/linux/nfs_xdr.h | 2 -- 8 files changed, 14 insertions(+), 37 deletions(-)
fs/nfs/direct.c +2 -2
@@ -564,7 +564,7 @@ static void nfs_direct_write_reschedule(struct nfs_direct_req *dreq) dreq->count =0 ;get_dreq (dreq); -NFS_PROTO (dreq->inode)->write_pageio_init (&desc, dreq->inode,FLUSH_STABLE , +nfs_pageio_init_write (&desc, dreq->inode,FLUSH_STABLE , &nfs_direct_write_completion_ops); desc.pg_dreq = dreq;
@@ -874,7 +874,7 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq,size_t requested_bytes =0 ;unsigned long seg; -NFS_PROTO (inode)->write_pageio_init (&desc, inode,FLUSH_COND_STABLE , +nfs_pageio_init_write (&desc, inode,FLUSH_COND_STABLE , &nfs_direct_write_completion_ops); desc.pg_dreq = dreq;get_dreq (dreq);
fs/nfs/nfs3proc.c +0 -1
@@ -986,7 +986,6 @@ const struct nfs_rpc_ops nfs_v3_clientops = { .read_rpc_prepare = nfs3_proc_read_rpc_prepare, .read_done = nfs3_read_done, .write_setup = nfs3_proc_write_setup, - .write_pageio_init = nfs_pageio_init_write, .write_rpc_prepare = nfs3_proc_write_rpc_prepare, .write_done = nfs3_write_done, .commit_setup = nfs3_proc_commit_setup,
fs/nfs/nfs4proc.c +0 -1
@@ -8466,7 +8466,6 @@ const struct nfs_rpc_ops nfs_v4_clientops = { .read_rpc_prepare = nfs4_proc_read_rpc_prepare, .read_done = nfs4_read_done, .write_setup = nfs4_proc_write_setup, - .write_pageio_init = pnfs_pageio_init_write, .write_rpc_prepare = nfs4_proc_write_rpc_prepare, .write_done = nfs4_write_done, .commit_setup = nfs4_proc_commit_setup,
fs/nfs/pnfs.c +0 -14
@@ -1447,20 +1447,6 @@ pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, struct inode *inode,nfs_pageio_init (pgio, inode, ld->pg_read_ops, compl_ops, server->rsize,0 ); } -void -pnfs_pageio_init_write (struct nfs_pageio_descriptor *pgio,struct inode *inode, -int ioflags, -const struct nfs_pgio_completion_ops *compl_ops) -{ -struct nfs_server *server =NFS_SERVER (inode); -struct pnfs_layoutdriver_type *ld = server->pnfs_curr_ld; - -if (ld ==NULL ) -nfs_pageio_init_write (pgio, inode, ioflags, compl_ops); -else -nfs_pageio_init (pgio, inode, ld->pg_write_ops, compl_ops, server->wsize, ioflags); -} -bool pnfs_generic_pg_test (struct nfs_pageio_descriptor *pgio,struct nfs_page *prev,struct nfs_page *req)
fs/nfs/pnfs.h +0 -8
@@ -182,8 +182,6 @@ void pnfs_put_lseg(struct pnfs_layout_segment *lseg);void pnfs_pageio_init_read (struct nfs_pageio_descriptor *,struct inode *,const struct nfs_pgio_completion_ops *); -void pnfs_pageio_init_write (struct nfs_pageio_descriptor *,struct inode *, -int ,const struct nfs_pgio_completion_ops *);void set_pnfs_layoutdriver (struct nfs_server *,const struct nfs_fh *,u32 );void unset_pnfs_layoutdriver (struct nfs_server *);
@@ -467,12 +465,6 @@ static inline void pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, strnfs_pageio_init_read (pgio, inode, compl_ops); } -static inline void pnfs_pageio_init_write (struct nfs_pageio_descriptor *pgio,struct inode *inode,int ioflags, -const struct nfs_pgio_completion_ops *compl_ops) -{ -nfs_pageio_init_write (pgio, inode, ioflags, compl_ops); -} -static inline int pnfs_commit_list (struct inode *inode,struct list_head *mds_pages,int how,struct nfs_commit_info *cinfo)
fs/nfs/proc.c +0 -1
@@ -764,7 +764,6 @@ const struct nfs_rpc_ops nfs_v2_clientops = { .read_rpc_prepare = nfs_proc_read_rpc_prepare, .read_done = nfs_read_done, .write_setup = nfs_proc_write_setup, - .write_pageio_init = nfs_pageio_init_write, .write_rpc_prepare = nfs_proc_write_rpc_prepare, .write_done = nfs_write_done, .commit_setup = nfs_proc_commit_setup,
fs/nfs/write.c +12 -8
@@ -354,10 +354,8 @@ static int nfs_writepage_locked(struct page *page, struct writeback_control *wbcstruct nfs_pageio_descriptor pgio;int err; -NFS_PROTO (page_file_mapping (page)->host)->write_pageio_init (&pgio, - page->mapping->host, -wb_priority (wbc), - &nfs_async_write_completion_ops); +nfs_pageio_init_write (&pgio, page->mapping->host,wb_priority (wbc), + &nfs_async_write_completion_ops); err =nfs_do_writepage (page, wbc, &pgio);nfs_pageio_complete (&pgio);if (err <0 )
@@ -400,7 +398,8 @@ int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)nfs_inc_stats (inode,NFSIOS_VFSWRITEPAGES ); -NFS_PROTO (inode)->write_pageio_init (&pgio, inode,wb_priority (wbc), &nfs_async_write_completion_ops); +nfs_pageio_init_write (&pgio, inode,wb_priority (wbc), + &nfs_async_write_completion_ops); err =write_cache_pages (mapping, wbc, nfs_writepages_callback, &pgio);nfs_pageio_complete (&pgio);
@@ -1285,10 +1284,15 @@ void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio, struct inode *inode, int ioflags, const struct nfs_pgio_completion_ops *compl_ops) { - nfs_pageio_init(pgio, inode, &nfs_pageio_write_ops, compl_ops, - NFS_SERVER(inode)->wsize, ioflags); + struct nfs_server *server = NFS_SERVER(inode); +const struct nfs_pageio_ops *pg_ops = &nfs_pageio_write_ops; + +#ifdef CONFIG_NFS_V4_1 +if (server->pnfs_curr_ld) + pg_ops = server->pnfs_curr_ld->pg_write_ops; +#endif +nfs_pageio_init (pgio, inode, pg_ops, compl_ops, server->wsize, ioflags); } -EXPORT_SYMBOL_GPL (nfs_pageio_init_write);void nfs_pageio_reset_write_mds (struct nfs_pageio_descriptor *pgio) {
include/linux/nfs_xdr.h +0 -2
@@ -1467,8 +1467,6 @@ struct nfs_rpc_ops {int (*read_rpc_prepare)(struct rpc_task *,struct nfs_read_data *);int (*read_done) (struct rpc_task *,struct nfs_read_data *);void (*write_setup) (struct nfs_write_data *,struct rpc_message *); -void (*write_pageio_init)(struct nfs_pageio_descriptor *,struct inode *,int , -const struct nfs_pgio_completion_ops *);int (*write_rpc_prepare)(struct rpc_task *,struct nfs_write_data *);int (*write_done) (struct rpc_task *,struct nfs_write_data *);void (*commit_setup) (struct nfs_commit_data *,struct rpc_message *);
Signature · 1 line
1.7.10.4
PATCH v2 2/2 nfs: remove ->read_pageio_init from rpc ops
We only use one static ops vector or grab it from the layout driver, so clean up the whole code path to make that more obvious.
--- fs/nfs/direct.c | 3 +-- fs/nfs/nfs3proc.c | 1 - fs/nfs/nfs4proc.c | 1 - fs/nfs/pnfs.c | 13 ------------- fs/nfs/pnfs.h | 9 --------- fs/nfs/proc.c | 1 - fs/nfs/read.c | 16 +++++++++++----- include/linux/nfs_xdr.h | 2 -- 8 files changed, 12 insertions(+), 34 deletions(-)
fs/nfs/direct.c +1 -2
@@ -424,8 +424,7 @@ static ssize_t nfs_direct_read_schedule_iovec(struct nfs_direct_req *dreq,size_t requested_bytes =0 ;unsigned long seg; -NFS_PROTO (dreq->inode)->read_pageio_init (&desc, dreq->inode, - &nfs_direct_read_completion_ops); +nfs_pageio_init_read (&desc, dreq->inode, &nfs_direct_read_completion_ops);get_dreq (dreq); desc.pg_dreq = dreq;atomic_inc (&inode->i_dio_count);
fs/nfs/nfs3proc.c +0 -1
@@ -982,7 +982,6 @@ const struct nfs_rpc_ops nfs_v3_clientops = { .pathconf = nfs3_proc_pathconf, .decode_dirent = nfs3_decode_dirent, .read_setup = nfs3_proc_read_setup, - .read_pageio_init = nfs_pageio_init_read, .read_rpc_prepare = nfs3_proc_read_rpc_prepare, .read_done = nfs3_read_done, .write_setup = nfs3_proc_write_setup,
fs/nfs/nfs4proc.c +0 -1
@@ -8462,7 +8462,6 @@ const struct nfs_rpc_ops nfs_v4_clientops = { .set_capabilities = nfs4_server_capabilities, .decode_dirent = nfs4_decode_dirent, .read_setup = nfs4_proc_read_setup, - .read_pageio_init = pnfs_pageio_init_read, .read_rpc_prepare = nfs4_proc_read_rpc_prepare, .read_done = nfs4_read_done, .write_setup = nfs4_proc_write_setup,
fs/nfs/pnfs.c +0 -13
@@ -1434,19 +1434,6 @@ pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio, }EXPORT_SYMBOL_GPL (pnfs_generic_pg_init_write); -void -pnfs_pageio_init_read (struct nfs_pageio_descriptor *pgio,struct inode *inode, -const struct nfs_pgio_completion_ops *compl_ops) -{ -struct nfs_server *server =NFS_SERVER (inode); -struct pnfs_layoutdriver_type *ld = server->pnfs_curr_ld; - -if (ld ==NULL ) -nfs_pageio_init_read (pgio, inode, compl_ops); -else -nfs_pageio_init (pgio, inode, ld->pg_read_ops, compl_ops, server->rsize,0 ); -} -bool pnfs_generic_pg_test (struct nfs_pageio_descriptor *pgio,struct nfs_page *prev,struct nfs_page *req)
fs/nfs/pnfs.h +0 -9
@@ -180,9 +180,6 @@ extern int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp);void pnfs_get_layout_hdr (struct pnfs_layout_hdr *lo);void pnfs_put_lseg (struct pnfs_layout_segment *lseg); -void pnfs_pageio_init_read (struct nfs_pageio_descriptor *,struct inode *, -const struct nfs_pgio_completion_ops *); -void set_pnfs_layoutdriver (struct nfs_server *,const struct nfs_fh *,u32 );void unset_pnfs_layoutdriver (struct nfs_server *);void pnfs_generic_pg_init_read (struct nfs_pageio_descriptor *,struct nfs_page *);
@@ -459,12 +456,6 @@ static inline void unset_pnfs_layoutdriver(struct nfs_server *s) { } -static inline void pnfs_pageio_init_read (struct nfs_pageio_descriptor *pgio,struct inode *inode, -const struct nfs_pgio_completion_ops *compl_ops) -{ -nfs_pageio_init_read (pgio, inode, compl_ops); -} -static inline int pnfs_commit_list (struct inode *inode,struct list_head *mds_pages,int how,struct nfs_commit_info *cinfo)
fs/nfs/proc.c +0 -1
@@ -760,7 +760,6 @@ const struct nfs_rpc_ops nfs_v2_clientops = { .pathconf = nfs_proc_pathconf, .decode_dirent = nfs2_decode_dirent, .read_setup = nfs_proc_read_setup, - .read_pageio_init = nfs_pageio_init_read, .read_rpc_prepare = nfs_proc_read_rpc_prepare, .read_done = nfs_read_done, .write_setup = nfs_proc_write_setup,
fs/nfs/read.c +11 -5
@@ -24,6 +24,7 @@#include "internal.h" #include "iostat.h" #include "fscache.h" +#include "pnfs.h" #define NFSDBG_FACILITY NFSDBG_PAGECACHE
@@ -117,10 +118,15 @@ void nfs_pageio_init_read(struct nfs_pageio_descriptor *pgio,struct inode *inode, const struct nfs_pgio_completion_ops *compl_ops) { - nfs_pageio_init(pgio, inode, &nfs_pageio_read_ops, compl_ops, - NFS_SERVER(inode)->rsize, 0); + struct nfs_server *server = NFS_SERVER(inode); +const struct nfs_pageio_ops *pg_ops = &nfs_pageio_read_ops; + +#ifdef CONFIG_NFS_V4_1 +if (server->pnfs_curr_ld) + pg_ops = server->pnfs_curr_ld->pg_read_ops; +#endif +nfs_pageio_init (pgio, inode, pg_ops, compl_ops, server->rsize,0 ); } -EXPORT_SYMBOL_GPL (nfs_pageio_init_read);void nfs_pageio_reset_read_mds (struct nfs_pageio_descriptor *pgio) {
@@ -147,7 +153,7 @@ int nfs_readpage_async(struct nfs_open_context *ctx, struct inode *inode,if (len <PAGE_CACHE_SIZE )zero_user_segment (page, len,PAGE_CACHE_SIZE ); -NFS_PROTO (inode)->read_pageio_init (&pgio, inode, &nfs_async_read_completion_ops); +nfs_pageio_init_read (&pgio, inode, &nfs_async_read_completion_ops);nfs_pageio_add_request (&pgio, new);nfs_pageio_complete (&pgio);NFS_I (inode)->read_io += pgio.pg_bytes_written;
@@ -654,7 +660,7 @@ int nfs_readpages(struct file *filp, struct address_space *mapping,if (ret ==0 ) goto read_complete;/* all pages were read */ -NFS_PROTO (inode)->read_pageio_init (&pgio, inode, &nfs_async_read_completion_ops); +nfs_pageio_init_read (&pgio, inode, &nfs_async_read_completion_ops); ret =read_cache_pages (mapping, pages, readpage_async_filler, &desc);
include/linux/nfs_xdr.h +0 -2
@@ -1462,8 +1462,6 @@ struct nfs_rpc_ops {int (*set_capabilities)(struct nfs_server *,struct nfs_fh *);int (*decode_dirent)(struct xdr_stream *,struct nfs_entry *,int );void (*read_setup) (struct nfs_read_data *,struct rpc_message *); -void (*read_pageio_init)(struct nfs_pageio_descriptor *,struct inode *, -const struct nfs_pgio_completion_ops *);int (*read_rpc_prepare)(struct rpc_task *,struct nfs_read_data *);int (*read_done) (struct rpc_task *,struct nfs_read_data *);void (*write_setup) (struct nfs_write_data *,struct rpc_message *);
Signature · 1 line
1.7.10.4
Quoted 157 lines · Christoph Hellwig
We only use one static ops vector or grab it from the layout driver, so clean up the whole code path to make that more obvious.
Signed-off-by Christoph Hellwig <[email protected]>--- fs/nfs/direct.c | 4 ++-- fs/nfs/nfs3proc.c | 1 - fs/nfs/nfs4proc.c | 1 - fs/nfs/pnfs.c | 14 -------------- fs/nfs/pnfs.h | 8 -------- fs/nfs/proc.c | 1 - fs/nfs/write.c | 20 ++++++++++++-------- include/linux/nfs_xdr.h | 2 -- 8 files changed, 14 insertions(+), 37 deletions(-)fs/nfs/direct.c +2
-2@@ -564,7 +564,7 @@ static void nfs_direct_write_reschedule(struct nfs_direct_req *dreq) dreq->count =0 ;get_dreq (dreq); -NFS_PROTO (dreq->inode)->write_pageio_init (&desc, dreq->inode,FLUSH_STABLE , +nfs_pageio_init_write (&desc, dreq->inode,FLUSH_STABLE , &nfs_direct_write_completion_ops); desc.pg_dreq = dreq;@@ -874,7 +874,7 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq,size_t requested_bytes =0 ;unsigned long seg; -NFS_PROTO (inode)->write_pageio_init (&desc, inode,FLUSH_COND_STABLE , +nfs_pageio_init_write (&desc, inode,FLUSH_COND_STABLE , &nfs_direct_write_completion_ops); desc.pg_dreq = dreq;get_dreq (dreq);fs/nfs/nfs3proc.c +0
-1@@ -986,7 +986,6 @@ const struct nfs_rpc_ops nfs_v3_clientops = { .read_rpc_prepare = nfs3_proc_read_rpc_prepare, .read_done = nfs3_read_done, .write_setup = nfs3_proc_write_setup, - .write_pageio_init = nfs_pageio_init_write, .write_rpc_prepare = nfs3_proc_write_rpc_prepare, .write_done = nfs3_write_done, .commit_setup = nfs3_proc_commit_setup,fs/nfs/nfs4proc.c +0
-1@@ -8466,7 +8466,6 @@ const struct nfs_rpc_ops nfs_v4_clientops = { .read_rpc_prepare = nfs4_proc_read_rpc_prepare, .read_done = nfs4_read_done, .write_setup = nfs4_proc_write_setup, - .write_pageio_init = pnfs_pageio_init_write, .write_rpc_prepare = nfs4_proc_write_rpc_prepare, .write_done = nfs4_write_done, .commit_setup = nfs4_proc_commit_setup,fs/nfs/pnfs.c +0
-14@@ -1447,20 +1447,6 @@ pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, struct inode *inode,nfs_pageio_init (pgio, inode, ld->pg_read_ops, compl_ops, server->rsize,0 ); } -void -pnfs_pageio_init_write (struct nfs_pageio_descriptor *pgio,struct inode *inode, -int ioflags, -const struct nfs_pgio_completion_ops *compl_ops) -{ -struct nfs_server *server =NFS_SERVER (inode); -struct pnfs_layoutdriver_type *ld = server->pnfs_curr_ld; - -if (ld ==NULL ) -nfs_pageio_init_write (pgio, inode, ioflags, compl_ops); -else -nfs_pageio_init (pgio, inode, ld->pg_write_ops, compl_ops, server->wsize, ioflags); -} -bool pnfs_generic_pg_test (struct nfs_pageio_descriptor *pgio,struct nfs_page *prev,struct nfs_page *req)fs/nfs/pnfs.h +0
-8@@ -182,8 +182,6 @@ void pnfs_put_lseg(struct pnfs_layout_segment *lseg);void pnfs_pageio_init_read (struct nfs_pageio_descriptor *,struct inode *,const struct nfs_pgio_completion_ops *); -void pnfs_pageio_init_write (struct nfs_pageio_descriptor *,struct inode *, -int ,const struct nfs_pgio_completion_ops *);void set_pnfs_layoutdriver (struct nfs_server *,const struct nfs_fh *,u32 );void unset_pnfs_layoutdriver (struct nfs_server *);@@ -467,12 +465,6 @@ static inline void pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, strnfs_pageio_init_read (pgio, inode, compl_ops); } -static inline void pnfs_pageio_init_write (struct nfs_pageio_descriptor *pgio,struct inode *inode,int ioflags, -const struct nfs_pgio_completion_ops *compl_ops) -{ -nfs_pageio_init_write (pgio, inode, ioflags, compl_ops); -} -static inline int pnfs_commit_list (struct inode *inode,struct list_head *mds_pages,int how,struct nfs_commit_info *cinfo)fs/nfs/proc.c +0
-1@@ -764,7 +764,6 @@ const struct nfs_rpc_ops nfs_v2_clientops = { .read_rpc_prepare = nfs_proc_read_rpc_prepare, .read_done = nfs_read_done, .write_setup = nfs_proc_write_setup, - .write_pageio_init = nfs_pageio_init_write, .write_rpc_prepare = nfs_proc_write_rpc_prepare, .write_done = nfs_write_done, .commit_setup = nfs_proc_commit_setup,fs/nfs/write.c +4
-7@@ -354,10 +354,8 @@ static int nfs_writepage_locked(struct page *page, struct writeback_control *wbcstruct nfs_pageio_descriptor pgio;int err; -NFS_PROTO (page_file_mapping (page)->host)->write_pageio_init (&pgio, - page->mapping->host, -wb_priority (wbc), - &nfs_async_write_completion_ops); +nfs_pageio_init_write (&pgio, page->mapping->host,wb_priority (wbc), + &nfs_async_write_completion_ops); err =nfs_do_writepage (page, wbc, &pgio);nfs_pageio_complete (&pgio);if (err <0 )@@ -400,7 +398,8 @@ int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)nfs_inc_stats (inode,NFSIOS_VFSWRITEPAGES ); -NFS_PROTO (inode)->write_pageio_init (&pgio, inode,wb_priority (wbc), &nfs_async_write_completion_ops); +nfs_pageio_init_write (&pgio, inode,wb_priority (wbc), + &nfs_async_write_completion_ops); err =write_cache_pages (mapping, wbc, nfs_writepages_callback, &pgio);nfs_pageio_complete (&pgio);@@ -1285,10 +1284,15 @@ void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio, struct inode *inode, int ioflags, const struct nfs_pgio_completion_ops *compl_ops) { - nfs_pageio_init(pgio, inode, &nfs_pageio_write_ops, compl_ops, - NFS_SERVER(inode)->wsize, ioflags);
fs/nfs/write.c void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio, · line 1291
Quoted 10 lines
fs/nfs/write.c +8
-1+struct nfs_server *server =NFS_SERVER (inode); +const struct nfs_pageio_ops *pg_ops = &nfs_pageio_write_ops; + +#ifdef CONFIG_NFS_V4_1 +if (server->pnfs_curr_ld) + pg_ops = server->pnfs_curr_ld->pg_write_ops; +#endif +nfs_pageio_init (pgio, inode, pg_ops, compl_ops, server->wsize, ioflags); } -EXPORT_SYMBOL_GPL (nfs_pageio_init_write);
I think we still need the EXPORT_SYMBOL_GPL() here. Compiling gives me:
ERROR: "nfs_pageio_init_read" [fs/nfs/nfsv4.ko] undefined!
ERROR: "nfs_pageio_init_write" [fs/nfs/nfsv4.ko] undefined!
Anna
Quoted 16 lines
fs/nfs/write.c +0
-0void nfs_pageio_reset_write_mds (struct nfs_pageio_descriptor *pgio) {include/linux/nfs_xdr.h +0
-2@@ -1467,8 +1467,6 @@ struct nfs_rpc_ops {int (*read_rpc_prepare)(struct rpc_task *,struct nfs_read_data *);int (*read_done) (struct rpc_task *,struct nfs_read_data *);void (*write_setup) (struct nfs_write_data *,struct rpc_message *); -void (*write_pageio_init)(struct nfs_pageio_descriptor *,struct inode *,int , -const struct nfs_pgio_completion_ops *);int (*write_rpc_prepare)(struct rpc_task *,struct nfs_write_data *);int (*write_done) (struct rpc_task *,struct nfs_write_data *);void (*commit_setup) (struct nfs_commit_data *,struct rpc_message *);
Quoted 7 lines · Anna Schumaker
Quoted 2 lines
}
-EXPORT_SYMBOL_GPL(nfs_pageio_init_write);I think we still need the
EXPORT_SYMBOL_GPL()here. Compiling gives me:ERROR: "
nfs_pageio_init_read" [fs/nfs/nfsv4.ko] undefined!
ERROR: "nfs_pageio_init_write" [fs/nfs/nfsv4.ko] undefined!
Oh right - I only tested built-in nfs. I have to say the amount of
fairly low-level interfaces exported from the various nfs modules make a bit of a mess..
Quoted 11 lines · Christoph Hellwig
Quoted 6 lines · Anna Schumaker
Quoted 2 lines
}
-EXPORT_SYMBOL_GPL(nfs_pageio_init_write);I think we still need the
EXPORT_SYMBOL_GPL()here. Compiling gives me:ERROR: "
nfs_pageio_init_read" [fs/nfs/nfsv4.ko] undefined!
ERROR: "nfs_pageio_init_write" [fs/nfs/nfsv4.ko] undefined!Oh right - I only tested built-in nfs. I have to say the amount of
fairly low-level interfaces exported from the various nfs modules make a bit of a mess..
I'm open to suggestions about how to clean it all up! Fewer EXPORT_SYMBOLS wouldn't be a bad thing (along with fewer ifdefs and fewer rpc ops ...)