Re: [BUG] reiser4-for-2.6.27

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mat wrote:
> Hi Edward,
>
> this one's the kernel-config for the second (posted) error:
>   

Yup, it seems to be a bug: reiser4_set_page_dirty_internal() didn't
take care about disabling preemption, while per-cpu stuff needs this.
I wonder why nobody did report it earlier. It requires CONFIG_PREEMPT=y
and CONFIG_DEBUG_PREEMPT=y though..

A possible fixup is attached.

Thank to everyone.
Edward.
---
 linux-2.6.27/fs/reiser4/page_cache.c |    2 ++
 1 file changed, 2 insertions(+)

--- linux-2.6.27/fs/reiser4/page_cache.c.orig
+++ linux-2.6.27/fs/reiser4/page_cache.c
@@ -469,10 +469,12 @@ void reiser4_set_page_dirty_internal(str
 	if (!TestSetPageDirty(page)) {
 		WARN_ON_ONCE(!PagePrivate(page) && !PageUptodate(page));
 		if (mapping_cap_account_dirty(mapping)) {
+			preempt_disable();
 			__inc_zone_page_state(page, NR_FILE_DIRTY);
 			__inc_bdi_stat(mapping->backing_dev_info,
 				       BDI_RECLAIMABLE);
 			task_io_account_write(PAGE_CACHE_SIZE);
+			preempt_enable();
 		}
 		assert("edward-1558", mapping->host != NULL);
 		__mark_inode_dirty(mapping->host, I_DIRTY_PAGES);

[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux