Re: [PATCH] cifs: track writepages in vfs operation counters

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

 



Reviewed-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx>
On Thu, Oct 11, 2018 at 4:14 PM Steve French <smfrench@xxxxxxxxx> wrote:
>
> writepages and readpages operations did not call get/free_xid
> so the statistics for file copy could get confusing with "vfs operations"
> not increasing.  Add get_xid and free_xid to cifs readpages and
> writepages functions.
>
> Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
> ---
>  fs/cifs/file.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
> index 00abaa1dce02..84477e995246 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -2107,6 +2107,7 @@ static int cifs_writepages(struct address_space *mapping,
>      pgoff_t end, index;
>      struct cifs_writedata *wdata;
>      int rc = 0;
> +    unsigned int xid;
>
>      /*
>       * If wsize is smaller than the page cache size, default to writing
> @@ -2115,6 +2116,7 @@ static int cifs_writepages(struct address_space *mapping,
>      if (cifs_sb->wsize < PAGE_SIZE)
>          return generic_writepages(mapping, wbc);
>
> +    xid = get_xid();
>      if (wbc->range_cyclic) {
>          index = mapping->writeback_index; /* Start from prev offset */
>          end = -1;
> @@ -2208,6 +2210,7 @@ static int cifs_writepages(struct address_space *mapping,
>      if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
>          mapping->writeback_index = index;
>
> +    free_xid(xid);
>      return rc;
>  }
>
> @@ -3752,7 +3755,9 @@ static int cifs_readpages(struct file *file,
> struct address_space *mapping,
>      struct cifs_sb_info *cifs_sb = CIFS_FILE_SB(file);
>      struct TCP_Server_Info *server;
>      pid_t pid;
> +    unsigned int xid;
>
> +    xid = get_xid();
>      /*
>       * Reads as many pages as possible from fscache. Returns -ENOBUFS
>       * immediately if the cookie is negative
> @@ -3762,8 +3767,10 @@ static int cifs_readpages(struct file *file,
> struct address_space *mapping,
>       */
>      rc = cifs_readpages_from_fscache(mapping->host, mapping, page_list,
>                       &num_pages);
> -    if (rc == 0)
> +    if (rc == 0) {
> +        free_xid(xid);
>          return rc;
> +    }
>
>      if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_RWPIDFORWARD)
>          pid = open_file->pid;
> @@ -3807,6 +3814,7 @@ static int cifs_readpages(struct file *file,
> struct address_space *mapping,
>           */
>          if (unlikely(rsize < PAGE_SIZE)) {
>              add_credits_and_wake_if(server, credits, 0);
> +            free_xid(xid);
>              return 0;
>          }
>
> @@ -3871,6 +3879,7 @@ static int cifs_readpages(struct file *file,
> struct address_space *mapping,
>       * allocator.
>       */
>      cifs_fscache_readpages_cancel(mapping->host, page_list);
> +    free_xid(xid);
>      return rc;
>  }
>
>
> --
> Thanks,
>
> Steve



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux