diff options
Diffstat (limited to 'include/linux/backing-dev.h')
| -rw-r--r-- | include/linux/backing-dev.h | 53 |
1 files changed, 8 insertions, 45 deletions
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 5da6012b7a14..d94077fea1f8 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
| @@ -106,6 +106,8 @@ struct backing_dev_info { | |||
| 106 | #endif | 106 | #endif |
| 107 | }; | 107 | }; |
| 108 | 108 | ||
| 109 | struct backing_dev_info *inode_to_bdi(struct inode *inode); | ||
| 110 | |||
| 109 | int __must_check bdi_init(struct backing_dev_info *bdi); | 111 | int __must_check bdi_init(struct backing_dev_info *bdi); |
| 110 | void bdi_destroy(struct backing_dev_info *bdi); | 112 | void bdi_destroy(struct backing_dev_info *bdi); |
| 111 | 113 | ||
| @@ -114,7 +116,7 @@ int bdi_register(struct backing_dev_info *bdi, struct device *parent, | |||
| 114 | const char *fmt, ...); | 116 | const char *fmt, ...); |
| 115 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); | 117 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); |
| 116 | void bdi_unregister(struct backing_dev_info *bdi); | 118 | void bdi_unregister(struct backing_dev_info *bdi); |
| 117 | int __must_check bdi_setup_and_register(struct backing_dev_info *, char *, unsigned int); | 119 | int __must_check bdi_setup_and_register(struct backing_dev_info *, char *); |
| 118 | void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages, | 120 | void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages, |
| 119 | enum wb_reason reason); | 121 | enum wb_reason reason); |
| 120 | void bdi_start_background_writeback(struct backing_dev_info *bdi); | 122 | void bdi_start_background_writeback(struct backing_dev_info *bdi); |
| @@ -228,46 +230,17 @@ int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio); | |||
| 228 | * BDI_CAP_NO_ACCT_DIRTY: Dirty pages shouldn't contribute to accounting | 230 | * BDI_CAP_NO_ACCT_DIRTY: Dirty pages shouldn't contribute to accounting |
| 229 | * BDI_CAP_NO_WRITEBACK: Don't write pages back | 231 | * BDI_CAP_NO_WRITEBACK: Don't write pages back |
| 230 | * BDI_CAP_NO_ACCT_WB: Don't automatically account writeback pages | 232 | * BDI_CAP_NO_ACCT_WB: Don't automatically account writeback pages |
| 231 | * | ||
| 232 | * These flags let !MMU mmap() govern direct device mapping vs immediate | ||
| 233 | * copying more easily for MAP_PRIVATE, especially for ROM filesystems. | ||
| 234 | * | ||
| 235 | * BDI_CAP_MAP_COPY: Copy can be mapped (MAP_PRIVATE) | ||
| 236 | * BDI_CAP_MAP_DIRECT: Can be mapped directly (MAP_SHARED) | ||
| 237 | * BDI_CAP_READ_MAP: Can be mapped for reading | ||
| 238 | * BDI_CAP_WRITE_MAP: Can be mapped for writing | ||
| 239 | * BDI_CAP_EXEC_MAP: Can be mapped for execution | ||
| 240 | * | ||
| 241 | * BDI_CAP_SWAP_BACKED: Count shmem/tmpfs objects as swap-backed. | ||
| 242 | * | ||
| 243 | * BDI_CAP_STRICTLIMIT: Keep number of dirty pages below bdi threshold. | 233 | * BDI_CAP_STRICTLIMIT: Keep number of dirty pages below bdi threshold. |
| 244 | */ | 234 | */ |
| 245 | #define BDI_CAP_NO_ACCT_DIRTY 0x00000001 | 235 | #define BDI_CAP_NO_ACCT_DIRTY 0x00000001 |
| 246 | #define BDI_CAP_NO_WRITEBACK 0x00000002 | 236 | #define BDI_CAP_NO_WRITEBACK 0x00000002 |
| 247 | #define BDI_CAP_MAP_COPY 0x00000004 | 237 | #define BDI_CAP_NO_ACCT_WB 0x00000004 |
| 248 | #define BDI_CAP_MAP_DIRECT 0x00000008 | 238 | #define BDI_CAP_STABLE_WRITES 0x00000008 |
| 249 | #define BDI_CAP_READ_MAP 0x00000010 | 239 | #define BDI_CAP_STRICTLIMIT 0x00000010 |
| 250 | #define BDI_CAP_WRITE_MAP 0x00000020 | ||
| 251 | #define BDI_CAP_EXEC_MAP 0x00000040 | ||
| 252 | #define BDI_CAP_NO_ACCT_WB 0x00000080 | ||
| 253 | #define BDI_CAP_SWAP_BACKED 0x00000100 | ||
| 254 | #define BDI_CAP_STABLE_WRITES 0x00000200 | ||
| 255 | #define BDI_CAP_STRICTLIMIT 0x00000400 | ||
| 256 | |||
| 257 | #define BDI_CAP_VMFLAGS \ | ||
| 258 | (BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP) | ||
| 259 | 240 | ||
| 260 | #define BDI_CAP_NO_ACCT_AND_WRITEBACK \ | 241 | #define BDI_CAP_NO_ACCT_AND_WRITEBACK \ |
| 261 | (BDI_CAP_NO_WRITEBACK | BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_ACCT_WB) | 242 | (BDI_CAP_NO_WRITEBACK | BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_ACCT_WB) |
| 262 | 243 | ||
| 263 | #if defined(VM_MAYREAD) && \ | ||
| 264 | (BDI_CAP_READ_MAP != VM_MAYREAD || \ | ||
| 265 | BDI_CAP_WRITE_MAP != VM_MAYWRITE || \ | ||
| 266 | BDI_CAP_EXEC_MAP != VM_MAYEXEC) | ||
| 267 | #error please change backing_dev_info::capabilities flags | ||
| 268 | #endif | ||
| 269 | |||
| 270 | extern struct backing_dev_info default_backing_dev_info; | ||
| 271 | extern struct backing_dev_info noop_backing_dev_info; | 244 | extern struct backing_dev_info noop_backing_dev_info; |
| 272 | 245 | ||
| 273 | int writeback_in_progress(struct backing_dev_info *bdi); | 246 | int writeback_in_progress(struct backing_dev_info *bdi); |
| @@ -329,24 +302,14 @@ static inline bool bdi_cap_account_writeback(struct backing_dev_info *bdi) | |||
| 329 | BDI_CAP_NO_WRITEBACK)); | 302 | BDI_CAP_NO_WRITEBACK)); |
| 330 | } | 303 | } |
| 331 | 304 | ||
| 332 | static inline bool bdi_cap_swap_backed(struct backing_dev_info *bdi) | ||
| 333 | { | ||
| 334 | return bdi->capabilities & BDI_CAP_SWAP_BACKED; | ||
| 335 | } | ||
| 336 | |||
| 337 | static inline bool mapping_cap_writeback_dirty(struct address_space *mapping) | 305 | static inline bool mapping_cap_writeback_dirty(struct address_space *mapping) |
| 338 | { | 306 | { |
| 339 | return bdi_cap_writeback_dirty(mapping->backing_dev_info); | 307 | return bdi_cap_writeback_dirty(inode_to_bdi(mapping->host)); |
| 340 | } | 308 | } |
| 341 | 309 | ||
| 342 | static inline bool mapping_cap_account_dirty(struct address_space *mapping) | 310 | static inline bool mapping_cap_account_dirty(struct address_space *mapping) |
| 343 | { | 311 | { |
| 344 | return bdi_cap_account_dirty(mapping->backing_dev_info); | 312 | return bdi_cap_account_dirty(inode_to_bdi(mapping->host)); |
| 345 | } | ||
| 346 | |||
| 347 | static inline bool mapping_cap_swap_backed(struct address_space *mapping) | ||
| 348 | { | ||
| 349 | return bdi_cap_swap_backed(mapping->backing_dev_info); | ||
| 350 | } | 313 | } |
| 351 | 314 | ||
| 352 | static inline int bdi_sched_wait(void *word) | 315 | static inline int bdi_sched_wait(void *word) |
