Message ID | CAH2r5muv9GUh_guwBh1Wc0FEGQwFCYK83O8QEyTNncubAuhtEg@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | cifs: track writepages in vfs operation counters | expand |
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com> On Thu, Oct 11, 2018 at 4:14 PM Steve French <smfrench@gmail.com> 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@microsoft.com> > --- > 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
From 79ec5c09fb84ab57118d6a246d7f9483cc4b09b3 Mon Sep 17 00:00:00 2001 From: Steve French <stfrench@microsoft.com> Date: Thu, 11 Oct 2018 01:01:02 -0500 Subject: [PATCH] cifs: track writepages in vfs operation counters 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@microsoft.com> --- 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; } -- 2.17.1
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@microsoft.com> --- fs/cifs/file.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) * 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; }