Commit 29b89905 authored by Anton Altaparmakov's avatar Anton Altaparmakov

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: default avatarAnton Altaparmakov <aia21@cantab.net>
parent 29d8699e
...@@ -57,6 +57,10 @@ ToDo/Notes: ...@@ -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.
......
...@@ -21,7 +21,9 @@ ...@@ -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) ...@@ -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) {
......
...@@ -39,8 +39,7 @@ ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment