Messages in this thread Patch in this message | | | Date | Mon, 6 Jun 2005 13:55:12 -0700 (PDT) | From | Christoph Lameter <> | Subject | [PATCH] Remove f_error field from struct file |
| |
To my surpise I found that the f_error field defined for struct file is never set to any error value. Its just checked in a couple of places. But why check if it never becomes != 0?
The following patch removes the f_error field and all checks of f_error.
Signed-off-by: Christoph Lameter <christoph@lameter.com>
Index: linux-2.6.12-rc5/fs/nfs/direct.c =================================================================== --- linux-2.6.12-rc5.orig/fs/nfs/direct.c 2005-06-06 20:43:34.000000000 +0000 +++ linux-2.6.12-rc5/fs/nfs/direct.c 2005-06-06 20:43:51.000000000 +0000 @@ -751,11 +751,6 @@ retval = -EFAULT; if (!access_ok(VERIFY_READ, iov.iov_base, iov.iov_len)) goto out; - if (file->f_error) { - retval = file->f_error; - file->f_error = 0; - goto out; - } retval = -EFBIG; if (limit != RLIM_INFINITY) { if (pos >= limit) { Index: linux-2.6.12-rc5/include/linux/fs.h =================================================================== --- linux-2.6.12-rc5.orig/include/linux/fs.h 2005-06-06 20:43:34.000000000 +0000 +++ linux-2.6.12-rc5/include/linux/fs.h 2005-06-06 20:43:51.000000000 +0000 @@ -581,7 +581,6 @@ atomic_t f_count; unsigned int f_flags; mode_t f_mode; - int f_error; loff_t f_pos; struct fown_struct f_owner; unsigned int f_uid, f_gid; Index: linux-2.6.12-rc5/fs/open.c =================================================================== --- linux-2.6.12-rc5.orig/fs/open.c 2005-06-06 20:43:34.000000000 +0000 +++ linux-2.6.12-rc5/fs/open.c 2005-06-06 20:43:51.000000000 +0000 @@ -980,23 +980,15 @@ */ int filp_close(struct file *filp, fl_owner_t id) { - int retval; - - /* Report and clear outstanding errors */ - retval = filp->f_error; - if (retval) - filp->f_error = 0; + int retval = 0; if (!file_count(filp)) { printk(KERN_ERR "VFS: Close: file count is 0\n"); - return retval; + return 0; } - if (filp->f_op && filp->f_op->flush) { - int err = filp->f_op->flush(filp); - if (!retval) - retval = err; - } + if (filp->f_op && filp->f_op->flush) + retval = filp->f_op->flush(filp); dnotify_flush(filp, id); locks_remove_posix(filp, id); Index: linux-2.6.12-rc5/mm/filemap.c =================================================================== --- linux-2.6.12-rc5.orig/mm/filemap.c 2005-06-06 20:43:34.000000000 +0000 +++ linux-2.6.12-rc5/mm/filemap.c 2005-06-06 20:43:51.000000000 +0000 @@ -1827,12 +1827,6 @@ if (unlikely(*pos < 0)) return -EINVAL; - if (unlikely(file->f_error)) { - int err = file->f_error; - file->f_error = 0; - return err; - } - if (!isblk) { /* FIXME: this is for backwards compatibility with 2.4 */ if (file->f_flags & O_APPEND) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |