Re: [linux-cifs-client] Re: fsx-linux failing with latest cifs-2.6 git tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 28, 2008 at 6:18 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
>> One minor thing -- you could do the !PageUptodate check first? If the
>> page is already uptodate, then everything is much simpler I think? (and
>> PageChecked should not be set).
>>
>> if (!PageUptodate(page)) {
>>     if (PageChecked(page)) {
>>         if (copied == len)
>>             SetPageUptodate(page);
>>         ClearPageChecked(page);
>>     } else if (copied == PAGE_CACHE_SIZE)
>>         SetPageUptodate(page);
>> }
>>
>> I don't know if you think that's better or not, but I really like to
>> make it clear that this is the !PageUptodate logic, and we never try
>> to SetPageUptodate on an already uptodate page.
>>
>> But I guess it is just a matter of style. So go with whatever you like
>> best.
> --------------[snip]---------------
> Subject: [PATCH] cifs: clean up conditionals in cifs_write_end
>
> Make it clear that the conditionals at the start of cifs_write_end are
> just for the situation when the page is not uptodate.
>
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> ---
>  fs/cifs/file.c |   12 +++++++-----
>  1 files changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
> index f0a81e6..202a20f 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -1475,12 +1475,14 @@ static int cifs_write_end(struct file *file, struct address_space *mapping,
>        cFYI(1, ("write_end for page %p from pos %lld with %d bytes",
>                 page, pos, copied));
>
> -       if (PageChecked(page)) {
> -               if (copied == len)
> +       if (!PageUptodate(page)) {
> +               if (PageChecked(page)) {
> +                       if (copied == len)
> +                               SetPageUptodate(page);
> +                       ClearPageChecked(page);
> +               } else if (copied == PAGE_CACHE_SIZE)
>                        SetPageUptodate(page);
> -               ClearPageChecked(page);
> -       } else if (!PageUptodate(page) && copied == PAGE_CACHE_SIZE)
> -               SetPageUptodate(page);
> +       }
>
>        if (!PageUptodate(page)) {
>                char *page_data;

Jeff and I just talked about his patch above, and decided not to make
his minor change above.  Moving PageUptodate check earlier would
complicate things in one way ... if PageChecked were ever set at the
same time as PageUptodate then PageChecked would stay set.  That is
probably not an issue but that is clearer with the original.

-- 
Thanks,

Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux