tag 121701 upstream patch
thanks
Linux 2.6.5 fs/open.c source indicates that close() can return essentially any
file error:
|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;
|
|[...]
| return retval;
|}
|
|[...]
|
|asmlinkage long sys_close(unsigned int fd)
|{
|[...]
| return filp_close(filp, files);
|[...]
|}
manpages already alludes to this ("It is quite possible that errors on
a previous write(2) operation are first reported at the final
close()."); included is a patch making it explicit.
--- - 2007-01-06 12:38:58.649694000 -0500
+++ /tmp/close.2 2007-01-06 12:38:43.121398622 -0500
@@ -31,8 +31,10 @@
.\" Modified Fri Jan 31 16:21:46 1997 by Eric S. Raymond <[EMAIL PROTECTED]>
.\" Modified 2000-07-22 by Nicol?s Lichtmaier <[EMAIL PROTECTED]>
.\" added note about close(2) not guaranteeing that data is safe on close.
+.\" Modified 2007-01-07 by Justin Pryzby <[EMAIL PROTECTED]>
+.\" Reference errno values from write() in ERRORS
.\"
-.TH CLOSE 2 2001-12-13 "" "Linux Programmer's Manual"
+.TH CLOSE 2 2007-01-06 "" "Linux Programmer's Manual"
.SH NAME
close \- close a file descriptor
.SH SYNOPSIS
@@ -78,6 +80,12 @@
.TP
.B EIO
An I/O error occurred.
+.LP
+.BR close ()
+can also fail and set
+.I errno
+to any error specified for
+.BR write ().
.SH "CONFORMING TO"
SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents an additional ENOLINK error condition.