Re: [PATCH 0/3] afs: Fix dynamic root interaction with failing DNS lookups

From: markus . suvanto
Date: Mon Dec 11 2023 - 16:34:04 EST


ma, 2023-12-11 kello 16:34 +0000, David Howells kirjoitti:
> Hi Markus, Marc,
>
> Here's a set of fixes to improve the interaction of arbitrary lookups in
> the AFS dynamic root that hit DNS lookup failures:
>
> (1) Always delete unused (particularly negative) dentries as soon as
> possible so that they don't prevent future lookups from retrying.
>
> (2) Fix the handling of new-style negative DNS lookups in ->lookup() to
> make them return ENOENT so that userspace doesn't get confused when
> stat succeeds but the following open on the looked up file then fails.
>
> (3) Fix key handling so that DNS lookup results are reclaimed as soon as
> they expire rather than sitting round either forever or for an
> additional 5 mins beyond a set expiry time returning EKEYEXPIRED.
>
> The patches can be found here:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=afs-fixes
>
I tested this patches
6.7.0-rc4-gdfbc00cb940b
It seems that not existing directory will remove my valid rxprc key.

Reproduce:
1) kinit ....
2) aklog....
3) keyctl show
Session Keyring
347100937 --alswrv 1001 65534 keyring: _uid_ses.1001
1062692655 --alswrv 1001 65534 \_ keyring: _uid.1001
698363997 --als-rv 1001 100 \_ rxrpc: afs@xxxxxxxxxxx

klist
Ticket cache: KEYRING:persistent:1001:1001
Default principal: .....
...

4) ls /afs/notfound
5) keyctl show
Session Keyring
709308533 --alswrv 1001 65534 keyring: _uid_ses.1001
385820479 --alswrv 1001 65534 \_ keyring: _uid.1001

klist
klist: Credentials cache keyring 'persistent:1001:1001' not found

-Markus