Re: [Yaffs] NFS and YAFFS

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: olivier.eribon@free.fr
Date:  
To: Henrik Grindal Bakken
CC: yaffs
Subject: Re: [Yaffs] NFS and YAFFS
All,

We had a problem perhaps similar, The problem was associated to the “READDIR+”
NFS V3 command, which recursively explores the sub-directories, trying to lock
for the sub-directories the semaphore that was already locked for the first
directory, causing a deadlock of the NFS server.
This problem was solved by another engineer with the next modification (not very
clean!!):

cvs diff fs/yaffs2/yaffs_fs.c
Index: fs/yaffs2/yaffs_fs.c
===================================================================
RCS file: linux-2.6.16/fs/yaffs2/yaffs_fs.c,v
retrieving revision 1.4
diff -r1.4 yaffs_fs.c
313c313,314
<       yaffs_GrossLock(dev);
---

>       if (current != dev->readdirProcess)
>               yaffs_GrossLock(dev);

324a326
>

326c328,329
<       yaffs_GrossUnlock(dev);
---

>       if (current != dev->readdirProcess)
>               yaffs_GrossUnlock(dev);

816a820
>       dev->readdirProcess = current ;

885a890
>       dev->readdirProcess = NULL ;

1288c1293,1294
<       yaffs_GrossLock(dev);
---

>       if (current != dev->readdirProcess)
>               yaffs_GrossLock(dev);

1294c1300,1301
<       yaffs_GrossUnlock(dev);
---

>       if (current != dev->readdirProcess)
>               yaffs_GrossUnlock(dev);


cvs diff fs/yaffs2/yaffs_guts.h
Index: fs/yaffs2/yaffs_guts.h
===================================================================
RCS file: linux-2.6.16/fs/yaffs2/yaffs_guts.h,v
retrieving revision 1.1
diff -r1.1 yaffs_guts.h
655a656,657
>       struct task_struct *readdirProcess;

>


cvs diff include/linux/jffs2_fs_i.h
Index: include/linux/jffs2_fs_i.h
===================================================================
RCS file: linux-2.6.16/include/linux/jffs2_fs_i.h,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 jffs2_fs_i.h
18c18
<
---
>       struct task_struct *readdir_process;


If this patch could be helpfull

Best regards

Olivier

Selon Henrik Grindal Bakken <>:

> Charles Manning <> writes:
>
> > On Tuesday 12 February 2008 01:50:45 Henrik Grindal Bakken wrote:
> >> This, as it happens, works to an extent. If I mount read-write, it
> >> hangs, if I mount read-only, it works, but only up to one or two
> >> clients. I'm not entirely certain where stuff hangs, but at least
> >> it hangs to the extent that searching $PATH for anything on
> >> /mnt/base hangs forever.
> >>
> >> It appears to me that nfs-exporting yaffs filesystems is shaky at
> >> best. Is this something anyone does or has any experience with?
> >
> > What kind of problems are you seeing?
>
> The mount command hangs, and accessing the yaffs filesystem on the nfs
> server hangs as well. Processes go into uninterruptable sleep. Looks
> like your typical unreachable nfs server problems, but one major
> difference is that this happens on the server as well. I would
> imagine that the problems on the client come because the server hangs
> on accessing the yaffs filesystem.
>
>
> --
> Henrik Grindal Bakken <>
> PGP ID: 8D436E52
> Fingerprint: 131D 9590 F0CF 47EF 7963 02AF 9236 D25A 8D43 6E52
>
>
> _______________________________________________
> yaffs mailing list
>
> http://lists.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs
>