[patch] cifs: fix revalidation test in cifs_llseek()
Pavel Shilovsky
piastryyy at gmail.com
Fri Apr 27 06:59:07 MDT 2012
20 апреля 2012 г. 1:06 пользователь Dan Carpenter
<dan.carpenter at oracle.com> написал:
> This test is always true so it means we revalidate the length every
> time, which generates more network traffic. This was introduced in
> 06222e491e "fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that
> define their own llseek".
>
> Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
> ---
> Josef, there were three other places that had this same problem but I
> think they've all been fixed now. Except that I had a question about
> nfs_file_llseek(). Isn't that reversed? It seems like it only
> revalidates when it's not supposed to. I chose to copy what
> fuse_file_llseek() does instead.
>
> diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
> index d342128..97d26c7 100644
> --- a/fs/cifs/cifsfs.c
> +++ b/fs/cifs/cifsfs.c
> @@ -695,7 +695,7 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin)
> * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate
> * the cached file length
> */
> - if (origin != SEEK_SET || origin != SEEK_CUR) {
> + if (origin == SEEK_SET || origin == SEEK_CUR) {
> int rc;
> struct inode *inode = file->f_path.dentry->d_inode;
>
In this case the semantic contradict the comment above. May be it
should be "if (origin != SEEK_SET && origin != SEEK_CUR)"?
--
Best regards,
Pavel Shilovsky.
More information about the samba-technical
mailing list