OpenCloudOS-Kernel/fs/ntfs
Anton Altaparmakov bfab36e816 NTFS: Fix a mount time deadlock.
Big thanks go to Mathias Kolehmainen for reporting the bug, providing
debug output and testing the patches I sent him to get it working.

The fix was to stop calling ntfs_attr_set() at mount time as that causes
balance_dirty_pages_ratelimited() to be called which on systems with
little memory actually tries to go and balance the dirty pages which tries
to take the s_umount semaphore but because we are still in fill_super()
across which the VFS holds s_umount for writing this results in a
deadlock.

We now do the dirty work by hand by submitting individual buffers.  This
has the annoying "feature" that mounting can take a few seconds if the
journal is large as we have clear it all.  One day someone should improve
on this by deferring the journal clearing to a helper kernel thread so it
can be done in the background but I don't have time for this at the moment
and the current solution works fine so I am leaving it like this for now.

Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-12 09:16:30 -07:00
..
ChangeLog NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
Makefile NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
aops.c NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
aops.h mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
attrib.c NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
attrib.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
bitmap.c [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
bitmap.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
collate.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
collate.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
compress.c [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
debug.c NTFS: Fix printk format warnings on ia64. (Randy Dunlap) 2005-05-05 11:11:47 +01:00
debug.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dir.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
dir.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
endian.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
file.c NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
index.c [PATCH] slab: remove SLAB_NOFS 2006-12-07 08:39:23 -08:00
index.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
inode.c NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
inode.h NTFS: 2.1.28 - Fix deadlock reported by Sergey Vlasov due to ntfs_put_inode(). 2007-01-18 09:42:48 +00:00
layout.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
lcnalloc.c [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
lcnalloc.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
logfile.c NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
logfile.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
malloc.h NTFS: In attrib.c::ntfs_attr_set() call balance_dirty_pages_ratelimited() 2005-10-11 14:54:42 +01:00
mft.c [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
mft.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
mst.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
namei.c knfsd: exportfs: add exportfs.h header 2007-07-17 10:23:06 -07:00
ntfs.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
quota.c [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
quota.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
runlist.c NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
runlist.h NTFS: Add ntfs_rl_punch_nolock() which punches a caller specified hole into a runlist. 2005-09-08 20:26:34 +01:00
super.c mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
sysctl.c [PATCH] sysctl: remove the proc_dir_entry member for the sysctl tables 2007-02-14 08:10:00 -08:00
sysctl.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
time.h NTFS: Change time to u64 in time.h::ntfs2utc() as it otherwise generates a 2005-05-05 11:01:13 +01:00
types.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
unistr.c [PATCH] slab: remove SLAB_NOFS 2006-12-07 08:39:23 -08:00
upcase.c NTFS: Do more detailed reporting of why we cannot mount read-write by 2006-02-24 10:48:14 +00:00
usnjrnl.c [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
usnjrnl.h [PATCH] fs/ntfs: Conversion to generic boolean 2006-10-01 00:39:19 -07:00
volume.h NTFS: Do more detailed reporting of why we cannot mount read-write by 2006-02-24 10:48:14 +00:00