I have poked at this a bit. On my system, running this:
#!/bin/bash
while [ 1 ]; do
touch foo
test=`ls -lh foo | grep -v c.hetherington`
if [ "$test" == "" ]; then
echo "OOPS"
echo $test
fi
sleep 1s
rm foo
done
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.
I have poked at this a bit. On my system, running this:
#!/bin/bash
while [ 1 ]; do
touch foo
test=`ls -lh foo | grep -v c.hetherington`
if [ "$test" == "" ]; then
echo "OOPS"
echo $test
fi
sleep 1s
rm foo
done
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 lookup_ id() which fails because it calls request_ key() which fails because it calls key_with_ auxdata( ) which fails because it calls key_constructio n() which fails because
nfs_idmap_
nfs_idmap_get_key() which fails because it calls
nfs_idmap_
request_
wait_for_
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.