Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > kvmalloc() is the normal solution here. Usual reasons for not being > able to do that would be that you do DMA to the memory or that you need > to be able to free each of these objects individually. I don't need to DMA to the memory - but it might be worth my while removing status, cb_expires_at, cb_version and cb_type from struct afs_vnode and replacing them with an RCU-managed pointer to an afs_status_cb struct. I could then use plain RCU rather than a seqlock to manage reading from the record (the problem being that updating these records cannot be done atomically). That would allow me to make afs_d_revalidate() more efficient by doing the checks first in LOOKUP_RCU mode. I'm not sure it's worth the extra RCU load, though. David