Re: [Linux-NTFS-Dev] Re: [Cooker] [Bug 427] [drakxtools] Drakfont freezes the whole partition
NTFS 2.1.1a is now released for kernel 2.4.20. This fixes both the reported hangs and improves the handling of compressed files so that the warning message people keep reporting is now gone. Download the patch from: http://linux-ntfs.sf.net/downloads.html Or get from our BK repository (which is at the current BK linux-2.4 version, i.e. 2.4.21-pre4-bk): bk://linux-ntfs.bkbits.net/ntfs-2.4 Enjoy! Anton -- Anton Altaparmakov (replace at with @) Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
Re: [Linux-NTFS-Dev] Re: [Cooker] [Bug 427] [drakxtools] Drakfont freezes the whole partition
On Mon, 24 Feb 2003, Szakacsits Szabolcs wrote: > On Sun, 23 Feb 2003, Anton Altaparmakov wrote: > Yes, thanks for everybody who responded, excellent feedbacks! It's > 100% posible to reproduce the hang even with standard 2.4.20+ kernels. Indeed. I was able to reproduce with 2.4.21-pre4 + NTFS 2.1.0a and 2.1.1a. Interestingly the hangs cannot be reproduced on 2.5.x kernels which suggests that either 2.4 is holding the inode lock somewhere where 2.5 isn't so when we try to acquire it we hang because the kernel already acquired it or the iget4 race avoidance I had to patch up into 2.4 causes the hangs. > > It points me directly at the code responsible for the hangs. The > > above should hopefully allow me to reproduce the hang and fix the > > problem. Most likely it is something to do with the dcache code in > > fs/ntfs/namei.c::ntfs_lookup() that handles the case insensitive > > file and directory names in NTFS. This is supported by the > > reported trace from the kernel showing that the code hangs inside > > ntfs_lookup() when the inode lock is attempted to be acquired. > > The inode locking, needed to close iget4 race, looks totally broken. Hmm. That is one of my two prime suspects. /me goes and looks... Eek!!! Grrr!!! /me slaps myself with a wet fish... /me corrects logic inversion in ntfs inode lock handling... /me recompiles module and tests... It works! (-: I will commit the patch to the BK ntfs-2.4 repository in a few minutes and then make an incremental patch to ntfs 2.1.0a patch... Best regards, Anton -- Anton Altaparmakov (replace at with @) Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
Re: [Linux-NTFS-Dev] Re: [Cooker] [Bug 427] [drakxtools] Drakfont freezes the whole partition
On Sat, 22 Feb 2003, Martin Whitaker wrote: > Using strace helped me discover why I could copy the files manually, but > drakfont couldn't. If I execute > >cp /mnt/windows/c/WINDOWS/Fonts/*.ttf fonts > > it works every time. If I execute > >cp /mnt/windows/c/WINDOWS/fonts/*.ttf fonts > > it works sometimes and hangs sometimes. If I execute > >cp /mnt/windows/c/windows/fonts/*.ttf fonts > > it hangs every time. The point at which it hangs varies from run to run. This is great thanks! It points me directly at the code responsible for the hangs. The above should hopefully allow me to reproduce the hang and fix the problem. Most likely it is something to do with the dcache code in fs/ntfs/namei.c::ntfs_lookup() that handles the case insensitive file and directory names in NTFS. This is supported by the reported trace from the kernel showing that the code hangs inside ntfs_lookup() when the inode lock is attempted to be acquired. When I have a little spare time I will work on tracing and fixing the problem if someone doesn't beat me to it... Best regards, Anton -- Anton Altaparmakov (replace at with @) Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
Re: [Cooker] [Bug 427] [drakxtools] Drakfont freezes the whole partition
Szakacsits Szabolcs wrote: Hi, Somebody who can reproduce the problem (I couldn't) would please 'strace' drakfont and send the last 50-100 lines or put all output to some downloadable place to see where the NTFS driver hangs? You can try by starting drakfont like strace -f -e trace=file drakfont or after it's started but before importing Windows font, what makes the driver hang, attaching to drakfont like strace -f -e trace=file -p The last lines using the latter technique are: open("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/GARAIT.TTF", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 6 fstat64(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 stat64("/mnt/win_d/winnt/fonts/GARAIT.TTF", {st_mode=S_IFREG|0555, st_size=188916, ...}) = 0 chmod("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/GARAIT.TTF", 0100555) = 0 stat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 lstat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgia.ttf", 0x804b678) = -1 ENOENT (No such file or directory) stat64("/mnt/win_d/winnt/fonts/georgia.ttf", {st_mode=S_IFREG|0555, st_size=142964, ...}) = 0 lstat64("/mnt/win_d/winnt/fonts/georgia.ttf", {st_mode=S_IFREG|0555, st_size=142964, ...}) = 0 open("/mnt/win_d/winnt/fonts/georgia.ttf", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0555, st_size=142964, ...}) = 0 open("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgia.ttf", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 6 fstat64(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 stat64("/mnt/win_d/winnt/fonts/georgia.ttf", {st_mode=S_IFREG|0555, st_size=142964, ...}) = 0 chmod("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgia.ttf", 0100555) = 0 stat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 lstat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiab.ttf", 0x804b678) = -1 ENOENT (No such file or directory) stat64("/mnt/win_d/winnt/fonts/georgiab.ttf", {st_mode=S_IFREG|0555, st_size=139584, ...}) = 0 lstat64("/mnt/win_d/winnt/fonts/georgiab.ttf", {st_mode=S_IFREG|0555, st_size=139584, ...}) = 0 open("/mnt/win_d/winnt/fonts/georgiab.ttf", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0555, st_size=139584, ...}) = 0 open("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiab.ttf", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 6 fstat64(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 stat64("/mnt/win_d/winnt/fonts/georgiab.ttf", {st_mode=S_IFREG|0555, st_size=139584, ...}) = 0 chmod("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiab.ttf", 0100555) = 0 stat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 lstat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiai.ttf", 0x804b678) = -1 ENOENT (No such file or directory) stat64("/mnt/win_d/winnt/fonts/georgiai.ttf", {st_mode=S_IFREG|0555, st_size=156668, ...}) = 0 lstat64("/mnt/win_d/winnt/fonts/georgiai.ttf", {st_mode=S_IFREG|0555, st_size=156668, ...}) = 0 open("/mnt/win_d/winnt/fonts/georgiai.ttf", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0555, st_size=156668, ...}) = 0 open("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiai.ttf", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 6 fstat64(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 stat64("/mnt/win_d/winnt/fonts/georgiai.ttf", {st_mode=S_IFREG|0555, st_size=156668, ...}) = 0 chmod("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiai.ttf", 0100555) = 0 stat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 lstat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiaz.ttf", 0x804b678) = -1 ENOENT (No such file or directory) stat64("/mnt/win_d/winnt/fonts/georgiaz.ttf", {st_mode=S_IFREG|0555, st_size=158796, ...}) = 0 lstat64("/mnt/win_d/winnt/fonts/georgiaz.ttf", {st_mode=S_IFREG|0555, st_size=158796, ...}) = 0 open("/mnt/win_d/winnt/fonts/georgiaz.ttf", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0555, st_size=158796, ...}) = 0 open("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiaz.ttf", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 6 fstat64(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 stat64("/mnt/win_d/winnt/fonts/georgiaz.ttf", {st_mode=S_IFREG|0555, st_size=158796, ...}) = 0 chmod("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/georgiaz.ttf", 0100555) = 0 stat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 lstat64("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/GOTHIC.TTF", 0x804b678) = -1 ENOENT (No such file or directory) stat64("/mnt/win_d/winnt/fonts/GOTHIC.TTF", {st_mode=S_IFREG|0555, st_size=137568, ...}) = 0 lstat64("/mnt/win_d/winnt/fonts/GOTHIC.TTF", {st_mode=S_IFREG|0555, st_size=137568, ...}) = 0 open("/mnt/win_d/winnt/fonts/GOTHIC.TTF", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0555, st_size=137568, ...}) = 0 open("/usr/X11R6/lib/X11/fonts/drakfont/tmp/tmp/GOTHIC.TTF", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 6 fstat64(6, {
Re: [Cooker] [Bug 427] [drakxtools] Drakfont freezes the whole partition
Martin Whitaker wrote: > Using strace helped me discover why I could copy the files manually, but > drakfont couldn't. If I execute > > cp /mnt/windows/c/WINDOWS/Fonts/*.ttf fonts > > it works every time. If I execute > > cp /mnt/windows/c/WINDOWS/fonts/*.ttf fonts > > it works sometimes and hangs sometimes. If I execute > > cp /mnt/windows/c/windows/fonts/*.ttf fonts I should perhaps have said that "/mnt/windows/c" is the mount point for my NTFS partition, and "WINDOWS" and "Fonts" are the exact directory names. Martin
Re: [Cooker] [Bug 427] [drakxtools] Drakfont freezes the whole partition
Szakacsits Szabolcs wrote: On Sat, 22 Feb 2003, Szakacsits Szabolcs wrote: Somebody who can reproduce the problem (I couldn't) would please 'strace' drakfont and send the last 50-100 lines or put all output to some downloadable place to see where the NTFS driver hangs? You can try by starting drakfont like strace -f -e trace=file drakfont or after it's started but before importing Windows font, what makes the driver hang, attaching to drakfont like strace -f -e trace=file -p Using strace helped me discover why I could copy the files manually, but drakfont couldn't. If I execute cp /mnt/windows/c/WINDOWS/Fonts/*.ttf fonts it works every time. If I execute cp /mnt/windows/c/WINDOWS/fonts/*.ttf fonts it works sometimes and hangs sometimes. If I execute cp /mnt/windows/c/windows/fonts/*.ttf fonts it hangs every time. The point at which it hangs varies from run to run. Attached is the output from executing strace -f -e trace=file cp /mnt/windows/c/windows/fonts/*.ttf fonts on a Mandrake 9.0 system. The destination directory, 'fonts', is an empty directory on an ext3 partition (but I get the same results if the destination is on a FAT32 partition). BTW, it would be much better if you could do an Alt+SysRq+t (press together) from the character console and could decode the output (should go also to /var/log/dmesg or /var/log/messages) with 'ksymoops'. The Magic SysRq Key's can be enabled as echo 1 > /proc/sys/kernel/sysrq This generated no output apart from the initial message SysRq : Show State Martin [EMAIL PROTECTED] root]# strace -f -e trace=file cp /mnt/windows/c/windows/fonts/*.ttf fonts execve("/bin/cp", ["cp", "/mnt/windows/c/windows/fonts/arialbd.ttf", "/mnt/windows/c/windows/fonts/arialbi.ttf", "/mnt/windows/c/windows/fonts/ariali.ttf", "/mnt/windows/c/windows/fonts/arial.ttf", "/mnt/windows/c/windows/fonts/ariblk.ttf", "/mnt/windows/c/windows/fonts/comicbd.ttf", "/mnt/windows/c/windows/fonts/comic.ttf", "/mnt/windows/c/windows/fonts/courbd.ttf", "/mnt/windows/c/windows/fonts/courbi.ttf", "/mnt/windows/c/windows/fonts/couri.ttf", "/mnt/windows/c/windows/fonts/cour.ttf", "/mnt/windows/c/windows/fonts/estre.ttf", "/mnt/windows/c/windows/fonts/framdit.ttf", "/mnt/windows/c/windows/fonts/framd.ttf", "/mnt/windows/c/windows/fonts/gautami.ttf", "/mnt/windows/c/windows/fonts/georgiab.ttf", "/mnt/windows/c/windows/fonts/georgiai.ttf", "/mnt/windows/c/windows/fonts/georgia.ttf", "/mnt/windows/c/windows/fonts/georgiaz.ttf", "/mnt/windows/c/windows/fonts/impact.ttf", "/mnt/windows/c/windows/fonts/l_10646.ttf", "/mnt/windows/c/windows/fonts/latha.ttf", "/mnt/windows/c/windows/fonts/lucon.ttf", "/mnt/windows/c/windows/fonts/mangal.ttf", "/mnt/windows/c/windows/fonts/marlett.ttf", "/mnt/windows/c/windows/fonts/micross.ttf", "/mnt/windows/c/windows/fonts/mvboli.ttf", "/mnt/windows/c/windows/fonts/opens___.ttf", "/mnt/windows/c/windows/fonts/palabi.ttf", "/mnt/windows/c/windows/fonts/palab.ttf", "/mnt/windows/c/windows/fonts/palai.ttf", "/mnt/windows/c/windows/fonts/pala.ttf", "/mnt/windows/c/windows/fonts/raavi.ttf", "/mnt/windows/c/windows/fonts/shruti.ttf", "/mnt/windows/c/windows/fonts/sylfaen.ttf", "/mnt/windows/c/windows/fonts/symbol.ttf", "/mnt/windows/c/windows/fonts/tahomabd.ttf", "/mnt/windows/c/windows/fonts/tahoma.ttf", "/mnt/windows/c/windows/fonts/timesbd.ttf", "/mnt/windows/c/windows/fonts/timesbi.ttf", "/mnt/windows/c/windows/fonts/timesi.ttf", "/mnt/windows/c/windows/fonts/times.ttf", "/mnt/windows/c/windows/fonts/trebucbd.ttf", "/mnt/windows/c/windows/fonts/trebucbi.ttf", "/mnt/windows/c/windows/fonts/trebucit.ttf", "/mnt/windows/c/windows/fonts/trebuc.ttf", "/mnt/windows/c/windows/fonts/tunga.ttf", "/mnt/windows/c/windows/fonts/verdanab.ttf", "/mnt/windows/c/windows/fonts/verdanai.ttf", "/mnt/windows/c/windows/fonts/verdana.ttf", "/mnt/windows/c/windows/fonts/verdanaz.ttf", "/mnt/windows/c/windows/fonts/webdings.ttf", "/mnt/windows/c/windows/fonts/wingding.ttf", "fonts"], [/* 64 vars */]) = 0 open("/etc/ld.so.preload", O_RDONLY)= -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=42695, ...}) = 0 open("/lib/i686/libc.so.6", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0755, st_size=1167240, ...}) = 0 open("/usr/share/locale/locale.alias", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=2601, ...}) = 0 open("/usr/share/locale/en_GB/LC_IDENTIFICATION", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=361, ...}) = 0 open("/usr/share/locale/en_GB/LC_MEASUREMENT", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=28, ...}) = 0 open("/usr/share/locale/en_GB/LC_TELEPHONE", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=61, ...}) = 0 open("/usr/share/locale/en_GB/LC_ADDRESS", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=132, ...}) = 0 open("/usr/share/locale/en_GB/LC_NAME", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size