| From hch@infradead.org Tue Nov 22 13:37:09 2011 |
| From: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com> |
| Date: Sat, 19 Nov 2011 13:13:42 -0500 |
| Subject: xfs: Return -EIO when xfs_vn_getattr() failed |
| To: stable@vger.kernel.org |
| Cc: xfs@oss.sgi.com, Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>, Alex Elder <aelder@sgi.com> |
| Message-ID: <20111119181544.706389934@bombadil.infradead.org> |
| |
| From: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com> |
| |
| commit ed32201e65e15f3e6955cb84cbb544b08f81e5a5 upstream. |
| |
| An attribute of inode can be fetched via xfs_vn_getattr() in XFS. |
| Currently it returns EIO, not negative value, when it failed. As a |
| result, the system call returns not negative value even though an |
| error occured. The stat(2), ls and mv commands cannot handle this |
| error and do not work correctly. |
| |
| This patch fixes this bug, and returns -EIO, not EIO when an error |
| is detected in xfs_vn_getattr(). |
| |
| Signed-off-by: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Alex Elder <aelder@sgi.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/xfs/linux-2.6/xfs_iops.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/xfs/linux-2.6/xfs_iops.c |
| +++ b/fs/xfs/linux-2.6/xfs_iops.c |
| @@ -464,7 +464,7 @@ xfs_vn_getattr( |
| trace_xfs_getattr(ip); |
| |
| if (XFS_FORCED_SHUTDOWN(mp)) |
| - return XFS_ERROR(EIO); |
| + return -XFS_ERROR(EIO); |
| |
| stat->size = XFS_ISIZE(ip); |
| stat->dev = inode->i_sb->s_dev; |