diff options
Diffstat (limited to 'include/linux/nfs_page.h')
-rw-r--r-- | include/linux/nfs_page.h | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index ab465fe8c3d6..eac30d6bec17 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h | |||
@@ -19,12 +19,6 @@ | |||
19 | #include <linux/kref.h> | 19 | #include <linux/kref.h> |
20 | 20 | ||
21 | /* | 21 | /* |
22 | * Valid flags for the radix tree | ||
23 | */ | ||
24 | #define NFS_PAGE_TAG_LOCKED 0 | ||
25 | #define NFS_PAGE_TAG_COMMIT 1 | ||
26 | |||
27 | /* | ||
28 | * Valid flags for a dirty buffer | 22 | * Valid flags for a dirty buffer |
29 | */ | 23 | */ |
30 | enum { | 24 | enum { |
@@ -33,16 +27,13 @@ enum { | |||
33 | PG_CLEAN, | 27 | PG_CLEAN, |
34 | PG_NEED_COMMIT, | 28 | PG_NEED_COMMIT, |
35 | PG_NEED_RESCHED, | 29 | PG_NEED_RESCHED, |
36 | PG_PNFS_COMMIT, | ||
37 | PG_PARTIAL_READ_FAILED, | 30 | PG_PARTIAL_READ_FAILED, |
31 | PG_COMMIT_TO_DS, | ||
38 | }; | 32 | }; |
39 | 33 | ||
40 | struct nfs_inode; | 34 | struct nfs_inode; |
41 | struct nfs_page { | 35 | struct nfs_page { |
42 | union { | 36 | struct list_head wb_list; /* Defines state of page: */ |
43 | struct list_head wb_list; /* Defines state of page: */ | ||
44 | struct pnfs_layout_segment *wb_commit_lseg; /* Used when PG_PNFS_COMMIT set */ | ||
45 | }; | ||
46 | struct page *wb_page; /* page to read in/write out */ | 37 | struct page *wb_page; /* page to read in/write out */ |
47 | struct nfs_open_context *wb_context; /* File state context info */ | 38 | struct nfs_open_context *wb_context; /* File state context info */ |
48 | struct nfs_lock_context *wb_lock_context; /* lock context info */ | 39 | struct nfs_lock_context *wb_lock_context; /* lock context info */ |
@@ -90,8 +81,6 @@ extern struct nfs_page *nfs_create_request(struct nfs_open_context *ctx, | |||
90 | extern void nfs_release_request(struct nfs_page *req); | 81 | extern void nfs_release_request(struct nfs_page *req); |
91 | 82 | ||
92 | 83 | ||
93 | extern int nfs_scan_list(struct nfs_inode *nfsi, struct list_head *dst, | ||
94 | pgoff_t idx_start, unsigned int npages, int tag); | ||
95 | extern void nfs_pageio_init(struct nfs_pageio_descriptor *desc, | 84 | extern void nfs_pageio_init(struct nfs_pageio_descriptor *desc, |
96 | struct inode *inode, | 85 | struct inode *inode, |
97 | const struct nfs_pageio_ops *pg_ops, | 86 | const struct nfs_pageio_ops *pg_ops, |
@@ -106,8 +95,6 @@ extern bool nfs_generic_pg_test(struct nfs_pageio_descriptor *desc, | |||
106 | struct nfs_page *req); | 95 | struct nfs_page *req); |
107 | extern int nfs_wait_on_request(struct nfs_page *); | 96 | extern int nfs_wait_on_request(struct nfs_page *); |
108 | extern void nfs_unlock_request(struct nfs_page *req); | 97 | extern void nfs_unlock_request(struct nfs_page *req); |
109 | extern int nfs_set_page_tag_locked(struct nfs_page *req); | ||
110 | extern void nfs_clear_page_tag_locked(struct nfs_page *req); | ||
111 | 98 | ||
112 | /* | 99 | /* |
113 | * Lock the page of an asynchronous request without getting a new reference | 100 | * Lock the page of an asynchronous request without getting a new reference |
@@ -118,6 +105,16 @@ nfs_lock_request_dontget(struct nfs_page *req) | |||
118 | return !test_and_set_bit(PG_BUSY, &req->wb_flags); | 105 | return !test_and_set_bit(PG_BUSY, &req->wb_flags); |
119 | } | 106 | } |
120 | 107 | ||
108 | static inline int | ||
109 | nfs_lock_request(struct nfs_page *req) | ||
110 | { | ||
111 | if (test_and_set_bit(PG_BUSY, &req->wb_flags)) | ||
112 | return 0; | ||
113 | kref_get(&req->wb_kref); | ||
114 | return 1; | ||
115 | } | ||
116 | |||
117 | |||
121 | /** | 118 | /** |
122 | * nfs_list_add_request - Insert a request into a list | 119 | * nfs_list_add_request - Insert a request into a list |
123 | * @req: request | 120 | * @req: request |