Re: [PATCH 1/3] cifs: always revalidate hardlinked inodes
Jeff Layton <[email protected]> Mon, 17 May 2010 12:36:44 -0400
| Newsgroups | gmane.linux.file-systems.cifs |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 17 May 2010 10:34:03 -0500 Steve French <[email protected]> wrote: > Seems odd to turn off metadata caching completely for hardlinked > files. Wouldn't it be easier, and less invasive, to simply set > cifs_i->time to zero on source and destination inodes when the client > does the hardlink (so we revalidate the first time after the link is > done, but otherwise treat hardlinked files the same, and continue to > allow limited metadata caching on them)? > I do agree that this makes little sense, but what you suggest won't solve the problem. cifs_hardlink already does this: d_drop(direntry); /* force new lookup from server of target */ ...and: cifsInode = CIFS_I(old_file->d_inode); ... /* if not oplocked will force revalidate to get info on source file from srv */ cifsInode->time = 0; ...the reason the test doesn't pass is that the link count doesn't drop on the inode attached to one of the dentries when you unlink the other. What probably makes the most sense is to refuse to allow hardlinking of inodes when noserverino is set, but that might be considered a regression since older kernels allowed it. In short, it's a mess but this gets the behavior back to what it was originally. -- Jeff Layton <[email protected]>