[PATCH] Remove f_error field from struct file

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

 



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 <[email protected]>

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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux