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>
This commit is contained in:
Anton Altaparmakov
2005-10-11 14:54:42 +01:00
parent 29d8699ebb
commit 29b8990513
3 changed files with 9 additions and 2 deletions

View File

@@ -57,6 +57,10 @@ ToDo/Notes:
uncompressed and unencrypted files are supported. Also, there is uncompressed and unencrypted files are supported. Also, there is
only very limited support for highly fragmented files (the ones whose only very limited support for highly fragmented files (the ones whose
$DATA attribute is split into multiple attribute extents). $DATA attribute is split into multiple attribute extents).
- 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.
2.1.24 - Lots of bug fixes and support more clean journal states. 2.1.24 - Lots of bug fixes and support more clean journal states.

View File

@@ -21,7 +21,9 @@
*/ */
#include <linux/buffer_head.h> #include <linux/buffer_head.h>
#include <linux/sched.h>
#include <linux/swap.h> #include <linux/swap.h>
#include <linux/writeback.h>
#include "attrib.h" #include "attrib.h"
#include "debug.h" #include "debug.h"
@@ -2590,6 +2592,8 @@ int ntfs_attr_set(ntfs_inode *ni, const s64 ofs, const s64 cnt, const u8 val)
/* Finally unlock and release the page. */ /* Finally unlock and release the page. */
unlock_page(page); unlock_page(page);
page_cache_release(page); page_cache_release(page);
balance_dirty_pages_ratelimited(mapping);
cond_resched();
} }
/* If there is a last partial page, need to do it the slow way. */ /* If there is a last partial page, need to do it the slow way. */
if (end_ofs) { if (end_ofs) {

View File

@@ -39,8 +39,7 @@
* If there was insufficient memory to complete the request, return NULL. * If there was insufficient memory to complete the request, return NULL.
* Depending on @gfp_mask the allocation may be guaranteed to succeed. * Depending on @gfp_mask the allocation may be guaranteed to succeed.
*/ */
static inline void *__ntfs_malloc(unsigned long size, static inline void *__ntfs_malloc(unsigned long size, gfp_t gfp_mask)
gfp_t gfp_mask)
{ {
if (likely(size <= PAGE_SIZE)) { if (likely(size <= PAGE_SIZE)) {
BUG_ON(!size); BUG_ON(!size);