Commit 583fa586 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Niv Sardi

kill vn_ioerror

There's just one caller of this helper, and it's much cleaner to just merge
the xfs_do_force_shutdown call into it.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <david@fromorbit.com>
Signed-off-by: default avatarNiv Sardi <xaiki@sgi.com>
parent f95099ba
...@@ -146,16 +146,25 @@ xfs_destroy_ioend( ...@@ -146,16 +146,25 @@ xfs_destroy_ioend(
xfs_ioend_t *ioend) xfs_ioend_t *ioend)
{ {
struct buffer_head *bh, *next; struct buffer_head *bh, *next;
struct xfs_inode *ip = XFS_I(ioend->io_inode);
for (bh = ioend->io_buffer_head; bh; bh = next) { for (bh = ioend->io_buffer_head; bh; bh = next) {
next = bh->b_private; next = bh->b_private;
bh->b_end_io(bh, !ioend->io_error); bh->b_end_io(bh, !ioend->io_error);
} }
if (unlikely(ioend->io_error)) {
vn_ioerror(XFS_I(ioend->io_inode), ioend->io_error, /*
__FILE__,__LINE__); * Volume managers supporting multiple paths can send back ENODEV
* when the final path disappears. In this case continuing to fill
* the page cache with dirty data which cannot be written out is
* evil, so prevent that.
*/
if (unlikely(ioend->io_error == -ENODEV)) {
xfs_do_force_shutdown(ip->i_mount, SHUTDOWN_DEVICE_REQ,
__FILE__, __LINE__);
} }
vn_iowake(XFS_I(ioend->io_inode));
vn_iowake(ip);
mempool_free(ioend, xfs_ioend_pool); mempool_free(ioend, xfs_ioend_pool);
} }
......
...@@ -66,22 +66,6 @@ vn_iowake( ...@@ -66,22 +66,6 @@ vn_iowake(
wake_up(vptosync(ip)); wake_up(vptosync(ip));
} }
/*
* Volume managers supporting multiple paths can send back ENODEV when the
* final path disappears. In this case continuing to fill the page cache
* with dirty data which cannot be written out is evil, so prevent that.
*/
void
vn_ioerror(
xfs_inode_t *ip,
int error,
char *f,
int l)
{
if (unlikely(error == -ENODEV))
xfs_do_force_shutdown(ip->i_mount, SHUTDOWN_DEVICE_REQ, f, l);
}
#ifdef XFS_INODE_TRACE #ifdef XFS_INODE_TRACE
#define KTRACE_ENTER(ip, vk, s, line, ra) \ #define KTRACE_ENTER(ip, vk, s, line, ra) \
......
...@@ -63,7 +63,6 @@ extern void vn_init(void); ...@@ -63,7 +63,6 @@ extern void vn_init(void);
*/ */
extern void vn_iowait(struct xfs_inode *ip); extern void vn_iowait(struct xfs_inode *ip);
extern void vn_iowake(struct xfs_inode *ip); extern void vn_iowake(struct xfs_inode *ip);
extern void vn_ioerror(struct xfs_inode *ip, int error, char *f, int l);
#define IHOLD(ip) \ #define IHOLD(ip) \
do { \ do { \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment