diff options
author | Anton Altaparmakov <aia21@cantab.net> | 2005-10-11 09:54:42 -0400 |
---|---|---|
committer | Anton Altaparmakov <aia21@cantab.net> | 2005-10-11 09:54:42 -0400 |
commit | 29b8990513b077dc388b0756acd31465e5c21441 (patch) | |
tree | b7de34b7cf3c33d99af1579433f7e2b66a4cd37f | |
parent | 29d8699ebb1e8948a612306c69e6d9c4ef23342f (diff) |
NTFS: In attrib.c::ntfs_attr_set() call balance_dirty_pages_ratelimited()
and cond_resched() in the main loop as we could be dirtying a lot of
pages and this ensures we play nice with the VM and the system as a
whole.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
-rw-r--r-- | fs/ntfs/ChangeLog | 4 | ||||
-rw-r--r-- | fs/ntfs/attrib.c | 4 | ||||
-rw-r--r-- | fs/ntfs/malloc.h | 3 |
3 files changed, 9 insertions, 2 deletions
diff --git a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog index 9f4674a026f2..3b8ff2318085 100644 --- a/fs/ntfs/ChangeLog +++ b/fs/ntfs/ChangeLog | |||
@@ -57,6 +57,10 @@ ToDo/Notes: | |||
57 | uncompressed and unencrypted files are supported. Also, there is | 57 | uncompressed and unencrypted files are supported. Also, there is |
58 | only very limited support for highly fragmented files (the ones whose | 58 | only very limited support for highly fragmented files (the ones whose |
59 | $DATA attribute is split into multiple attribute extents). | 59 | $DATA attribute is split into multiple attribute extents). |
60 | - In attrib.c::ntfs_attr_set() call balance_dirty_pages_ratelimited() | ||
61 | and cond_resched() in the main loop as we could be dirtying a lot of | ||
62 | pages and this ensures we play nice with the VM and the system as a | ||
63 | whole. | ||
60 | 64 | ||
61 | 2.1.24 - Lots of bug fixes and support more clean journal states. | 65 | 2.1.24 - Lots of bug fixes and support more clean journal states. |
62 | 66 | ||
diff --git a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c index bc25e88ad468..338e47144fc9 100644 --- a/fs/ntfs/attrib.c +++ b/fs/ntfs/attrib.c | |||
@@ -21,7 +21,9 @@ | |||
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <linux/buffer_head.h> | 23 | #include <linux/buffer_head.h> |
24 | #include <linux/sched.h> | ||
24 | #include <linux/swap.h> | 25 | #include <linux/swap.h> |
26 | #include <linux/writeback.h> | ||
25 | 27 | ||
26 | #include "attrib.h" | 28 | #include "attrib.h" |
27 | #include "debug.h" | 29 | #include "debug.h" |
@@ -2590,6 +2592,8 @@ int ntfs_attr_set(ntfs_inode *ni, const s64 ofs, const s64 cnt, const u8 val) | |||
2590 | /* Finally unlock and release the page. */ | 2592 | /* Finally unlock and release the page. */ |
2591 | unlock_page(page); | 2593 | unlock_page(page); |
2592 | page_cache_release(page); | 2594 | page_cache_release(page); |
2595 | balance_dirty_pages_ratelimited(mapping); | ||
2596 | cond_resched(); | ||
2593 | } | 2597 | } |
2594 | /* If there is a last partial page, need to do it the slow way. */ | 2598 | /* If there is a last partial page, need to do it the slow way. */ |
2595 | if (end_ofs) { | 2599 | if (end_ofs) { |
diff --git a/fs/ntfs/malloc.h b/fs/ntfs/malloc.h index 590887b943f5..e38e402e4103 100644 --- a/fs/ntfs/malloc.h +++ b/fs/ntfs/malloc.h | |||
@@ -39,8 +39,7 @@ | |||
39 | * If there was insufficient memory to complete the request, return NULL. | 39 | * If there was insufficient memory to complete the request, return NULL. |
40 | * Depending on @gfp_mask the allocation may be guaranteed to succeed. | 40 | * Depending on @gfp_mask the allocation may be guaranteed to succeed. |
41 | */ | 41 | */ |
42 | static inline void *__ntfs_malloc(unsigned long size, | 42 | static inline void *__ntfs_malloc(unsigned long size, gfp_t gfp_mask) |
43 | gfp_t gfp_mask) | ||
44 | { | 43 | { |
45 | if (likely(size <= PAGE_SIZE)) { | 44 | if (likely(size <= PAGE_SIZE)) { |
46 | BUG_ON(!size); | 45 | BUG_ON(!size); |