From: Eric Sandeen <sandeen@redhat.com>
To: xfs-oss <xfs@oss.sgi.com>
Subject: [PATCH] recover from iclog allocation failures
Date: Fri, 08 Feb 2008 23:45:53 -0600 [thread overview]
Message-ID: <47AD3E11.7020608@redhat.com> (raw)
A user in #xfs had some strange thing hogging up vmalloc
space, and after mounting several xfs filesystems with
aggressive log memory usage, started hitting vmalloc failures
which led to an oops.
I inserted a fake failure at i=3 in the iclog alloc loop, and
this patch let me exit with a graceful "ENOMEM" instead of an
oops.
Also, somehow the use of "uuid_mounted" has gone stale; after
the graceful mount failure, I got dup uuid errors on the next
mount. This patch fixes that problem as well.
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
---
Index: linux-2.6.24.noarch/fs/xfs/xfs_log.c
===================================================================
--- linux-2.6.24.noarch.orig/fs/xfs/xfs_log.c
+++ linux-2.6.24.noarch/fs/xfs/xfs_log.c
@@ -513,6 +513,8 @@ xfs_log_mount(xfs_mount_t *mp,
}
mp->m_log = xlog_alloc_log(mp, log_target, blk_offset, num_bblks);
+ if (!mp->m_log)
+ return ENOMEM;
/*
* skip log recovery on a norecovery mount. pretend it all
@@ -1219,6 +1221,13 @@ xlog_alloc_log(xfs_mount_t *mp,
prev_iclog = iclog;
bp = xfs_buf_get_noaddr(log->l_iclog_size, mp->m_logdev_targp);
+ if (!iclog || !bp) {
+ if (iclog)
+ kmem_free(iclog, sizeof(xlog_in_core_t));
+ log->l_iclog_bufs = i;
+ xlog_dealloc_log(log);
+ return NULL;
+ }
if (!XFS_BUF_CPSEMA(bp))
ASSERT(0);
XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone);
Index: linux-2.6.24.noarch/fs/xfs/xfs_mount.c
===================================================================
--- linux-2.6.24.noarch.orig/fs/xfs/xfs_mount.c
+++ linux-2.6.24.noarch/fs/xfs/xfs_mount.c
@@ -1007,6 +1007,7 @@ xfs_mountfs(
error = XFS_ERROR(EINVAL);
goto error1;
}
+ uuid_mounted = 1;
}
/*
next reply other threads:[~2008-02-09 6:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-09 5:45 Eric Sandeen [this message]
2008-02-09 6:33 ` [PATCH] recover from iclog allocation failures Christoph Hellwig
2008-02-09 6:44 ` Eric Sandeen
2008-02-09 20:45 ` Eric Sandeen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47AD3E11.7020608@redhat.com \
--to=sandeen@redhat.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox