All of lore.kernel.org
 help / color / mirror / Atom feed
* NFS 'readdir loop' error on JFS
@ 2013-07-08  1:13 Ben Hutchings
  2013-07-08 14:02 ` bjschuma
                   ` (2 more replies)
  0 siblings, 3 replies; 24+ messages in thread
From: Ben Hutchings @ 2013-07-08  1:13 UTC (permalink / raw)
  To: jfs-discussion, linux-nfs; +Cc: Karl Schmidt, 714974, Jonathan McDowell

[-- Attachment #1: Type: text/plain, Size: 1215 bytes --]

Jonathan McDowell and Karl Schmidt reported that when sharing a JFS
filesystem through NFS and Samba, NFS clients can report 'readdir loop'
and the directories in question then appear to have duplicate entries on
the client system.

This was seen with Linux 3.2 on the server and client.  The JFS
directory code is basically unchanged since then, but NFS has changed
somewhat.

The original bug reports were:
http://bugs.debian.org/685407#85
http://bugs.debian.org/714974

The log messages are:
[593351.877678] NFS: directory fs/nfsd contains a readdir loop.Please contact your server vendor.  The file: .nfs3proc.o.cmda.com has duplicate cookie 73
[593351.904689] NFS: directory fs/nfsd contains a readdir loop.Please contact your server vendor.  The file: .nfs3proc.o.cmda.com has duplicate cookie 73
[280774.570555] NFS: directory //accounting contains a readdir loop.Please contact your server vendor.  The file: .~lock.credit.rtf1.rtf# has duplicate cookie 199

Is this likely to be a problem with JFS, the NFS client or server?  Can
anyone suggest how to investigate this further?

Ben.

-- 
Ben Hutchings
It is easier to write an incorrect program than to understand a correct one.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: NFS 'readdir loop' error on JFS
  2013-07-08  1:13 NFS 'readdir loop' error on JFS Ben Hutchings
@ 2013-07-08 14:02 ` bjschuma
  2013-07-08 15:43 ` Karl Schmidt
  2013-08-09 20:44 ` Karl Schmidt
  2 siblings, 0 replies; 24+ messages in thread
From: bjschuma @ 2013-07-08 14:02 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: jfs-discussion, linux-nfs, Karl Schmidt, 714974, Jonathan McDowell

Hi Ben,

I remember hitting this problem as I was working on the new-ish
readdir code.  The problem has to do with the readdir cookies
generated by JFS.  In a large directory the same cookie might be
reused to refer to different files, and this can confuse the client
(it entered an infinite loop before Trond came up with the loop
detection).  I ended up switching to ext4 to finish the project.

- Bryan

On Sun, Jul 7, 2013 at 9:13 PM, Ben Hutchings <ben@decadent.org.uk> wrote:
> Jonathan McDowell and Karl Schmidt reported that when sharing a JFS
> filesystem through NFS and Samba, NFS clients can report 'readdir loop'
> and the directories in question then appear to have duplicate entries on
> the client system.
>
> This was seen with Linux 3.2 on the server and client.  The JFS
> directory code is basically unchanged since then, but NFS has changed
> somewhat.
>
> The original bug reports were:
> http://bugs.debian.org/685407#85
> http://bugs.debian.org/714974
>
> The log messages are:
> [593351.877678] NFS: directory fs/nfsd contains a readdir loop.Please contact your server vendor.  The file: .nfs3proc.o.cmda.com has duplicate cookie 73
> [593351.904689] NFS: directory fs/nfsd contains a readdir loop.Please contact your server vendor.  The file: .nfs3proc.o.cmda.com has duplicate cookie 73
> [280774.570555] NFS: directory //accounting contains a readdir loop.Please contact your server vendor.  The file: .~lock.credit.rtf1.rtf# has duplicate cookie 199
>
> Is this likely to be a problem with JFS, the NFS client or server?  Can
> anyone suggest how to investigate this further?
>
> Ben.
>
> --
> Ben Hutchings
> It is easier to write an incorrect program than to understand a correct one.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: NFS 'readdir loop' error on JFS
  2013-07-08  1:13 NFS 'readdir loop' error on JFS Ben Hutchings
  2013-07-08 14:02 ` bjschuma
@ 2013-07-08 15:43 ` Karl Schmidt
  2013-08-09 20:44 ` Karl Schmidt
  2 siblings, 0 replies; 24+ messages in thread
From: Karl Schmidt @ 2013-07-08 15:43 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: jfs-discussion, linux-nfs, 714974, Jonathan McDowell

On 07/07/2013 08:13 PM, Ben Hutchings wrote:
> Jonathan McDowell and Karl Schmidt reported that when sharing a JFS
> filesystem through NFS and Samba, NFS clients can report 'readdir loop'
> and the directories in question then appear to have duplicate entries on
> the client system.
>
> This was seen with Linux 3.2 on the server and client.  The JFS
> directory code is basically unchanged since then, but NFS has changed
> somewhat.
>
> The original bug reports were:
> http://bugs.debian.org/685407#85
> http://bugs.debian.org/714974
>
> The log messages are:
> [593351.877678] NFS: directory fs/nfsd contains a readdir loop.Please contact your server vendor.  The file: .nfs3proc.o.cmda.com has duplicate cookie 73
> [593351.904689] NFS: directory fs/nfsd contains a readdir loop.Please contact your server vendor.  The file: .nfs3proc.o.cmda.com has duplicate cookie 73
> [280774.570555] NFS: directory //accounting contains a readdir loop.Please contact your server vendor.  The file: .~lock.credit.rtf1.rtf# has duplicate cookie 199
>
> Is this likely to be a problem with JFS, the NFS client or server?  Can
> anyone suggest how to investigate this further?
>
> Ben.

The experiment with NFS client on Windozs XP was bad - very poor performance. I'm told that it might 
work better in Windoze 7 - removed and back to samba.

For now, I am not having problems after commenting out this line in smb.conf

#strict locking = yes

Previously, I had already commented out :

#oplocks = no
#level2oplocks = no

But could still reproduce the problem.

I'm not sure it is fixed as there were time before when all worked well for some weeks before the 
errors turned.

Question: Is samba still using NLM protocol to lock files? ( I think NFS no longer uses that? )


,.,.,.
I've did find a different error during all this testing -included here as it might be related - 
perhaps due to the last nfs update.

in /etc/exports the server called malaysia we have:
/home/accounting 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)

fstab on a Debian wheezy client:
malaysia:/home/accounting    /mnt/accounting nfs   defaults,rsize=8192,wsize=8192,intr 0 0

/mnt# ll
total 112
drwxrwsrwx 16 nobody nogroup  4096 2013-07-08 08:00 accounting/

This is wrong..

I think this may have to do with a bug workaround where the installer added
27.0.1.1 to the /etc/hosts file ?

Then there is /etc/idmapd and /etc/defaults/nfs-common on the client that I didn't used to have to 
mess with?

It is also important to have the fqdn as the first name in /etc/hosts
hostname --fqdn is correct on both machines


I think this might have to do with a fix for CVE-2013-1923

The changes I made included adding

NEED_IDMAPD=yes

to /etc/defaults/nfs-common

And removing no_all_squash which is now the default.

Is NEED_IDMAPD=yes now needed as reverse lookups have been turned off?

The debian wiki needs updating to let people know they need to if this is really the case?

It has been a long night..



--------------------------------------------------------------------------------
Karl Schmidt                                  EMail Karl@xtronics.com
Transtronics, Inc.                              WEB http://secure.transtronics.com
3209 West 9th Street                             Ph (785) 841-3089
Lawrence, KS 66049                              FAX (785) 841-0434

Wrapping people up in the symbols of success when they are unearned, is very destructive. kps

--------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: NFS 'readdir loop' error on JFS
  2013-07-08  1:13 NFS 'readdir loop' error on JFS Ben Hutchings
  2013-07-08 14:02 ` bjschuma
  2013-07-08 15:43 ` Karl Schmidt
@ 2013-08-09 20:44 ` Karl Schmidt
  2013-08-10  7:28   ` [Jfs-discussion] " Christian Kujau
  2 siblings, 1 reply; 24+ messages in thread
From: Karl Schmidt @ 2013-08-09 20:44 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: jfs-discussion, linux-nfs, 714974, Jonathan McDowell

This problem is still alive - took a while for it to show up again:

(From the client - but speaks of the server )

Aug  9 14:32:20 singapore kernel: [497500.291867] NFS: directory timeless/JFK-prep contains a 
readdir loop.Please contact your server vendor.  The file: 234t.jpg has duplicate cookie 18
Aug  9 14:32:20 singapore kernel: [497500.291930] NFS: directory timeless/JFK-prep contains a 
readdir loop.Please contact your server vendor.  The file: 234t.jpg has duplicate cookie 18
Aug  9 14:32:20 singapore kernel: [497500.346824] NFS: directory pictures/wells_index contains a 
readdir loop.Please contact your server vendor.  The file: img_1260.jpgQ▒J@K���j�^ has duplicate 
cookie 24
Aug  9 14:32:20 singapore kernel: [497500.346884] NFS: directory pictures/wells_index contains a 
readdir loop.Please contact your server vendor.  The file: img_1260.jpgQ▒J@K���j�^ has duplicate 
cookie 24


This is a wheezy production server - I can run tests, provide information, but I'm about to purchase 
some spare drives and move the server to ext4 to protect the data. So if anyone wants information, 
now is the time to ask.

I will reboot this system in a few hours - waiting for your response.

( this problem took 25 days to reappear - so you might want to get some information ).

I'm an aging assembly programmer - I can do most things from the shell in Debian - I once did a 
little C programming - but digging into this code is beyond me.  On the other had, I am able and 
willing to supply what every I can to help.

Server has:
# uname -a
Linux malaysia 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux
# wajig list nfs
ii  libnfsidmap2:amd64                    0.25-4                             amd64        NFS 
idmapping library
ii  nfs-common                            1:1.2.6-4                          amd64        NFS 
support files common to client and server
ii  nfs-kernel-server                     1:1.2.6-4                          amd64        support 
for NFS kernel server

Export with loop:
/home/content           192.168.1.0/22(rw,sync,no_root_squash)

-


Client has:
# uname -a
Linux singapore 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux


# wajig list nfs
ii  libnfsidmap2:amd64                     0.25-4                             amd64        NFS 
idmapping library
ii  nfs-common                             1:1.2.6-4                          amd64        NFS 
support files common to client and server

fstab mount with loop:
malaysia:/home/content       /mnt/content    nfs     defaults,rsize=8192,wsize=8192,intr 0 0





--------------------------------------------------------------------------------
Karl Schmidt                                  EMail Karl@xtronics.com
Transtronics, Inc.                              WEB http://secure.transtronics.com
3209 West 9th Street                             Ph (785) 841-3089
Lawrence, KS 66049                              FAX (785) 841-0434

Wrapping people up in the symbols of success when they are unearned, is very destructive. kps

--------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] NFS 'readdir loop' error on JFS
  2013-08-09 20:44 ` Karl Schmidt
@ 2013-08-10  7:28   ` Christian Kujau
  2013-08-10 19:43     ` Karl Schmidt
  2013-08-12  8:18     ` Christian Kujau
  0 siblings, 2 replies; 24+ messages in thread
From: Christian Kujau @ 2013-08-10  7:28 UTC (permalink / raw)
  To: Karl Schmidt
  Cc: Ben Hutchings, 714974, jfs-discussion, Jonathan McDowell, linux-nfs

Interesting stuff. Out of curiosity I just tried this myself, both client 
& server are virtual machines running Debian/stable (3.2.0-4-amd64) and I 
was able to reproduce this. A test case would be:

## server:
$ apt-get install nfs-kernel-server jfsutils
$ dd if=/dev/zero bs=1M count=256 > /var/test.img
$ losetup -f /var/test.img
$ mkfs.jfs /dev/loop0
$ mount -t jfs /dev/loop0  /mnt/disk
$ tar -C / -cf - usr/share | tar -C /mnt/disk/ -xf -
$ tail -1 /etc/exports
/mnt/disk  192.168.0.0/24(rw,sync,no_root_squash,no_subtree_check)
$ service nfs-kernel-server restart

## client
$ apt-get install nfs-common
$ showmount -e server | tail -1
/mnt/disk 192.168.0.0/24
$ tail -1 /etc/fstab
server:/mnt/disk /mnt/nfs  nfs  rsize=8192,wsize=8192,intr 0 0
$ mount /mnt/nfs
$ mount | tail -1
server:/mnt/disk on /mnt/nfs type nfs4 (rw,relatime,vers=4,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.137,minorversion=0,local_lock=none,addr=192.168.0.138)

$ tar -cf - /mnt/nfs/ > /dev/null
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
tar: /mnt/nfs/usr/share/perl/5.14.2/Pod/: Cannot savedir: Too many levels of symbolic links
tar: Exiting with failure status due to previous errors

$ dmesg | tail
[   63.912327] RPC: Registered named UNIX socket transport module.
[   63.913801] RPC: Registered udp transport module.
[   63.914713] RPC: Registered tcp transport module.
[   63.915644] RPC: Registered tcp NFSv4.1 backchannel transport module.
[   63.949485] FS-Cache: Loaded
[   63.972688] FS-Cache: Netfs 'nfs' registered for caching
[   63.993300] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[  284.733629] loop: module loaded
[  840.372846] NFS: directory 5.14.2/Pod contains a readdir loop.Please contact your server vendor.  The file: Simple has duplicate cookie 18
[  840.375842] NFS: directory 5.14.2/Pod contains a readdir loop.Please contact your server vendor.  The file: Simple has duplicate cookie 18

There are no messages on the server when this happens. The message on the 
client repeats on every attempt, this "Cannot savedir" above may be 
triggering it.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] NFS 'readdir loop' error on JFS
  2013-08-10  7:28   ` [Jfs-discussion] " Christian Kujau
@ 2013-08-10 19:43     ` Karl Schmidt
  2013-08-12  8:18     ` Christian Kujau
  1 sibling, 0 replies; 24+ messages in thread
From: Karl Schmidt @ 2013-08-10 19:43 UTC (permalink / raw)
  To: Christian Kujau
  Cc: Ben Hutchings, 714974, jfs-discussion, Jonathan McDowell, linux-nfs

On 08/10/2013 02:28 AM, Christian Kujau wrote:
> Interesting stuff. Out of curiosity I just tried this myself, both client
> & server are virtual machines running Debian/stable (3.2.0-4-amd64) and I
> was able to reproduce this. A test case would be:
>

I still haven't rebooted that machine - last chance to ask for any test info - as it looks like you 
have a test case anyway.

I haven't lost any data that I know of  - just programs complaining etc.

IMO, at one time, jfs was really a better choice ( good set of tools). Even in a few cases where 
hardware failed the jfs tools worked well. Today with everyone banging on ext4 it has become the 
better choice. ( I don't think IBM is interested in supporting jfs - no idea if they are phasing out 
jfs2? ).




--------------------------------------------------------------------------------
Karl Schmidt                                  EMail Karl@xtronics.com
Transtronics, Inc.                              WEB http://secure.transtronics.com
3209 West 9th Street                             Ph (785) 841-3089
Lawrence, KS 66049                              FAX (785) 841-0434

The world runs on individuals pursuing their separate interests.
The great achievements of civilization have not come from
government bureaus. Einstein didn’t construct his theory under
order from a bureaucrat. Henry Ford didn’t revolutionize the
automobile industry that way.
--------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] NFS 'readdir loop' error on JFS
  2013-08-10  7:28   ` [Jfs-discussion] " Christian Kujau
  2013-08-10 19:43     ` Karl Schmidt
@ 2013-08-12  8:18     ` Christian Kujau
  2013-08-12  8:29       ` Christian Kujau
  1 sibling, 1 reply; 24+ messages in thread
From: Christian Kujau @ 2013-08-12  8:18 UTC (permalink / raw)
  To: Karl Schmidt
  Cc: 714974, jfs-discussion, Jonathan McDowell, Ben Hutchings,
	linux-nfs, dave.kleikamp

FWIW, this still happens when both client & server are running Linux 
3.11.0-rc5 (vanilla).

$ dpkg -l | grep nfs | cut -c-70
ii  libnfsidmap2:amd64                 0.25-4                    amd64
ii  nfs-common                         1:1.2.6-4                 amd64
ii  nfs-kernel-server                  1:1.2.6-4                 amd64

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] NFS 'readdir loop' error on JFS
  2013-08-12  8:18     ` Christian Kujau
@ 2013-08-12  8:29       ` Christian Kujau
  2013-08-12 16:29         ` J. Bruce Fields
  0 siblings, 1 reply; 24+ messages in thread
From: Christian Kujau @ 2013-08-12  8:29 UTC (permalink / raw)
  To: Karl Schmidt
  Cc: jfs-discussion, Jonathan McDowell, linux-nfs, 714974, Ben Hutchings

Sorry for the noise, here's another oddity, same setup (client & server 
running 3.11-rc5):

$ find /mnt/nfs/usr/share/ -name getopt.awk -ls
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk

It's the same file, but gets reported 10 times! Hence the error when 
trying to tar(1) the directory:

$ tar -cf - /mnt/nfs/usr/share/awk/ > /dev/null
tar: Removing leading `/' from member names
tar: /mnt/nfs/usr/share/awk/: Cannot savedir: Too many levels of symbolic links
tar: Exiting with failure status due to previous errors

On the server:

$ find /mnt/disk/usr/share/ -name getopt.awk -ls
 25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/disk/usr/share/awk/getopt.awk

So, is "JFS && NFS" really br0ken and nobody noticed?

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] NFS 'readdir loop' error on JFS
  2013-08-12  8:29       ` Christian Kujau
@ 2013-08-12 16:29         ` J. Bruce Fields
  2013-08-12 20:04           ` Christian Kujau
  2013-08-15  3:54           ` [PATCH] jfs: avoid misuse of cookie value of 2 Dave Kleikamp
  0 siblings, 2 replies; 24+ messages in thread
From: J. Bruce Fields @ 2013-08-12 16:29 UTC (permalink / raw)
  To: Christian Kujau
  Cc: Karl Schmidt, jfs-discussion, Jonathan McDowell, linux-nfs,
	714974, Ben Hutchings

On Mon, Aug 12, 2013 at 01:29:15AM -0700, Christian Kujau wrote:
> Sorry for the noise, here's another oddity, same setup (client & server 
> running 3.11-rc5):
> 
> $ find /mnt/nfs/usr/share/ -name getopt.awk -ls
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/nfs/usr/share/awk/getopt.awk
> 
> It's the same file, but gets reported 10 times! Hence the error when 
> trying to tar(1) the directory:
> 
> $ tar -cf - /mnt/nfs/usr/share/awk/ > /dev/null
> tar: Removing leading `/' from member names
> tar: /mnt/nfs/usr/share/awk/: Cannot savedir: Too many levels of symbolic links
> tar: Exiting with failure status due to previous errors
> 
> On the server:
> 
> $ find /mnt/disk/usr/share/ -name getopt.awk -ls
>  25072    4 -rw-r--r--   1 root     root         2237 Mar 16 04:46 /mnt/disk/usr/share/awk/getopt.awk
> 
> So, is "JFS && NFS" really br0ken and nobody noticed?

It does sound like a jfs bug, and I don't know if anyone tests nfs
exports of jfs regularly.

It might be interesting to get a network trace (something like tcpdump
-s0 -wtmp.pcap; then "wireshark tmp.pcap" and look at the "cookie"
fields in the readdir calls and replies.  The server shouldn't return
the same one twice on one read through the directory.  And when the
client uses a cookie it should get the next entries, not
already-returned entries.)

You could also just run "strace -egetdents64 -v ls" on the server on
the exported filesystem, in a problem directory, and see if the offsets
are unique.

--b.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] NFS 'readdir loop' error on JFS
  2013-08-12 16:29         ` J. Bruce Fields
@ 2013-08-12 20:04           ` Christian Kujau
  2013-08-15  3:54           ` [PATCH] jfs: avoid misuse of cookie value of 2 Dave Kleikamp
  1 sibling, 0 replies; 24+ messages in thread
From: Christian Kujau @ 2013-08-12 20:04 UTC (permalink / raw)
  To: J. Bruce Fields
  Cc: Karl Schmidt, Jonathan McDowell, jfs-discussion, 714974,
	Ben Hutchings, linux-nfs, dave.kleikamp

On Mon, 12 Aug 2013 at 12:29, J. Bruce Fields wrote:
> It might be interesting to get a network trace (something like tcpdump
> -s0 -wtmp.pcap; then "wireshark tmp.pcap" and look at the "cookie"
> fields in the readdir calls and replies.

I've created #60737[0] to track this issue upstream and attached a pcap to 
the bug, obtained while running "find <dir> -ls" on the client. But I fail 
to look at the right details in tcpdump/wireshare, I don't see any cookie 
information...

> You could also just run "strace -egetdents64 -v ls" on the server on
> the exported filesystem, in a problem directory, and see if the offsets
> are unique.

strace returned nothing for "getdents64", only "getdents". My test 
filesystems are 256 MB in size, maybe this is too small for getdents64 to 
be used? All the calls to "getdents" however return unique offsets, if I 
did this right:

$ strace -egetdents -v ls /mnt/disk_jfs/usr/share/terminfo/q 2>&1 | egrep -o "d_off=[0-9]*" | sort

When running "ls" (even w/o "-l") on the client on that NFS share, this 
"readdir loop" message is printed.

HTH,
Christian.

[0] https://bugzilla.kernel.org/show_bug.cgi?id=60737

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH] jfs: avoid misuse of cookie value of 2
  2013-08-12 16:29         ` J. Bruce Fields
  2013-08-12 20:04           ` Christian Kujau
@ 2013-08-15  3:54           ` Dave Kleikamp
  2013-08-15  4:29             ` Christian Kujau
  2013-08-15 13:38             ` [PATCH] jfs: avoid misuse of cookie value of 2 J. Bruce Fields
  1 sibling, 2 replies; 24+ messages in thread
From: Dave Kleikamp @ 2013-08-15  3:54 UTC (permalink / raw)
  To: J. Bruce Fields
  Cc: Christian Kujau, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

For the sake of those not watching
https://bugzilla.kernel.org/show_bug.cgi?id=60737

It looks like the problem is that jfs was using a cookie value of 2 for
a real directory entry, where NFSv4 expect 2 to represent "..". This
patch has so far only been lightly tested.

NFSv4 reserves cookie values 0, 1 and 2 for a rewind, and the "." and ".."
entries. jfs was using 0 and 1 for "." and "..", but 2 for a regular entry.
This patch makes jfs conform by using 1 and 2 for "." and ".." and fixes
any regular entry using the value 2.

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>

diff --git a/fs/jfs/jfs_dtree.c b/fs/jfs/jfs_dtree.c
index 8743ba9..93466e8 100644
--- a/fs/jfs/jfs_dtree.c
+++ b/fs/jfs/jfs_dtree.c
@@ -349,11 +349,8 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
 
 	ASSERT(DO_INDEX(ip));
 
-	if (jfs_ip->next_index < 2) {
-		jfs_warn("add_index: next_index = %d.  Resetting!",
-			   jfs_ip->next_index);
-		jfs_ip->next_index = 2;
-	}
+	if (jfs_ip->next_index < 3) {
+		jfs_ip->next_index = 3;
 
 	index = jfs_ip->next_index++;
 
@@ -2864,7 +2861,7 @@ void dtInitRoot(tid_t tid, struct inode *ip, u32 idotdot)
 		} else
 			ip->i_size = 1;
 
-		jfs_ip->next_index = 2;
+		jfs_ip->next_index = 3;
 	} else
 		ip->i_size = IDATASIZE;
 
@@ -2951,7 +2948,7 @@ static void add_missing_indices(struct inode *inode, s64 bn)
 	for (i = 0; i < p->header.nextindex; i++) {
 		d = (struct ldtentry *) &p->slot[stbl[i]];
 		index = le32_to_cpu(d->index);
-		if ((index < 2) || (index >= JFS_IP(inode)->next_index)) {
+		if ((index < 3) || (index >= JFS_IP(inode)->next_index)) {
 			d->index = cpu_to_le32(add_index(tid, inode, bn, i));
 			if (dtlck->index >= dtlck->maxcnt)
 				dtlck = (struct dt_lock *) txLinelock(dtlck);
@@ -3031,7 +3028,7 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 	struct jfs_dirent *jfs_dirent;
 	int jfs_dirents;
 	int overflow, fix_page, page_fixed = 0;
-	static int unique_pos = 2;	/* If we can't fix broken index */
+	static int unique_pos = 3;	/* If we can't fix broken index */
 
 	if (ctx->pos == DIREND)
 		return 0;
@@ -3039,15 +3036,16 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 	if (DO_INDEX(ip)) {
 		/*
 		 * persistent index is stored in directory entries.
-		 * Special cases:	 0 = .
-		 *			 1 = ..
+		 * Special cases:	 0 = rewind
+		 *			 1 = .
+		 *			 2 = ..
 		 *			-1 = End of directory
 		 */
 		do_index = 1;
 
 		dir_index = (u32) ctx->pos;
 
-		if (dir_index > 1) {
+		if (dir_index > 2) {
 			struct dir_table_slot dirtab_slot;
 
 			if (dtEmpty(ip) ||
@@ -3090,18 +3088,18 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 				return 0;
 			}
 		} else {
-			if (dir_index == 0) {
+			if (dir_index < 2) {
 				/*
 				 * self "."
 				 */
-				ctx->pos = 0;
+				ctx->pos = 1;
 				if (!dir_emit(ctx, ".", 1, ip->i_ino, DT_DIR))
 					return 0;
 			}
 			/*
 			 * parent ".."
 			 */
-			ctx->pos = 1;
+			ctx->pos = 2;
 			if (!dir_emit(ctx, "..", 2, PARENT(ip), DT_DIR))
 				return 0;
 
@@ -3122,22 +3120,24 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 		/*
 		 * Legacy filesystem - OS/2 & Linux JFS < 0.3.6
 		 *
-		 * pn = index = 0:	First entry "."
-		 * pn = 0; index = 1:	Second entry ".."
+		 * pn = 0; index = 1:	First entry "."
+		 * pn = 0; index = 2:	Second entry ".."
 		 * pn > 0:		Real entries, pn=1 -> leftmost page
 		 * pn = index = -1:	No more entries
 		 */
 		dtpos = ctx->pos;
-		if (dtpos == 0) {
+		if (dtpos < 2) {
+			ctx->pos = 1;
 			/* build "." entry */
 			if (!dir_emit(ctx, ".", 1, ip->i_ino, DT_DIR))
 				return 0;
-			dtoffset->index = 1;
+			dtoffset->index = 2;
 			ctx->pos = dtpos;
 		}
 
 		if (dtoffset->pn == 0) {
-			if (dtoffset->index == 1) {
+			if (dtoffset->index == 2) {
+				ctx->pos = 2;
 				/* build ".." entry */
 				if (!dir_emit(ctx, "..", 2, PARENT(ip), DT_DIR))
 					return 0;
@@ -3210,8 +3210,12 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 				 * directory index for the lost+found
 				 * directory.  Rather than let it go,
 				 * we can try to fix it.
+				 *
+				 * Additionally, a value of 2 used to be
+				 * valid, but it didn't work well with
+				 * NFSv4, so if found, we need to change it
 				 */
-				if ((jfs_dirent->position < 2) ||
+				if ((jfs_dirent->position < 3) ||
 				    (jfs_dirent->position >=
 				     JFS_IP(ip)->next_index)) {
 					if (!page_fixed && !isReadOnly(ip)) {

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: avoid misuse of cookie value of 2
  2013-08-15  3:54           ` [PATCH] jfs: avoid misuse of cookie value of 2 Dave Kleikamp
@ 2013-08-15  4:29             ` Christian Kujau
  2013-08-15  7:09               ` Christian Kujau
  2013-08-15 13:38             ` [PATCH] jfs: avoid misuse of cookie value of 2 J. Bruce Fields
  1 sibling, 1 reply; 24+ messages in thread
From: Christian Kujau @ 2013-08-15  4:29 UTC (permalink / raw)
  To: Dave Kleikamp
  Cc: J. Bruce Fields, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

On Wed, 14 Aug 2013 at 22:54, Dave Kleikamp wrote:
> It looks like the problem is that jfs was using a cookie value of 2 for
> a real directory entry, where NFSv4 expect 2 to represent "..". This
> patch has so far only been lightly tested.

Hm, a first compile of 3.11-rc5 errors out with:

  CC [M]  fs/jfs/jfs_dtree.o
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c: In function ‘add_index’:
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:493:13: error: invalid storage class for function ‘free_index’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:493:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:521:13: error: invalid storage class for function ‘modify_index’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:546:12: error: invalid storage class for function ‘read_index’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:927:12: error: invalid storage class for function ‘dtSplitUp’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:1327:12: error: invalid storage class for function ‘dtSplitPage’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:1639:12: error: invalid storage class for function ‘dtExtendPage’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:1872:12: error: invalid storage class for function ‘dtSplitRoot’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:2234:12: error: invalid storage class for function ‘dtDeleteUp’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:2744:12: error: invalid storage class for function ‘dtRelink’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:2915:13: error: invalid storage class for function ‘add_missing_indices’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:2982:34: error: invalid storage class for function ‘next_jfs_dirent’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:3333:12: error: invalid storage class for function ‘dtReadFirst’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:3405:12: error: invalid storage class for function ‘dtReadNext’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:3581:12: error: invalid storage class for function ‘dtCompare’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:3657:12: error: invalid storage class for function ‘ciCompare’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:3765:12: error: invalid storage class for function ‘ciGetLeafPrefixKey’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:3832:13: error: invalid storage class for function ‘dtGetKey’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:3896:13: error: invalid storage class for function ‘dtInsertEntry’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:4054:13: error: invalid storage class for function ‘dtMoveEntry’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:4255:13: error: invalid storage class for function ‘dtDeleteEntry’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:4350:13: error: invalid storage class for function ‘dtTruncateEntry’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:4430:13: error: invalid storage class for function ‘dtLinelockFreelist’
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:4565:1: error: expected declaration or statement at end of input
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c: At top level:
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:152:12: warning: ‘dtSplitUp’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:155:12: warning: ‘dtSplitPage’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:158:12: warning: ‘dtExtendPage’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:161:12: warning: ‘dtSplitRoot’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:164:12: warning: ‘dtDeleteUp’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:167:12: warning: ‘dtRelink’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:169:12: warning: ‘dtReadFirst’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:171:12: warning: ‘dtReadNext’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:174:12: warning: ‘dtCompare’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:176:12: warning: ‘ciCompare’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:179:13: warning: ‘dtGetKey’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:182:12: warning: ‘ciGetLeafPrefixKey’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:185:13: warning: ‘dtInsertEntry’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:188:13: warning: ‘dtMoveEntry’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:192:13: warning: ‘dtDeleteEntry’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:194:13: warning: ‘dtTruncateEntry’ used but never defined [enabled by default]
/usr/local/src/linux-git/fs/jfs/jfs_dtree.c:196:13: warning: ‘dtLinelockFreelist’ used but never defined [enabled by default]
make[7]: *** [fs/jfs/jfs_dtree.o] Error 1
make[7]: *** Waiting for unfinished jobs....
  CC      drivers/acpi/acpica/utmutex.o
  CC      drivers/acpi/acpica/utobject.o
make[6]: *** [fs/jfs] Error 2
make[5]: *** [fs] Error 2
make[5]: *** Waiting for unfinished jobs....


I'll run mrproper and try again...

Christian.
-- 
BOFH excuse #219:

Recursivity.  Call back if it happens again.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: avoid misuse of cookie value of 2
  2013-08-15  4:29             ` Christian Kujau
@ 2013-08-15  7:09               ` Christian Kujau
  2013-08-15 13:38                 ` Dave Kleikamp
  2013-08-15 20:48                 ` [PATCH] jfs: fix readdir cookie incompatibility with NFSv4 Dave Kleikamp
  0 siblings, 2 replies; 24+ messages in thread
From: Christian Kujau @ 2013-08-15  7:09 UTC (permalink / raw)
  To: Dave Kleikamp
  Cc: J. Bruce Fields, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

On Wed, 14 Aug 2013 at 21:29, Christian Kujau wrote:

> On Wed, 14 Aug 2013 at 22:54, Dave Kleikamp wrote:
> > It looks like the problem is that jfs was using a cookie value of 2 for
> > a real directory entry, where NFSv4 expect 2 to represent "..". This
> > patch has so far only been lightly tested.
> 
> Hm, a first compile of 3.11-rc5 errors out with:
> 
>   CC [M]  fs/jfs/jfs_dtree.o
> /usr/local/src/linux-git/fs/jfs/jfs_dtree.c: In function ‘add_index’:
> /usr/local/src/linux-git/fs/jfs/jfs_dtree.c:493:13: error: invalid storage class for function ‘free_index’
[...]
> 
> I'll run mrproper and try again...

This did not help, but adding a closing bracket did, in fs/jfs/jfs_dtree.c:354

        if (jfs_ip->next_index < 3) {
                jfs_ip->next_index = 3;
        }
   -----^

This compiled and booted and now I can run find(1) over that whole NFS 
share, without any "readdir loop" messages and with unique inode numbers, 
yay!

  Tested-by: Christian Kujau <lists@nerdbynature.de>

Thanks!
Christian.
-- 
BOFH excuse #36:

dynamic software linking table corrupted

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: avoid misuse of cookie value of 2
  2013-08-15  3:54           ` [PATCH] jfs: avoid misuse of cookie value of 2 Dave Kleikamp
  2013-08-15  4:29             ` Christian Kujau
@ 2013-08-15 13:38             ` J. Bruce Fields
  1 sibling, 0 replies; 24+ messages in thread
From: J. Bruce Fields @ 2013-08-15 13:38 UTC (permalink / raw)
  To: Dave Kleikamp
  Cc: Christian Kujau, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

On Wed, Aug 14, 2013 at 10:54:31PM -0500, Dave Kleikamp wrote:
> For the sake of those not watching
> https://bugzilla.kernel.org/show_bug.cgi?id=60737
> 
> It looks like the problem is that jfs was using a cookie value of 2 for
> a real directory entry, where NFSv4 expect 2 to represent "..". This
> patch has so far only been lightly tested.
> 
> NFSv4 reserves cookie values 0, 1 and 2 for a rewind, and the "." and ".."
> entries. jfs was using 0 and 1 for "." and "..", but 2 for a regular entry.
> This patch makes jfs conform by using 1 and 2 for "." and ".." and fixes
> any regular entry using the value 2.

Oh, I'd forgotten that.  From rfc 5661:

	For some file system environments, the directory entries "." and
	".." have special meaning, and in other environments, they do
	not.  If the server supports these special entries within a
	directory, they SHOULD NOT be returned to the client as part of
	the READDIR response.  To enable some client environments, the
	cookie values of zero, 1, and 2 are to be considered reserved.
	Note that the UNIX client will use these values when combining
	the server's response and local representations to enable a
	fully formed UNIX directory presentation to the application.

OK!

--b.

> 
> Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
> 
> diff --git a/fs/jfs/jfs_dtree.c b/fs/jfs/jfs_dtree.c
> index 8743ba9..93466e8 100644
> --- a/fs/jfs/jfs_dtree.c
> +++ b/fs/jfs/jfs_dtree.c
> @@ -349,11 +349,8 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
>  
>  	ASSERT(DO_INDEX(ip));
>  
> -	if (jfs_ip->next_index < 2) {
> -		jfs_warn("add_index: next_index = %d.  Resetting!",
> -			   jfs_ip->next_index);
> -		jfs_ip->next_index = 2;
> -	}
> +	if (jfs_ip->next_index < 3) {
> +		jfs_ip->next_index = 3;
>  
>  	index = jfs_ip->next_index++;
>  
> @@ -2864,7 +2861,7 @@ void dtInitRoot(tid_t tid, struct inode *ip, u32 idotdot)
>  		} else
>  			ip->i_size = 1;
>  
> -		jfs_ip->next_index = 2;
> +		jfs_ip->next_index = 3;
>  	} else
>  		ip->i_size = IDATASIZE;
>  
> @@ -2951,7 +2948,7 @@ static void add_missing_indices(struct inode *inode, s64 bn)
>  	for (i = 0; i < p->header.nextindex; i++) {
>  		d = (struct ldtentry *) &p->slot[stbl[i]];
>  		index = le32_to_cpu(d->index);
> -		if ((index < 2) || (index >= JFS_IP(inode)->next_index)) {
> +		if ((index < 3) || (index >= JFS_IP(inode)->next_index)) {
>  			d->index = cpu_to_le32(add_index(tid, inode, bn, i));
>  			if (dtlck->index >= dtlck->maxcnt)
>  				dtlck = (struct dt_lock *) txLinelock(dtlck);
> @@ -3031,7 +3028,7 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
>  	struct jfs_dirent *jfs_dirent;
>  	int jfs_dirents;
>  	int overflow, fix_page, page_fixed = 0;
> -	static int unique_pos = 2;	/* If we can't fix broken index */
> +	static int unique_pos = 3;	/* If we can't fix broken index */
>  
>  	if (ctx->pos == DIREND)
>  		return 0;
> @@ -3039,15 +3036,16 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
>  	if (DO_INDEX(ip)) {
>  		/*
>  		 * persistent index is stored in directory entries.
> -		 * Special cases:	 0 = .
> -		 *			 1 = ..
> +		 * Special cases:	 0 = rewind
> +		 *			 1 = .
> +		 *			 2 = ..
>  		 *			-1 = End of directory
>  		 */
>  		do_index = 1;
>  
>  		dir_index = (u32) ctx->pos;
>  
> -		if (dir_index > 1) {
> +		if (dir_index > 2) {
>  			struct dir_table_slot dirtab_slot;
>  
>  			if (dtEmpty(ip) ||
> @@ -3090,18 +3088,18 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
>  				return 0;
>  			}
>  		} else {
> -			if (dir_index == 0) {
> +			if (dir_index < 2) {
>  				/*
>  				 * self "."
>  				 */
> -				ctx->pos = 0;
> +				ctx->pos = 1;
>  				if (!dir_emit(ctx, ".", 1, ip->i_ino, DT_DIR))
>  					return 0;
>  			}
>  			/*
>  			 * parent ".."
>  			 */
> -			ctx->pos = 1;
> +			ctx->pos = 2;
>  			if (!dir_emit(ctx, "..", 2, PARENT(ip), DT_DIR))
>  				return 0;
>  
> @@ -3122,22 +3120,24 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
>  		/*
>  		 * Legacy filesystem - OS/2 & Linux JFS < 0.3.6
>  		 *
> -		 * pn = index = 0:	First entry "."
> -		 * pn = 0; index = 1:	Second entry ".."
> +		 * pn = 0; index = 1:	First entry "."
> +		 * pn = 0; index = 2:	Second entry ".."
>  		 * pn > 0:		Real entries, pn=1 -> leftmost page
>  		 * pn = index = -1:	No more entries
>  		 */
>  		dtpos = ctx->pos;
> -		if (dtpos == 0) {
> +		if (dtpos < 2) {
> +			ctx->pos = 1;
>  			/* build "." entry */
>  			if (!dir_emit(ctx, ".", 1, ip->i_ino, DT_DIR))
>  				return 0;
> -			dtoffset->index = 1;
> +			dtoffset->index = 2;
>  			ctx->pos = dtpos;
>  		}
>  
>  		if (dtoffset->pn == 0) {
> -			if (dtoffset->index == 1) {
> +			if (dtoffset->index == 2) {
> +				ctx->pos = 2;
>  				/* build ".." entry */
>  				if (!dir_emit(ctx, "..", 2, PARENT(ip), DT_DIR))
>  					return 0;
> @@ -3210,8 +3210,12 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
>  				 * directory index for the lost+found
>  				 * directory.  Rather than let it go,
>  				 * we can try to fix it.
> +				 *
> +				 * Additionally, a value of 2 used to be
> +				 * valid, but it didn't work well with
> +				 * NFSv4, so if found, we need to change it
>  				 */
> -				if ((jfs_dirent->position < 2) ||
> +				if ((jfs_dirent->position < 3) ||
>  				    (jfs_dirent->position >=
>  				     JFS_IP(ip)->next_index)) {
>  					if (!page_fixed && !isReadOnly(ip)) {

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: avoid misuse of cookie value of 2
  2013-08-15  7:09               ` Christian Kujau
@ 2013-08-15 13:38                 ` Dave Kleikamp
  2013-08-15 20:48                 ` [PATCH] jfs: fix readdir cookie incompatibility with NFSv4 Dave Kleikamp
  1 sibling, 0 replies; 24+ messages in thread
From: Dave Kleikamp @ 2013-08-15 13:38 UTC (permalink / raw)
  To: Christian Kujau
  Cc: J. Bruce Fields, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

On 08/15/2013 02:09 AM, Christian Kujau wrote:
> On Wed, 14 Aug 2013 at 21:29, Christian Kujau wrote:
> 
>> On Wed, 14 Aug 2013 at 22:54, Dave Kleikamp wrote:
>>> It looks like the problem is that jfs was using a cookie value of 2 for
>>> a real directory entry, where NFSv4 expect 2 to represent "..". This
>>> patch has so far only been lightly tested.
>>
>> Hm, a first compile of 3.11-rc5 errors out with:
>>
>>   CC [M]  fs/jfs/jfs_dtree.o
>> /usr/local/src/linux-git/fs/jfs/jfs_dtree.c: In function ‘add_index’:
>> /usr/local/src/linux-git/fs/jfs/jfs_dtree.c:493:13: error: invalid storage class for function ‘free_index’
> [...]
>>
>> I'll run mrproper and try again...
> 
> This did not help, but adding a closing bracket did, in fs/jfs/jfs_dtree.c:354
> 
>         if (jfs_ip->next_index < 3) {
>                 jfs_ip->next_index = 3;
>         }
>    -----^
> 
> This compiled and booted and now I can run find(1) over that whole NFS 
> share, without any "readdir loop" messages and with unique inode numbers, 
> yay!

My bad. That's what happens when you clean up the patch after you test
it. I intended to remove the opening bracket when I removed a warning.

>   Tested-by: Christian Kujau <lists@nerdbynature.de>

Thanks. After sleeping on it, I'm contemplating a simpler patch. I'll
keep you up to date.

> 
> Thanks!
> Christian.
> 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-15  7:09               ` Christian Kujau
  2013-08-15 13:38                 ` Dave Kleikamp
@ 2013-08-15 20:48                 ` Dave Kleikamp
  2013-08-15 21:26                   ` Christian Kujau
  2013-08-24 22:21                   ` [Jfs-discussion] " Christian Kujau
  1 sibling, 2 replies; 24+ messages in thread
From: Dave Kleikamp @ 2013-08-15 20:48 UTC (permalink / raw)
  To: Christian Kujau
  Cc: J. Bruce Fields, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

This patch replaces the one I posted yesterday. I like this better since
it doesn't require fixing existing on-disk cookies or skipping a
position in the in-inode index table.

NFSv4 reserves readdir cookie values 0-2 for special entries (. and ..),
but jfs allows a value of 2 for a non-special entry. This incompatibility
can result in the nfs client reporting a readdir loop.

This patch doesn't change the value stored internally, but adds one to
the value exposed to the iterate method.

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
---
 fs/jfs/jfs_dtree.c | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/fs/jfs/jfs_dtree.c b/fs/jfs/jfs_dtree.c
index 8743ba9..0ec767e 100644
--- a/fs/jfs/jfs_dtree.c
+++ b/fs/jfs/jfs_dtree.c
@@ -3047,6 +3047,14 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 
 		dir_index = (u32) ctx->pos;
 
+		/*
+		 * NFSv4 reserves cookies 1 and 2 for . and .. so we add
+		 * the value we return to the vfs is one greater than the
+		 * one we use internally.
+		 */
+		if (dir_index)
+			dir_index--;
+
 		if (dir_index > 1) {
 			struct dir_table_slot dirtab_slot;
 
@@ -3086,7 +3094,7 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 			if (p->header.flag & BT_INTERNAL) {
 				jfs_err("jfs_readdir: bad index table");
 				DT_PUTPAGE(mp);
-				ctx->pos = -1;
+				ctx->pos = DIREND;
 				return 0;
 			}
 		} else {
@@ -3094,14 +3102,14 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 				/*
 				 * self "."
 				 */
-				ctx->pos = 0;
+				ctx->pos = 1;
 				if (!dir_emit(ctx, ".", 1, ip->i_ino, DT_DIR))
 					return 0;
 			}
 			/*
 			 * parent ".."
 			 */
-			ctx->pos = 1;
+			ctx->pos = 2;
 			if (!dir_emit(ctx, "..", 2, PARENT(ip), DT_DIR))
 				return 0;
 
@@ -3122,22 +3130,23 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 		/*
 		 * Legacy filesystem - OS/2 & Linux JFS < 0.3.6
 		 *
-		 * pn = index = 0:	First entry "."
-		 * pn = 0; index = 1:	Second entry ".."
+		 * pn = 0; index = 1:	First entry "."
+		 * pn = 0; index = 2:	Second entry ".."
 		 * pn > 0:		Real entries, pn=1 -> leftmost page
 		 * pn = index = -1:	No more entries
 		 */
 		dtpos = ctx->pos;
-		if (dtpos == 0) {
+		if (dtpos < 2) {
 			/* build "." entry */
+			ctx->pos = 1;
 			if (!dir_emit(ctx, ".", 1, ip->i_ino, DT_DIR))
 				return 0;
-			dtoffset->index = 1;
+			dtoffset->index = 2;
 			ctx->pos = dtpos;
 		}
 
 		if (dtoffset->pn == 0) {
-			if (dtoffset->index == 1) {
+			if (dtoffset->index == 2) {
 				/* build ".." entry */
 				if (!dir_emit(ctx, "..", 2, PARENT(ip), DT_DIR))
 					return 0;
@@ -3228,6 +3237,12 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 					}
 					jfs_dirent->position = unique_pos++;
 				}
+				/*
+				 * We add 1 to the index because we may
+				 * use a value of 2 internally, and NFSv4
+				 * doesn't like that.
+				 */
+				jfs_dirent->position++;
 			} else {
 				jfs_dirent->position = dtpos;
 				len = min(d_namleft, DTLHDRDATALEN_LEGACY);
-- 
1.8.3.4


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-15 20:48                 ` [PATCH] jfs: fix readdir cookie incompatibility with NFSv4 Dave Kleikamp
@ 2013-08-15 21:26                   ` Christian Kujau
  2013-08-15 22:09                     ` Dave Kleikamp
  2013-08-17 20:01                     ` Ben Hutchings
  2013-08-24 22:21                   ` [Jfs-discussion] " Christian Kujau
  1 sibling, 2 replies; 24+ messages in thread
From: Christian Kujau @ 2013-08-15 21:26 UTC (permalink / raw)
  To: Dave Kleikamp
  Cc: J. Bruce Fields, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
> This patch replaces the one I posted yesterday. I like this better since
> it doesn't require fixing existing on-disk cookies or skipping a
> position in the in-inode index table.

Thanks. Applied to 3.11-rc5 and tested, no more "readdir loop" messages 
and with unique inode numbers, great!

  Tested-by: Christian Kujau <lists@nerdbynature.de>

Thanks for the fix!
Christian.
-- 
BOFH excuse #442:

Trojan horse ran out of hay

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-15 21:26                   ` Christian Kujau
@ 2013-08-15 22:09                     ` Dave Kleikamp
  2013-08-17 20:01                     ` Ben Hutchings
  1 sibling, 0 replies; 24+ messages in thread
From: Dave Kleikamp @ 2013-08-15 22:09 UTC (permalink / raw)
  To: Christian Kujau
  Cc: J. Bruce Fields, Karl Schmidt, Jonathan McDowell, jfs-discussion,
	714974, Ben Hutchings, linux-nfs

On 08/15/2013 04:26 PM, Christian Kujau wrote:
> On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
>> This patch replaces the one I posted yesterday. I like this better since
>> it doesn't require fixing existing on-disk cookies or skipping a
>> position in the in-inode index table.
> 
> Thanks. Applied to 3.11-rc5 and tested, no more "readdir loop" messages 
> and with unique inode numbers, great!
> 
>   Tested-by: Christian Kujau <lists@nerdbynature.de>
> 
> Thanks for the fix!
> Christian.

Thanks for reporting, investigating and testing!

Dave


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-15 21:26                   ` Christian Kujau
  2013-08-15 22:09                     ` Dave Kleikamp
@ 2013-08-17 20:01                     ` Ben Hutchings
  2013-08-19 19:11                       ` [JunkMail] " ben
  2013-08-29 22:48                       ` Jonathan McDowell
  1 sibling, 2 replies; 24+ messages in thread
From: Ben Hutchings @ 2013-08-17 20:01 UTC (permalink / raw)
  To: Karl Schmidt, Jonathan McDowell
  Cc: Dave Kleikamp, J. Bruce Fields, jfs-discussion, 714974,
	linux-nfs, Christian Kujau


[-- Attachment #1.1: Type: text/plain, Size: 794 bytes --]

On Thu, 2013-08-15 at 14:26 -0700, Christian Kujau wrote:
> On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
> > This patch replaces the one I posted yesterday. I like this better since
> > it doesn't require fixing existing on-disk cookies or skipping a
> > position in the in-inode index table.
> 
> Thanks. Applied to 3.11-rc5 and tested, no more "readdir loop" messages 
> and with unique inode numbers, great!
> 
>   Tested-by: Christian Kujau <lists@nerdbynature.de>

Karl and Jonathan, could you test the attached backport to 3.2?

(Instructions for rebuilding the Debian kernel package are at:
<http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-official>)

Ben.

-- 
Ben Hutchings
Teamwork is essential - it allows you to blame someone else.

[-- Attachment #1.2: jfs-fix-readdir-cookie-incompatibility-with-nfsv4-3.2.patch --]
[-- Type: text/x-patch, Size: 3500 bytes --]

Date: Thu, 15 Aug 2013 15:48:39 -0500
From: Dave Kleikamp <dave.kleikamp@oracle.com>
Subject: jfs: fix readdir cookie incompatibility with NFSv4

This patch replaces the one I posted yesterday. I like this better since
it doesn't require fixing existing on-disk cookies or skipping a
position in the in-inode index table.

NFSv4 reserves readdir cookie values 0-2 for special entries (. and ..),
but jfs allows a value of 2 for a non-special entry. This incompatibility
can result in the nfs client reporting a readdir loop.

This patch doesn't change the value stored internally, but adds one to
the value exposed to the iterate method.

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
[bwh: Backported to 3.2:
 - Adjust context
 - s/ctx->pos/filp->f_pos/]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 fs/jfs/jfs_dtree.c | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/fs/jfs/jfs_dtree.c b/fs/jfs/jfs_dtree.c
index 8743ba9..0ec767e 100644
--- a/fs/jfs/jfs_dtree.c
+++ b/fs/jfs/jfs_dtree.c
@@ -3047,6 +3047,14 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 
 		dir_index = (u32) filp->f_pos;
 
+		/*
+		 * NFSv4 reserves cookies 1 and 2 for . and .. so we add
+		 * the value we return to the vfs is one greater than the
+		 * one we use internally.
+		 */
+		if (dir_index)
+			dir_index--;
+
 		if (dir_index > 1) {
 			struct dir_table_slot dirtab_slot;
 
@@ -3086,7 +3094,7 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 			if (p->header.flag & BT_INTERNAL) {
 				jfs_err("jfs_readdir: bad index table");
 				DT_PUTPAGE(mp);
-				filp->f_pos = -1;
+				filp->f_pos = DIREND;
 				return 0;
 			}
 		} else {
@@ -3094,15 +3102,15 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 				/*
 				 * self "."
 				 */
-				filp->f_pos = 0;
+				filp->f_pos = 1;
 				if (filldir(dirent, ".", 1, 0, ip->i_ino,
 					    DT_DIR))
 					return 0;
 			}
 			/*
 			 * parent ".."
 			 */
-			filp->f_pos = 1;
+			filp->f_pos = 2;
 			if (filldir(dirent, "..", 2, 1, PARENT(ip), DT_DIR))
 				return 0;
 
@@ -3123,24 +3131,25 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 		/*
 		 * Legacy filesystem - OS/2 & Linux JFS < 0.3.6
 		 *
-		 * pn = index = 0:	First entry "."
-		 * pn = 0; index = 1:	Second entry ".."
+		 * pn = 0; index = 1:	First entry "."
+		 * pn = 0; index = 2:	Second entry ".."
 		 * pn > 0:		Real entries, pn=1 -> leftmost page
 		 * pn = index = -1:	No more entries
 		 */
 		dtpos = filp->f_pos;
-		if (dtpos == 0) {
+		if (dtpos < 2) {
 			/* build "." entry */
 
+			filp->f_pos = 1;
 			if (filldir(dirent, ".", 1, filp->f_pos, ip->i_ino,
 				    DT_DIR))
 				return 0;
-			dtoffset->index = 1;
+			dtoffset->index = 2;
 			filp->f_pos = dtpos;
 		}
 
 		if (dtoffset->pn == 0) {
-			if (dtoffset->index == 1) {
+			if (dtoffset->index == 2) {
 				/* build ".." entry */
 
 				if (filldir(dirent, "..", 2, filp->f_pos,
@@ -3233,6 +3242,12 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
 					}
 					jfs_dirent->position = unique_pos++;
 				}
+				/*
+				 * We add 1 to the index because we may
+				 * use a value of 2 internally, and NFSv4
+				 * doesn't like that.
+				 */
+				jfs_dirent->position++;
 			} else {
 				jfs_dirent->position = dtpos;
 				len = min(d_namleft, DTLHDRDATALEN_LEGACY);

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [JunkMail] Re: [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-17 20:01                     ` Ben Hutchings
@ 2013-08-19 19:11                       ` ben
  2013-08-29 22:48                       ` Jonathan McDowell
  1 sibling, 0 replies; 24+ messages in thread
From: ben @ 2013-08-19 19:11 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: Karl Schmidt, Jonathan McDowell, Dave Kleikamp, J. Bruce Fields,
	jfs-discussion, 714974, linux-nfs, Christian Kujau

On 8/17/2013 2:01 PM, Ben Hutchings wrote:
> On Thu, 2013-08-15 at 14:26 -0700, Christian Kujau wrote:
>> On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
>>> This patch replaces the one I posted yesterday. I like this better since
>>> it doesn't require fixing existing on-disk cookies or skipping a
>>> position in the in-inode index table.
>>
>> Thanks. Applied to 3.11-rc5 and tested, no more "readdir loop" messages 
>> and with unique inode numbers, great!
>>
>>   Tested-by: Christian Kujau <lists@nerdbynature.de>
> 
> Karl and Jonathan, could you test the attached backport to 3.2?
> 
> (Instructions for rebuilding the Debian kernel package are at:
> <http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-official>)
> 
> Ben.
> 
When I read this the other day I thought It was a great idea, but when
sleeping on it I have this gut feeling that somewhere there is a
jfs_dirent->position--; missing but I don't have enough familiarity with
the code to begin to guess where. Hopefully I am wrong.

ben

-- 
Ben Hildred
Support Services
Applied Plastic Coatings, Inc.
5000 Tabor St.
Wheat Ridge, CO 80033
303 424 9200
F: 303 424 8800
ben@appliedplastic.com
http://appliedplastic.com


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-15 20:48                 ` [PATCH] jfs: fix readdir cookie incompatibility with NFSv4 Dave Kleikamp
  2013-08-15 21:26                   ` Christian Kujau
@ 2013-08-24 22:21                   ` Christian Kujau
  2013-08-26 22:27                     ` Dave Kleikamp
  1 sibling, 1 reply; 24+ messages in thread
From: Christian Kujau @ 2013-08-24 22:21 UTC (permalink / raw)
  To: Dave Kleikamp
  Cc: Karl Schmidt, Jonathan McDowell, jfs-discussion, J. Bruce Fields,
	Ben Hutchings, linux-nfs

On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
> This patch replaces the one I posted yesterday. I like this better since
> it doesn't require fixing existing on-disk cookies or skipping a
> position in the in-inode index table.
> 
> NFSv4 reserves readdir cookie values 0-2 for special entries (. and ..),
> but jfs allows a value of 2 for a non-special entry. This incompatibility
> can result in the nfs client reporting a readdir loop.
> 
> This patch doesn't change the value stored internally, but adds one to
> the value exposed to the iterate method.

Out of curiosity, will this land on 3.11?

Christian.
-- 
BOFH excuse #102:

Power company testing new voltage spike (creation) equipment

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Jfs-discussion] [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-24 22:21                   ` [Jfs-discussion] " Christian Kujau
@ 2013-08-26 22:27                     ` Dave Kleikamp
  0 siblings, 0 replies; 24+ messages in thread
From: Dave Kleikamp @ 2013-08-26 22:27 UTC (permalink / raw)
  To: Christian Kujau
  Cc: Karl Schmidt, Jonathan McDowell, jfs-discussion, J. Bruce Fields,
	Ben Hutchings, linux-nfs

On 08/24/2013 05:21 PM, Christian Kujau wrote:
> On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
>> This patch replaces the one I posted yesterday. I like this better since
>> it doesn't require fixing existing on-disk cookies or skipping a
>> position in the in-inode index table.
>>
>> NFSv4 reserves readdir cookie values 0-2 for special entries (. and ..),
>> but jfs allows a value of 2 for a non-special entry. This incompatibility
>> can result in the nfs client reporting a readdir loop.
>>
>> This patch doesn't change the value stored internally, but adds one to
>> the value exposed to the iterate method.
> 
> Out of curiosity, will this land on 3.11?

Just sent a pull request to Linus. Once it's picked up, I'll submit a
patch to the stable trees.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-17 20:01                     ` Ben Hutchings
  2013-08-19 19:11                       ` [JunkMail] " ben
@ 2013-08-29 22:48                       ` Jonathan McDowell
  2013-09-05  3:40                         ` Bug#714974: " Jonathan McDowell
  1 sibling, 1 reply; 24+ messages in thread
From: Jonathan McDowell @ 2013-08-29 22:48 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: Karl Schmidt, Dave Kleikamp, J. Bruce Fields, jfs-discussion,
	714974, linux-nfs, Christian Kujau

[-- Attachment #1: Type: text/plain, Size: 978 bytes --]

On Sat, Aug 17, 2013 at 10:01:31PM +0200, Ben Hutchings wrote:
> On Thu, 2013-08-15 at 14:26 -0700, Christian Kujau wrote:
> > On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
> > > This patch replaces the one I posted yesterday. I like this better since
> > > it doesn't require fixing existing on-disk cookies or skipping a
> > > position in the in-inode index table.
> > 
> > Thanks. Applied to 3.11-rc5 and tested, no more "readdir loop" messages 
> > and with unique inode numbers, great!
> > 
> >   Tested-by: Christian Kujau <lists@nerdbynature.de>
> 
> Karl and Jonathan, could you test the attached backport to 3.2?

I finally managed to be able to schedule some downtime yesterday for one
of the machines I've been seeing this issue with. So far since the
reboot to this kernel (3.2.46-1 + the patch) I haven't seen a recurrence
of the problem; will update if I see anything.

J.

-- 
Just 'cause I remembered one thing doesn't make me smart!

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Bug#714974: [PATCH] jfs: fix readdir cookie incompatibility with NFSv4
  2013-08-29 22:48                       ` Jonathan McDowell
@ 2013-09-05  3:40                         ` Jonathan McDowell
  0 siblings, 0 replies; 24+ messages in thread
From: Jonathan McDowell @ 2013-09-05  3:40 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: Karl Schmidt, Dave Kleikamp, J. Bruce Fields, jfs-discussion,
	714974, linux-nfs, Christian Kujau

[-- Attachment #1: Type: text/plain, Size: 1472 bytes --]

On Thu, Aug 29, 2013 at 03:48:03PM -0700, Jonathan McDowell wrote:
> On Sat, Aug 17, 2013 at 10:01:31PM +0200, Ben Hutchings wrote:
> > On Thu, 2013-08-15 at 14:26 -0700, Christian Kujau wrote:
> > > On Thu, 15 Aug 2013 at 15:48, Dave Kleikamp wrote:
> > > > This patch replaces the one I posted yesterday. I like this
> > > > better since it doesn't require fixing existing on-disk cookies
> > > > or skipping a position in the in-inode index table.
> > > 
> > > Thanks. Applied to 3.11-rc5 and tested, no more "readdir loop"
> > > messages and with unique inode numbers, great!
> > > 
> > >   Tested-by: Christian Kujau <lists@nerdbynature.de>
> > 
> > Karl and Jonathan, could you test the attached backport to 3.2?
> 
> I finally managed to be able to schedule some downtime yesterday for
> one of the machines I've been seeing this issue with. So far since the
> reboot to this kernel (3.2.46-1 + the patch) I haven't seen a
> recurrence of the problem; will update if I see anything.

I see the patch hit 3.11, but just to confirm the 3.2 backport on top of
the Debian 3.2.46-1 kernel has seen no recurrence or issues in the past
week (with a set of JFS filesystems that are fairly extensively used
over NFS).

J.

-- 
Web [  Aunt Em: Hate Kansas. Hate you. Taking dog. Bye. Dorothy.   ]
site: http:// [                                          ]       Made by
www.earth.li/~noodles/  [                      ]         HuggieTag 0.0.24

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2013-09-05  3:41 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-08  1:13 NFS 'readdir loop' error on JFS Ben Hutchings
2013-07-08 14:02 ` bjschuma
2013-07-08 15:43 ` Karl Schmidt
2013-08-09 20:44 ` Karl Schmidt
2013-08-10  7:28   ` [Jfs-discussion] " Christian Kujau
2013-08-10 19:43     ` Karl Schmidt
2013-08-12  8:18     ` Christian Kujau
2013-08-12  8:29       ` Christian Kujau
2013-08-12 16:29         ` J. Bruce Fields
2013-08-12 20:04           ` Christian Kujau
2013-08-15  3:54           ` [PATCH] jfs: avoid misuse of cookie value of 2 Dave Kleikamp
2013-08-15  4:29             ` Christian Kujau
2013-08-15  7:09               ` Christian Kujau
2013-08-15 13:38                 ` Dave Kleikamp
2013-08-15 20:48                 ` [PATCH] jfs: fix readdir cookie incompatibility with NFSv4 Dave Kleikamp
2013-08-15 21:26                   ` Christian Kujau
2013-08-15 22:09                     ` Dave Kleikamp
2013-08-17 20:01                     ` Ben Hutchings
2013-08-19 19:11                       ` [JunkMail] " ben
2013-08-29 22:48                       ` Jonathan McDowell
2013-09-05  3:40                         ` Bug#714974: " Jonathan McDowell
2013-08-24 22:21                   ` [Jfs-discussion] " Christian Kujau
2013-08-26 22:27                     ` Dave Kleikamp
2013-08-15 13:38             ` [PATCH] jfs: avoid misuse of cookie value of 2 J. Bruce Fields

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.