.. | .. |
---|
66 | 66 | struct pnfs_layout_segment { |
---|
67 | 67 | struct list_head pls_list; |
---|
68 | 68 | struct list_head pls_lc_list; |
---|
| 69 | + struct list_head pls_commits; |
---|
69 | 70 | struct pnfs_layout_range pls_range; |
---|
70 | 71 | refcount_t pls_refcount; |
---|
71 | 72 | u32 pls_seq; |
---|
.. | .. |
---|
79 | 80 | PNFS_TRY_AGAIN = 2, |
---|
80 | 81 | }; |
---|
81 | 82 | |
---|
| 83 | +/* error codes for internal use */ |
---|
| 84 | +#define NFS4ERR_RESET_TO_MDS 12001 |
---|
| 85 | +#define NFS4ERR_RESET_TO_PNFS 12002 |
---|
| 86 | + |
---|
82 | 87 | #ifdef CONFIG_NFS_V4_1 |
---|
83 | 88 | |
---|
84 | 89 | #define LAYOUT_NFSV4_1_MODULE_PREFIX "nfs-layouttype4" |
---|
.. | .. |
---|
91 | 96 | #define NFS4_DEF_DS_RETRANS 5 |
---|
92 | 97 | #define PNFS_DEVICE_RETRY_TIMEOUT (120*HZ) |
---|
93 | 98 | |
---|
94 | | -/* error codes for internal use */ |
---|
95 | | -#define NFS4ERR_RESET_TO_MDS 12001 |
---|
96 | | -#define NFS4ERR_RESET_TO_PNFS 12002 |
---|
97 | | - |
---|
98 | 99 | enum { |
---|
99 | 100 | NFS_LAYOUT_RO_FAILED = 0, /* get ro layout failed stop trying */ |
---|
100 | 101 | NFS_LAYOUT_RW_FAILED, /* get rw layout failed stop trying */ |
---|
.. | .. |
---|
105 | 106 | NFS_LAYOUT_INVALID_STID, /* layout stateid id is invalid */ |
---|
106 | 107 | NFS_LAYOUT_FIRST_LAYOUTGET, /* Serialize first layoutget */ |
---|
107 | 108 | NFS_LAYOUT_INODE_FREEING, /* The inode is being freed */ |
---|
| 109 | + NFS_LAYOUT_HASHED, /* The layout visible */ |
---|
| 110 | + NFS_LAYOUT_DRAIN, |
---|
108 | 111 | }; |
---|
109 | 112 | |
---|
110 | 113 | enum layoutdriver_policy_flags { |
---|
.. | .. |
---|
126 | 129 | struct module *owner; |
---|
127 | 130 | unsigned flags; |
---|
128 | 131 | unsigned max_deviceinfo_size; |
---|
| 132 | + unsigned max_layoutget_response; |
---|
129 | 133 | |
---|
130 | 134 | int (*set_layoutdriver) (struct nfs_server *, const struct nfs_fh *); |
---|
131 | 135 | int (*clear_layoutdriver) (struct nfs_server *); |
---|
.. | .. |
---|
147 | 151 | const struct nfs_pageio_ops *pg_write_ops; |
---|
148 | 152 | |
---|
149 | 153 | struct pnfs_ds_commit_info *(*get_ds_info) (struct inode *inode); |
---|
150 | | - void (*mark_request_commit) (struct nfs_page *req, |
---|
151 | | - struct pnfs_layout_segment *lseg, |
---|
152 | | - struct nfs_commit_info *cinfo, |
---|
153 | | - u32 ds_commit_idx); |
---|
154 | | - void (*clear_request_commit) (struct nfs_page *req, |
---|
155 | | - struct nfs_commit_info *cinfo); |
---|
156 | | - int (*scan_commit_lists) (struct nfs_commit_info *cinfo, |
---|
157 | | - int max); |
---|
158 | | - void (*recover_commit_reqs) (struct list_head *list, |
---|
159 | | - struct nfs_commit_info *cinfo); |
---|
160 | | - struct nfs_page * (*search_commit_reqs)(struct nfs_commit_info *cinfo, |
---|
161 | | - struct page *page); |
---|
162 | | - int (*commit_pagelist)(struct inode *inode, |
---|
163 | | - struct list_head *mds_pages, |
---|
164 | | - int how, |
---|
165 | | - struct nfs_commit_info *cinfo); |
---|
166 | 154 | |
---|
167 | 155 | int (*sync)(struct inode *inode, bool datasync); |
---|
168 | 156 | |
---|
.. | .. |
---|
185 | 173 | int (*prepare_layoutstats) (struct nfs42_layoutstat_args *args); |
---|
186 | 174 | }; |
---|
187 | 175 | |
---|
| 176 | +struct pnfs_commit_ops { |
---|
| 177 | + void (*setup_ds_info)(struct pnfs_ds_commit_info *, |
---|
| 178 | + struct pnfs_layout_segment *); |
---|
| 179 | + void (*release_ds_info)(struct pnfs_ds_commit_info *, |
---|
| 180 | + struct inode *inode); |
---|
| 181 | + int (*commit_pagelist)(struct inode *inode, |
---|
| 182 | + struct list_head *mds_pages, |
---|
| 183 | + int how, |
---|
| 184 | + struct nfs_commit_info *cinfo); |
---|
| 185 | + void (*mark_request_commit) (struct nfs_page *req, |
---|
| 186 | + struct pnfs_layout_segment *lseg, |
---|
| 187 | + struct nfs_commit_info *cinfo, |
---|
| 188 | + u32 ds_commit_idx); |
---|
| 189 | + void (*clear_request_commit) (struct nfs_page *req, |
---|
| 190 | + struct nfs_commit_info *cinfo); |
---|
| 191 | + int (*scan_commit_lists) (struct nfs_commit_info *cinfo, |
---|
| 192 | + int max); |
---|
| 193 | + void (*recover_commit_reqs) (struct list_head *list, |
---|
| 194 | + struct nfs_commit_info *cinfo); |
---|
| 195 | + struct nfs_page * (*search_commit_reqs)(struct nfs_commit_info *cinfo, |
---|
| 196 | + struct page *page); |
---|
| 197 | +}; |
---|
| 198 | + |
---|
188 | 199 | struct pnfs_layout_hdr { |
---|
189 | 200 | refcount_t plh_refcount; |
---|
190 | 201 | atomic_t plh_outstanding; /* number of RPCs out */ |
---|
.. | .. |
---|
200 | 211 | u32 plh_return_seq; |
---|
201 | 212 | enum pnfs_iomode plh_return_iomode; |
---|
202 | 213 | loff_t plh_lwb; /* last write byte for layoutcommit */ |
---|
203 | | - struct rpc_cred *plh_lc_cred; /* layoutcommit cred */ |
---|
| 214 | + const struct cred *plh_lc_cred; /* layoutcommit cred */ |
---|
204 | 215 | struct inode *plh_inode; |
---|
| 216 | + struct rcu_head plh_rcu; |
---|
205 | 217 | }; |
---|
206 | 218 | |
---|
207 | 219 | struct pnfs_device { |
---|
.. | .. |
---|
225 | 237 | |
---|
226 | 238 | extern int pnfs_register_layoutdriver(struct pnfs_layoutdriver_type *); |
---|
227 | 239 | extern void pnfs_unregister_layoutdriver(struct pnfs_layoutdriver_type *); |
---|
| 240 | +extern const struct pnfs_layoutdriver_type *pnfs_find_layoutdriver(u32 id); |
---|
| 241 | +extern void pnfs_put_layoutdriver(const struct pnfs_layoutdriver_type *ld); |
---|
228 | 242 | |
---|
229 | 243 | /* nfs4proc.c */ |
---|
230 | 244 | extern size_t max_response_pages(struct nfs_server *server); |
---|
231 | 245 | extern int nfs4_proc_getdeviceinfo(struct nfs_server *server, |
---|
232 | 246 | struct pnfs_device *dev, |
---|
233 | | - struct rpc_cred *cred); |
---|
| 247 | + const struct cred *cred); |
---|
234 | 248 | extern struct pnfs_layout_segment* nfs4_proc_layoutget(struct nfs4_layoutget *lgp, long *timeout); |
---|
235 | 249 | extern int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp, bool sync); |
---|
236 | 250 | |
---|
.. | .. |
---|
241 | 255 | void set_pnfs_layoutdriver(struct nfs_server *, const struct nfs_fh *, struct nfs_fsinfo *); |
---|
242 | 256 | void unset_pnfs_layoutdriver(struct nfs_server *); |
---|
243 | 257 | void pnfs_generic_pg_check_layout(struct nfs_pageio_descriptor *pgio); |
---|
| 258 | +void pnfs_generic_pg_check_range(struct nfs_pageio_descriptor *pgio, struct nfs_page *req); |
---|
244 | 259 | void pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *, struct nfs_page *); |
---|
245 | 260 | int pnfs_generic_pg_readpages(struct nfs_pageio_descriptor *desc); |
---|
246 | 261 | void pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio, |
---|
.. | .. |
---|
261 | 276 | bool is_recall); |
---|
262 | 277 | int pnfs_destroy_layouts_byclid(struct nfs_client *clp, |
---|
263 | 278 | bool is_recall); |
---|
264 | | -bool nfs4_layoutreturn_refresh_stateid(nfs4_stateid *dst, |
---|
| 279 | +bool nfs4_layout_refresh_old_stateid(nfs4_stateid *dst, |
---|
265 | 280 | struct pnfs_layout_range *dst_range, |
---|
266 | 281 | struct inode *inode); |
---|
267 | 282 | void pnfs_put_layout_hdr(struct pnfs_layout_hdr *lo); |
---|
268 | 283 | void pnfs_set_layout_stateid(struct pnfs_layout_hdr *lo, |
---|
269 | 284 | const nfs4_stateid *new, |
---|
| 285 | + const struct cred *cred, |
---|
270 | 286 | bool update_barrier); |
---|
271 | 287 | int pnfs_mark_matching_lsegs_invalid(struct pnfs_layout_hdr *lo, |
---|
272 | 288 | struct list_head *tmp_list, |
---|
.. | .. |
---|
281 | 297 | bool pnfs_roc(struct inode *ino, |
---|
282 | 298 | struct nfs4_layoutreturn_args *args, |
---|
283 | 299 | struct nfs4_layoutreturn_res *res, |
---|
284 | | - const struct rpc_cred *cred); |
---|
| 300 | + const struct cred *cred); |
---|
| 301 | +int pnfs_roc_done(struct rpc_task *task, struct nfs4_layoutreturn_args **argpp, |
---|
| 302 | + struct nfs4_layoutreturn_res **respp, int *ret); |
---|
285 | 303 | void pnfs_roc_release(struct nfs4_layoutreturn_args *args, |
---|
286 | 304 | struct nfs4_layoutreturn_res *res, |
---|
287 | 305 | int ret); |
---|
.. | .. |
---|
295 | 313 | int pnfs_commit_and_return_layout(struct inode *); |
---|
296 | 314 | void pnfs_ld_write_done(struct nfs_pgio_header *); |
---|
297 | 315 | void pnfs_ld_read_done(struct nfs_pgio_header *); |
---|
298 | | -void pnfs_read_resend_pnfs(struct nfs_pgio_header *); |
---|
| 316 | +void pnfs_read_resend_pnfs(struct nfs_pgio_header *, unsigned int mirror_idx); |
---|
299 | 317 | struct pnfs_layout_segment *pnfs_update_layout(struct inode *ino, |
---|
300 | 318 | struct nfs_open_context *ctx, |
---|
301 | 319 | loff_t pos, |
---|
.. | .. |
---|
322 | 340 | struct nfs4_threshold *pnfs_mdsthreshold_alloc(void); |
---|
323 | 341 | void pnfs_error_mark_layout_for_return(struct inode *inode, |
---|
324 | 342 | struct pnfs_layout_segment *lseg); |
---|
| 343 | +void pnfs_layout_return_unused_byclid(struct nfs_client *clp, |
---|
| 344 | + enum pnfs_iomode iomode); |
---|
| 345 | + |
---|
325 | 346 | /* nfs4_deviceid_flags */ |
---|
326 | 347 | enum { |
---|
327 | 348 | NFS_DEVICEID_INVALID = 0, /* set when MDS clientid recalled */ |
---|
.. | .. |
---|
344 | 365 | |
---|
345 | 366 | struct nfs4_deviceid_node * |
---|
346 | 367 | nfs4_find_get_deviceid(struct nfs_server *server, |
---|
347 | | - const struct nfs4_deviceid *id, struct rpc_cred *cred, |
---|
| 368 | + const struct nfs4_deviceid *id, const struct cred *cred, |
---|
348 | 369 | gfp_t gfp_mask); |
---|
349 | 370 | void nfs4_delete_deviceid(const struct pnfs_layoutdriver_type *, const struct nfs_client *, const struct nfs4_deviceid *); |
---|
350 | 371 | void nfs4_init_deviceid_node(struct nfs4_deviceid_node *, struct nfs_server *, |
---|
351 | 372 | const struct nfs4_deviceid *); |
---|
352 | 373 | bool nfs4_put_deviceid_node(struct nfs4_deviceid_node *); |
---|
| 374 | +void nfs4_mark_deviceid_available(struct nfs4_deviceid_node *node); |
---|
353 | 375 | void nfs4_mark_deviceid_unavailable(struct nfs4_deviceid_node *node); |
---|
354 | 376 | bool nfs4_test_deviceid_unavailable(struct nfs4_deviceid_node *node); |
---|
355 | 377 | void nfs4_deviceid_purge_client(const struct nfs_client *); |
---|
356 | 378 | |
---|
357 | 379 | /* pnfs_nfs.c */ |
---|
| 380 | +struct pnfs_commit_array *pnfs_alloc_commit_array(size_t n, gfp_t gfp_flags); |
---|
| 381 | +void pnfs_free_commit_array(struct pnfs_commit_array *p); |
---|
| 382 | +struct pnfs_commit_array *pnfs_add_commit_array(struct pnfs_ds_commit_info *, |
---|
| 383 | + struct pnfs_commit_array *, |
---|
| 384 | + struct pnfs_layout_segment *); |
---|
| 385 | + |
---|
| 386 | +void pnfs_generic_ds_cinfo_release_lseg(struct pnfs_ds_commit_info *fl_cinfo, |
---|
| 387 | + struct pnfs_layout_segment *lseg); |
---|
| 388 | +void pnfs_generic_ds_cinfo_destroy(struct pnfs_ds_commit_info *fl_cinfo); |
---|
| 389 | + |
---|
358 | 390 | void pnfs_generic_clear_request_commit(struct nfs_page *req, |
---|
359 | 391 | struct nfs_commit_info *cinfo); |
---|
360 | 392 | void pnfs_generic_commit_release(void *calldata); |
---|
.. | .. |
---|
362 | 394 | void pnfs_generic_rw_release(void *data); |
---|
363 | 395 | void pnfs_generic_recover_commit_reqs(struct list_head *dst, |
---|
364 | 396 | struct nfs_commit_info *cinfo); |
---|
| 397 | +struct nfs_page *pnfs_generic_search_commit_reqs(struct nfs_commit_info *cinfo, |
---|
| 398 | + struct page *page); |
---|
365 | 399 | int pnfs_generic_commit_pagelist(struct inode *inode, |
---|
366 | 400 | struct list_head *mds_pages, |
---|
367 | 401 | int how, |
---|
.. | .. |
---|
433 | 467 | pnfs_commit_list(struct inode *inode, struct list_head *mds_pages, int how, |
---|
434 | 468 | struct nfs_commit_info *cinfo) |
---|
435 | 469 | { |
---|
436 | | - if (cinfo->ds == NULL || cinfo->ds->ncommitting == 0) |
---|
| 470 | + struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds; |
---|
| 471 | + |
---|
| 472 | + if (fl_cinfo == NULL || fl_cinfo->ncommitting == 0) |
---|
437 | 473 | return PNFS_NOT_ATTEMPTED; |
---|
438 | | - return NFS_SERVER(inode)->pnfs_curr_ld->commit_pagelist(inode, mds_pages, how, cinfo); |
---|
| 474 | + return fl_cinfo->ops->commit_pagelist(inode, mds_pages, how, cinfo); |
---|
439 | 475 | } |
---|
440 | 476 | |
---|
441 | 477 | static inline struct pnfs_ds_commit_info * |
---|
.. | .. |
---|
449 | 485 | } |
---|
450 | 486 | |
---|
451 | 487 | static inline void |
---|
| 488 | +pnfs_init_ds_commit_info_ops(struct pnfs_ds_commit_info *fl_cinfo, struct inode *inode) |
---|
| 489 | +{ |
---|
| 490 | + struct pnfs_ds_commit_info *inode_cinfo = pnfs_get_ds_info(inode); |
---|
| 491 | + if (inode_cinfo != NULL) |
---|
| 492 | + fl_cinfo->ops = inode_cinfo->ops; |
---|
| 493 | +} |
---|
| 494 | + |
---|
| 495 | +static inline void |
---|
| 496 | +pnfs_init_ds_commit_info(struct pnfs_ds_commit_info *fl_cinfo) |
---|
| 497 | +{ |
---|
| 498 | + INIT_LIST_HEAD(&fl_cinfo->commits); |
---|
| 499 | + fl_cinfo->ops = NULL; |
---|
| 500 | +} |
---|
| 501 | + |
---|
| 502 | +static inline void |
---|
| 503 | +pnfs_release_ds_info(struct pnfs_ds_commit_info *fl_cinfo, struct inode *inode) |
---|
| 504 | +{ |
---|
| 505 | + if (fl_cinfo->ops != NULL && fl_cinfo->ops->release_ds_info != NULL) |
---|
| 506 | + fl_cinfo->ops->release_ds_info(fl_cinfo, inode); |
---|
| 507 | +} |
---|
| 508 | + |
---|
| 509 | +static inline void |
---|
452 | 510 | pnfs_generic_mark_devid_invalid(struct nfs4_deviceid_node *node) |
---|
453 | 511 | { |
---|
454 | 512 | set_bit(NFS_DEVICEID_INVALID, &node->flags); |
---|
.. | .. |
---|
458 | 516 | pnfs_mark_request_commit(struct nfs_page *req, struct pnfs_layout_segment *lseg, |
---|
459 | 517 | struct nfs_commit_info *cinfo, u32 ds_commit_idx) |
---|
460 | 518 | { |
---|
461 | | - struct inode *inode = d_inode(req->wb_context->dentry); |
---|
462 | | - struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld; |
---|
| 519 | + struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds; |
---|
463 | 520 | |
---|
464 | | - if (lseg == NULL || ld->mark_request_commit == NULL) |
---|
| 521 | + if (!lseg || !fl_cinfo->ops || !fl_cinfo->ops->mark_request_commit) |
---|
465 | 522 | return false; |
---|
466 | | - ld->mark_request_commit(req, lseg, cinfo, ds_commit_idx); |
---|
| 523 | + fl_cinfo->ops->mark_request_commit(req, lseg, cinfo, ds_commit_idx); |
---|
467 | 524 | return true; |
---|
468 | 525 | } |
---|
469 | 526 | |
---|
470 | 527 | static inline bool |
---|
471 | 528 | pnfs_clear_request_commit(struct nfs_page *req, struct nfs_commit_info *cinfo) |
---|
472 | 529 | { |
---|
473 | | - struct inode *inode = d_inode(req->wb_context->dentry); |
---|
474 | | - struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld; |
---|
| 530 | + struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds; |
---|
475 | 531 | |
---|
476 | | - if (ld == NULL || ld->clear_request_commit == NULL) |
---|
| 532 | + if (!fl_cinfo || !fl_cinfo->ops || !fl_cinfo->ops->clear_request_commit) |
---|
477 | 533 | return false; |
---|
478 | | - ld->clear_request_commit(req, cinfo); |
---|
| 534 | + fl_cinfo->ops->clear_request_commit(req, cinfo); |
---|
479 | 535 | return true; |
---|
480 | 536 | } |
---|
481 | 537 | |
---|
.. | .. |
---|
483 | 539 | pnfs_scan_commit_lists(struct inode *inode, struct nfs_commit_info *cinfo, |
---|
484 | 540 | int max) |
---|
485 | 541 | { |
---|
486 | | - if (cinfo->ds == NULL || cinfo->ds->nwritten == 0) |
---|
| 542 | + struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds; |
---|
| 543 | + |
---|
| 544 | + if (!fl_cinfo || fl_cinfo->nwritten == 0) |
---|
487 | 545 | return 0; |
---|
488 | | - else |
---|
489 | | - return NFS_SERVER(inode)->pnfs_curr_ld->scan_commit_lists(cinfo, max); |
---|
| 546 | + return fl_cinfo->ops->scan_commit_lists(cinfo, max); |
---|
| 547 | +} |
---|
| 548 | + |
---|
| 549 | +static inline void |
---|
| 550 | +pnfs_recover_commit_reqs(struct list_head *head, struct nfs_commit_info *cinfo) |
---|
| 551 | +{ |
---|
| 552 | + struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds; |
---|
| 553 | + |
---|
| 554 | + if (fl_cinfo && fl_cinfo->nwritten != 0) |
---|
| 555 | + fl_cinfo->ops->recover_commit_reqs(head, cinfo); |
---|
490 | 556 | } |
---|
491 | 557 | |
---|
492 | 558 | static inline struct nfs_page * |
---|
493 | 559 | pnfs_search_commit_reqs(struct inode *inode, struct nfs_commit_info *cinfo, |
---|
494 | 560 | struct page *page) |
---|
495 | 561 | { |
---|
496 | | - struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld; |
---|
| 562 | + struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds; |
---|
497 | 563 | |
---|
498 | | - if (ld == NULL || ld->search_commit_reqs == NULL) |
---|
| 564 | + if (!fl_cinfo->ops || !fl_cinfo->ops->search_commit_reqs) |
---|
499 | 565 | return NULL; |
---|
500 | | - return ld->search_commit_reqs(cinfo, page); |
---|
| 566 | + return fl_cinfo->ops->search_commit_reqs(cinfo, page); |
---|
501 | 567 | } |
---|
502 | 568 | |
---|
503 | 569 | /* Should the pNFS client commit and return the layout upon a setattr */ |
---|
.. | .. |
---|
699 | 765 | pnfs_roc(struct inode *ino, |
---|
700 | 766 | struct nfs4_layoutreturn_args *args, |
---|
701 | 767 | struct nfs4_layoutreturn_res *res, |
---|
702 | | - const struct rpc_cred *cred) |
---|
| 768 | + const struct cred *cred) |
---|
703 | 769 | { |
---|
704 | 770 | return false; |
---|
| 771 | +} |
---|
| 772 | + |
---|
| 773 | +static inline int |
---|
| 774 | +pnfs_roc_done(struct rpc_task *task, |
---|
| 775 | + struct nfs4_layoutreturn_args **argpp, |
---|
| 776 | + struct nfs4_layoutreturn_res **respp, |
---|
| 777 | + int *ret) |
---|
| 778 | +{ |
---|
| 779 | + return 0; |
---|
705 | 780 | } |
---|
706 | 781 | |
---|
707 | 782 | static inline void |
---|
.. | .. |
---|
740 | 815 | return NULL; |
---|
741 | 816 | } |
---|
742 | 817 | |
---|
| 818 | +static inline void |
---|
| 819 | +pnfs_init_ds_commit_info_ops(struct pnfs_ds_commit_info *fl_cinfo, struct inode *inode) |
---|
| 820 | +{ |
---|
| 821 | +} |
---|
| 822 | + |
---|
| 823 | +static inline void |
---|
| 824 | +pnfs_init_ds_commit_info(struct pnfs_ds_commit_info *fl_cinfo) |
---|
| 825 | +{ |
---|
| 826 | +} |
---|
| 827 | + |
---|
| 828 | +static inline void |
---|
| 829 | +pnfs_release_ds_info(struct pnfs_ds_commit_info *fl_cinfo, struct inode *inode) |
---|
| 830 | +{ |
---|
| 831 | +} |
---|
| 832 | + |
---|
743 | 833 | static inline bool |
---|
744 | 834 | pnfs_mark_request_commit(struct nfs_page *req, struct pnfs_layout_segment *lseg, |
---|
745 | 835 | struct nfs_commit_info *cinfo, u32 ds_commit_idx) |
---|
.. | .. |
---|
758 | 848 | int max) |
---|
759 | 849 | { |
---|
760 | 850 | return 0; |
---|
| 851 | +} |
---|
| 852 | + |
---|
| 853 | +static inline void |
---|
| 854 | +pnfs_recover_commit_reqs(struct list_head *head, struct nfs_commit_info *cinfo) |
---|
| 855 | +{ |
---|
761 | 856 | } |
---|
762 | 857 | |
---|
763 | 858 | static inline struct nfs_page * |
---|
.. | .. |
---|
788 | 883 | { |
---|
789 | 884 | } |
---|
790 | 885 | |
---|
791 | | -static inline bool nfs4_layoutreturn_refresh_stateid(nfs4_stateid *dst, |
---|
| 886 | +static inline bool nfs4_layout_refresh_old_stateid(nfs4_stateid *dst, |
---|
792 | 887 | struct pnfs_layout_range *dst_range, |
---|
793 | 888 | struct inode *inode) |
---|
794 | 889 | { |
---|