diff options
author | Nick Piggin <npiggin@suse.de> | 2007-10-16 04:25:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-16 12:42:55 -0400 |
commit | 89e107877b65bf6eff1d63a1302dee9a091586f5 (patch) | |
tree | 8a120a04c46f19229d1cf9b9c546f1818cf84c44 /mm/filemap.c | |
parent | 7765ec26ae1c01bb29bedf910e4efcced8cc81d2 (diff) |
fs: new cont helpers
Rework the generic block "cont" routines to handle the new aops. Supporting
cont_prepare_write would take quite a lot of code to support, so remove it
instead (and we later convert all filesystems to use it).
write_begin gets passed AOP_FLAG_CONT_EXPAND when called from
generic_cont_expand, so filesystems can avoid the old hacks they used.
Signed-off-by: Nick Piggin <npiggin@suse.de>
Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/filemap.c')
-rw-r--r-- | mm/filemap.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index ca04226bf1de..195339b27e9a 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -1684,6 +1684,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, | |||
1684 | 1684 | ||
1685 | return copied; | 1685 | return copied; |
1686 | } | 1686 | } |
1687 | EXPORT_SYMBOL(iov_iter_copy_from_user_atomic); | ||
1687 | 1688 | ||
1688 | /* | 1689 | /* |
1689 | * This has the same sideeffects and return value as | 1690 | * This has the same sideeffects and return value as |
@@ -1710,6 +1711,7 @@ size_t iov_iter_copy_from_user(struct page *page, | |||
1710 | kunmap(page); | 1711 | kunmap(page); |
1711 | return copied; | 1712 | return copied; |
1712 | } | 1713 | } |
1714 | EXPORT_SYMBOL(iov_iter_copy_from_user); | ||
1713 | 1715 | ||
1714 | static void __iov_iter_advance_iov(struct iov_iter *i, size_t bytes) | 1716 | static void __iov_iter_advance_iov(struct iov_iter *i, size_t bytes) |
1715 | { | 1717 | { |
@@ -1741,6 +1743,7 @@ void iov_iter_advance(struct iov_iter *i, size_t bytes) | |||
1741 | __iov_iter_advance_iov(i, bytes); | 1743 | __iov_iter_advance_iov(i, bytes); |
1742 | i->count -= bytes; | 1744 | i->count -= bytes; |
1743 | } | 1745 | } |
1746 | EXPORT_SYMBOL(iov_iter_advance); | ||
1744 | 1747 | ||
1745 | /* | 1748 | /* |
1746 | * Fault in the first iovec of the given iov_iter, to a maximum length | 1749 | * Fault in the first iovec of the given iov_iter, to a maximum length |
@@ -1757,6 +1760,7 @@ int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes) | |||
1757 | bytes = min(bytes, i->iov->iov_len - i->iov_offset); | 1760 | bytes = min(bytes, i->iov->iov_len - i->iov_offset); |
1758 | return fault_in_pages_readable(buf, bytes); | 1761 | return fault_in_pages_readable(buf, bytes); |
1759 | } | 1762 | } |
1763 | EXPORT_SYMBOL(iov_iter_fault_in_readable); | ||
1760 | 1764 | ||
1761 | /* | 1765 | /* |
1762 | * Return the count of just the current iov_iter segment. | 1766 | * Return the count of just the current iov_iter segment. |
@@ -1769,6 +1773,7 @@ size_t iov_iter_single_seg_count(struct iov_iter *i) | |||
1769 | else | 1773 | else |
1770 | return min(i->count, iov->iov_len - i->iov_offset); | 1774 | return min(i->count, iov->iov_len - i->iov_offset); |
1771 | } | 1775 | } |
1776 | EXPORT_SYMBOL(iov_iter_single_seg_count); | ||
1772 | 1777 | ||
1773 | /* | 1778 | /* |
1774 | * Performs necessary checks before doing a write | 1779 | * Performs necessary checks before doing a write |