Screenshot instructions:
Windows
Mac
Red Hat Linux
Ubuntu
Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)
From: John Muir <muirj@no...> - 2006-06-16 12:17:18
|
Miklos Szeredi wrote: >> >> The problem occurs because FUSE modifies some of the inode data >> structures in non-write operations such as getattr without taking the >> inode semaphore, and this is a problem for the NFS server, and also >> between threads running through fuse. >> > > Interesting theory, but I'm not sure exactly what could cause problems > around setting the attributes. One suspect is i_size_read(), which > spins on SMP until i_size is stable. But this would only cause a hang > if i_size_write() were called in a loop, which I don't see happening > anywhere. > We did observe that the lockups are occurring in this code. Questions that come to mind: How would i_size_read() be affected by caching? Does i_size_write() not require a semaphore lock? We are running 2.6.10. I wonder if there have been changes to i_size_read() and company? > >> 5. Miklos has stated many times that he doesn't think knfsd and FUSE >> should mix. >> > > Yes, but current code should be fixed nonetheless. > Well, the 'ilookup' and 'lookupparent' functions that we have added are essential to providing 'proper' NFS service, although as I had said in my e-mail, it may not make much sense to add an implementation of those to the fuse.c file-based library. > Also this may not just be NFS related. I've got another lockup report > in which NFS is not involved at all. So there's probably something > fishy in there and SMP seems to be a common denominator. > Agreed, this is definitely not only NFS related. It's just that I'm posting my series of patches as is, including the additional NFS functionality, and separating the patches was more work than I wanted to do at the moment. John. -- John Muir NORTEL muirj@... |