Comment 24 for bug 1124250

Carl Hetherington (cth-carlh) wrote :

I have poked at this a bit. On my system, running this:

while [ 1 ]; do
  touch foo
  test=`ls -lh foo | grep -v c.hetherington`
  if [ "$test" == "" ]; then
    echo "OOPS"
    echo $test
  sleep 1s
  rm foo

prints OOPS exactly 10 minutes after the first resolution of my username (c.hetherington) to my uid (10000). When this happens, -2 is returned as the uid/gid of the test file.

As far as I can see:

nfs_map_name_to_uid() returns -2 in *uid; it calls
nfs_idmap_lookup_id() which fails because it calls
nfs_idmap_get_key() which fails because it calls
nfs_idmap_request_key() which fails because it calls
request_key_with_auxdata() which fails because it calls
wait_for_key_construction() which fails because
key_validate() returns EKEYEXPIRED.

At some point subsequently, a new call to nfs_map_name_to_uid ends up calling /sbin/request-key after which everything is ok again.

I'm printk()ing the kernel and testing here so let me know if there's anything useful I can try.