Re: [Linux-NTFS-Dev] Re: [Cooker] [Bug 427] [drakxtools] Drakfont freezes the whole partition

2003-02-24 Thread Anton Altaparmakov
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

2003-02-24 Thread Anton Altaparmakov
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

2003-02-23 Thread Anton Altaparmakov
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

2003-02-23 Thread Frank Griffin
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

2003-02-22 Thread Martin Whitaker
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

2003-02-22 Thread Martin Whitaker
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