lkml.org 
[lkml]   [2017]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 17/20] cifs: cleanup writeback handling errors and comments
    Date
    Now that writeback errors are handled on a per-file basis using the new
    sequence counter method at the vfs layer, we no longer need to re-set
    errors in the mapping after doing writeback in non-fsync codepaths.

    Also, fix up some bogus comments.

    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    ---
    fs/cifs/cifsfs.c | 4 +---
    fs/cifs/file.c | 7 ++-----
    fs/cifs/inode.c | 22 +++++++---------------
    3 files changed, 10 insertions(+), 23 deletions(-)

    diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
    index dd3f5fabfdf6..017a2d1d02c7 100644
    --- a/fs/cifs/cifsfs.c
    +++ b/fs/cifs/cifsfs.c
    @@ -829,10 +829,8 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int whence)
    if (!CIFS_CACHE_READ(CIFS_I(inode)) && inode->i_mapping &&
    inode->i_mapping->nrpages != 0) {
    rc = filemap_fdatawait(inode->i_mapping);
    - if (rc) {
    - mapping_set_error(inode->i_mapping, rc);
    + if (rc)
    return rc;
    - }
    }
    /*
    * Some applications poll for the file length in this strange
    diff --git a/fs/cifs/file.c b/fs/cifs/file.c
    index 4b696a23b0b1..9b4f7f182add 100644
    --- a/fs/cifs/file.c
    +++ b/fs/cifs/file.c
    @@ -722,9 +722,7 @@ cifs_reopen_file(struct cifsFileInfo *cfile, bool can_flush)
    cinode = CIFS_I(inode);

    if (can_flush) {
    - rc = filemap_write_and_wait(inode->i_mapping);
    - mapping_set_error(inode->i_mapping, rc);
    -
    + filemap_write_and_wait(inode->i_mapping);
    if (tcon->unix_ext)
    rc = cifs_get_inode_info_unix(&inode, full_path,
    inode->i_sb, xid);
    @@ -3906,8 +3904,7 @@ void cifs_oplock_break(struct work_struct *work)
    break_lease(inode, O_WRONLY);
    rc = filemap_fdatawrite(inode->i_mapping);
    if (!CIFS_CACHE_READ(cinode)) {
    - rc = filemap_fdatawait(inode->i_mapping);
    - mapping_set_error(inode->i_mapping, rc);
    + filemap_fdatawait(inode->i_mapping);
    cifs_zap_mapping(inode);
    }
    cifs_dbg(FYI, "Oplock flush inode %p rc %d\n", inode, rc);
    diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
    index b261db34103c..a58e605240fc 100644
    --- a/fs/cifs/inode.c
    +++ b/fs/cifs/inode.c
    @@ -2008,10 +2008,8 @@ int cifs_getattr(const struct path *path, struct kstat *stat,
    if (!CIFS_CACHE_READ(CIFS_I(inode)) && inode->i_mapping &&
    inode->i_mapping->nrpages != 0) {
    rc = filemap_fdatawait(inode->i_mapping);
    - if (rc) {
    - mapping_set_error(inode->i_mapping, rc);
    + if (rc)
    return rc;
    - }
    }

    rc = cifs_revalidate_dentry_attr(dentry);
    @@ -2171,15 +2169,12 @@ cifs_setattr_unix(struct dentry *direntry, struct iattr *attrs)
    * Attempt to flush data before changing attributes. We need to do
    * this for ATTR_SIZE and ATTR_MTIME for sure, and if we change the
    * ownership or mode then we may also need to do this. Here, we take
    - * the safe way out and just do the flush on all setattr requests. If
    - * the flush returns error, store it to report later and continue.
    + * the safe way out and just do the flush on all setattr requests.
    *
    * BB: This should be smarter. Why bother flushing pages that
    - * will be truncated anyway? Also, should we error out here if
    - * the flush returns error?
    + * will be truncated anyway?
    */
    - rc = filemap_write_and_wait(inode->i_mapping);
    - mapping_set_error(inode->i_mapping, rc);
    + filemap_write_and_wait(inode->i_mapping);
    rc = 0;

    if (attrs->ia_valid & ATTR_SIZE) {
    @@ -2314,15 +2309,12 @@ cifs_setattr_nounix(struct dentry *direntry, struct iattr *attrs)
    * Attempt to flush data before changing attributes. We need to do
    * this for ATTR_SIZE and ATTR_MTIME for sure, and if we change the
    * ownership or mode then we may also need to do this. Here, we take
    - * the safe way out and just do the flush on all setattr requests. If
    - * the flush returns error, store it to report later and continue.
    + * the safe way out and just do the flush on all setattr requests.
    *
    * BB: This should be smarter. Why bother flushing pages that
    - * will be truncated anyway? Also, should we error out here if
    - * the flush returns error?
    + * will be truncated anyway?
    */
    - rc = filemap_write_and_wait(inode->i_mapping);
    - mapping_set_error(inode->i_mapping, rc);
    + filemap_write_and_wait(inode->i_mapping);
    rc = 0;

    if (attrs->ia_valid & ATTR_SIZE) {
    --
    2.9.3
    \
     
     \ /
      Last update: 2017-04-24 15:30    [W:5.772 / U:1.336 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site