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:
parent
29d8699ebb
commit
29b8990513
|
@ -57,6 +57,10 @@ ToDo/Notes:
|
|||
uncompressed and unencrypted files are supported. Also, there is
|
||||
only very limited support for highly fragmented files (the ones whose
|
||||
$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.
|
||||
|
||||
|
|
|
@ -21,7 +21,9 @@
|
|||
*/
|
||||
|
||||
#include <linux/buffer_head.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/swap.h>
|
||||
#include <linux/writeback.h>
|
||||
|
||||
#include "attrib.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. */
|
||||
unlock_page(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 (end_ofs) {
|
||||
|
|
|
@ -39,8 +39,7 @@
|
|||
* If there was insufficient memory to complete the request, return NULL.
|
||||
* Depending on @gfp_mask the allocation may be guaranteed to succeed.
|
||||
*/
|
||||
static inline void *__ntfs_malloc(unsigned long size,
|
||||
gfp_t gfp_mask)
|
||||
static inline void *__ntfs_malloc(unsigned long size, gfp_t gfp_mask)
|
||||
{
|
||||
if (likely(size <= PAGE_SIZE)) {
|
||||
BUG_ON(!size);
|
||||
|
|
Loading…
Reference in New Issue