diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/pagemap.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index b4def5e083ed..8a83537d6978 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/compiler.h> | 11 | #include <linux/compiler.h> |
12 | #include <asm/uaccess.h> | 12 | #include <asm/uaccess.h> |
13 | #include <linux/gfp.h> | 13 | #include <linux/gfp.h> |
14 | #include <linux/bitops.h> | ||
14 | 15 | ||
15 | /* | 16 | /* |
16 | * Bits in mapping->flags. The lower __GFP_BITS_SHIFT bits are the page | 17 | * Bits in mapping->flags. The lower __GFP_BITS_SHIFT bits are the page |
@@ -19,6 +20,16 @@ | |||
19 | #define AS_EIO (__GFP_BITS_SHIFT + 0) /* IO error on async write */ | 20 | #define AS_EIO (__GFP_BITS_SHIFT + 0) /* IO error on async write */ |
20 | #define AS_ENOSPC (__GFP_BITS_SHIFT + 1) /* ENOSPC on async write */ | 21 | #define AS_ENOSPC (__GFP_BITS_SHIFT + 1) /* ENOSPC on async write */ |
21 | 22 | ||
23 | static inline void mapping_set_error(struct address_space *mapping, int error) | ||
24 | { | ||
25 | if (error) { | ||
26 | if (error == -ENOSPC) | ||
27 | set_bit(AS_ENOSPC, &mapping->flags); | ||
28 | else | ||
29 | set_bit(AS_EIO, &mapping->flags); | ||
30 | } | ||
31 | } | ||
32 | |||
22 | static inline gfp_t mapping_gfp_mask(struct address_space * mapping) | 33 | static inline gfp_t mapping_gfp_mask(struct address_space * mapping) |
23 | { | 34 | { |
24 | return (__force gfp_t)mapping->flags & __GFP_BITS_MASK; | 35 | return (__force gfp_t)mapping->flags & __GFP_BITS_MASK; |