Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
* 'for-linus' of git://oss.sgi.com/xfs/xfs: (23 commits) xfs: don't name variables "panic" xfs: factor agf counter updates into a helper xfs: clean up the xfs_alloc_compute_aligned calling convention xfs: kill support/debug.[ch] xfs: Convert remaining cmn_err() callers to new API xfs: convert the quota debug prints to new API xfs: rename xfs_cmn_err_fsblock_zero() xfs: convert xfs_fs_cmn_err to new error logging API xfs: kill xfs_fs_mount_cmn_err() macro xfs: kill xfs_fs_repair_cmn_err() macro xfs: convert xfs_cmn_err to xfs_alert_tag xfs: Convert xlog_warn to new logging interface xfs: Convert linux-2.6/ files to new logging interface xfs: introduce new logging API. xfs: zero proper structure size for geometry calls xfs: enable delaylog by default xfs: more sensible inode refcounting for ialloc xfs: stop using xfs_trans_iget in the RT allocator xfs: check if device support discard in xfs_ioc_trim() xfs: prevent leaking uninitialized stack memory in FSGEOMETRY_V1 ...
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
#include <linux/backing-dev.h>
|
||||
#include "time.h"
|
||||
#include "kmem.h"
|
||||
#include "xfs_message.h"
|
||||
|
||||
/*
|
||||
* Greedy allocation. May fail and may return vmalloced memory.
|
||||
@@ -56,8 +57,8 @@ kmem_alloc(size_t size, unsigned int __nocast flags)
|
||||
if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP)))
|
||||
return ptr;
|
||||
if (!(++retries % 100))
|
||||
printk(KERN_ERR "XFS: possible memory allocation "
|
||||
"deadlock in %s (mode:0x%x)\n",
|
||||
xfs_err(NULL,
|
||||
"possible memory allocation deadlock in %s (mode:0x%x)",
|
||||
__func__, lflags);
|
||||
congestion_wait(BLK_RW_ASYNC, HZ/50);
|
||||
} while (1);
|
||||
@@ -112,8 +113,8 @@ kmem_zone_alloc(kmem_zone_t *zone, unsigned int __nocast flags)
|
||||
if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP)))
|
||||
return ptr;
|
||||
if (!(++retries % 100))
|
||||
printk(KERN_ERR "XFS: possible memory allocation "
|
||||
"deadlock in %s (mode:0x%x)\n",
|
||||
xfs_err(NULL,
|
||||
"possible memory allocation deadlock in %s (mode:0x%x)",
|
||||
__func__, lflags);
|
||||
congestion_wait(BLK_RW_ASYNC, HZ/50);
|
||||
} while (1);
|
||||
|
@@ -854,7 +854,7 @@ xfs_aops_discard_page(
|
||||
if (XFS_FORCED_SHUTDOWN(ip->i_mount))
|
||||
goto out_invalidate;
|
||||
|
||||
xfs_fs_cmn_err(CE_ALERT, ip->i_mount,
|
||||
xfs_alert(ip->i_mount,
|
||||
"page discard on page %p, inode 0x%llx, offset %llu.",
|
||||
page, ip->i_ino, offset);
|
||||
|
||||
@@ -872,7 +872,7 @@ xfs_aops_discard_page(
|
||||
if (error) {
|
||||
/* something screwed, just bail */
|
||||
if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
|
||||
xfs_fs_cmn_err(CE_ALERT, ip->i_mount,
|
||||
xfs_alert(ip->i_mount,
|
||||
"page discard unable to remove delalloc mapping.");
|
||||
}
|
||||
break;
|
||||
@@ -1411,7 +1411,7 @@ xfs_vm_write_failed(
|
||||
if (error) {
|
||||
/* something screwed, just bail */
|
||||
if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
|
||||
xfs_fs_cmn_err(CE_ALERT, ip->i_mount,
|
||||
xfs_alert(ip->i_mount,
|
||||
"xfs_vm_write_failed: unable to clean up ino %lld",
|
||||
ip->i_ino);
|
||||
}
|
||||
|
@@ -401,9 +401,8 @@ _xfs_buf_lookup_pages(
|
||||
* handle buffer allocation failures we can't do much.
|
||||
*/
|
||||
if (!(++retries % 100))
|
||||
printk(KERN_ERR
|
||||
"XFS: possible memory allocation "
|
||||
"deadlock in %s (mode:0x%x)\n",
|
||||
xfs_err(NULL,
|
||||
"possible memory allocation deadlock in %s (mode:0x%x)",
|
||||
__func__, gfp_mask);
|
||||
|
||||
XFS_STATS_INC(xb_page_retries);
|
||||
@@ -615,8 +614,8 @@ xfs_buf_get(
|
||||
if (!(bp->b_flags & XBF_MAPPED)) {
|
||||
error = _xfs_buf_map_pages(bp, flags);
|
||||
if (unlikely(error)) {
|
||||
printk(KERN_WARNING "%s: failed to map pages\n",
|
||||
__func__);
|
||||
xfs_warn(target->bt_mount,
|
||||
"%s: failed to map pages\n", __func__);
|
||||
goto no_buffer;
|
||||
}
|
||||
}
|
||||
@@ -850,8 +849,8 @@ xfs_buf_get_uncached(
|
||||
|
||||
error = _xfs_buf_map_pages(bp, XBF_MAPPED);
|
||||
if (unlikely(error)) {
|
||||
printk(KERN_WARNING "%s: failed to map pages\n",
|
||||
__func__);
|
||||
xfs_warn(target->bt_mount,
|
||||
"%s: failed to map pages\n", __func__);
|
||||
goto fail_free_mem;
|
||||
}
|
||||
|
||||
@@ -1617,8 +1616,8 @@ xfs_setsize_buftarg_flags(
|
||||
btp->bt_smask = sectorsize - 1;
|
||||
|
||||
if (set_blocksize(btp->bt_bdev, sectorsize)) {
|
||||
printk(KERN_WARNING
|
||||
"XFS: Cannot set_blocksize to %u on device %s\n",
|
||||
xfs_warn(btp->bt_mount,
|
||||
"Cannot set_blocksize to %u on device %s\n",
|
||||
sectorsize, XFS_BUFTARG_NAME(btp));
|
||||
return EINVAL;
|
||||
}
|
||||
|
@@ -39,7 +39,6 @@
|
||||
#include <mrlock.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <support/debug.h>
|
||||
#include <support/uuid.h>
|
||||
|
||||
#include <linux/semaphore.h>
|
||||
@@ -86,6 +85,7 @@
|
||||
#include <xfs_aops.h>
|
||||
#include <xfs_super.h>
|
||||
#include <xfs_buf.h>
|
||||
#include <xfs_message.h>
|
||||
|
||||
/*
|
||||
* Feature macros (disable/enable)
|
||||
@@ -280,4 +280,25 @@ static inline __uint64_t howmany_64(__uint64_t x, __uint32_t y)
|
||||
#define __arch_pack
|
||||
#endif
|
||||
|
||||
#define ASSERT_ALWAYS(expr) \
|
||||
(unlikely(expr) ? (void)0 : assfail(#expr, __FILE__, __LINE__))
|
||||
|
||||
#ifndef DEBUG
|
||||
#define ASSERT(expr) ((void)0)
|
||||
|
||||
#ifndef STATIC
|
||||
# define STATIC static noinline
|
||||
#endif
|
||||
|
||||
#else /* DEBUG */
|
||||
|
||||
#define ASSERT(expr) \
|
||||
(unlikely(expr) ? (void)0 : assfail(#expr, __FILE__, __LINE__))
|
||||
|
||||
#ifndef STATIC
|
||||
# define STATIC noinline
|
||||
#endif
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
||||
#endif /* __XFS_LINUX__ */
|
||||
|
133
fs/xfs/linux-2.6/xfs_message.c
Normal file
133
fs/xfs/linux-2.6/xfs_message.c
Normal file
@@ -0,0 +1,133 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Red Hat, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it would be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "xfs.h"
|
||||
#include "xfs_fs.h"
|
||||
#include "xfs_types.h"
|
||||
#include "xfs_log.h"
|
||||
#include "xfs_inum.h"
|
||||
#include "xfs_trans.h"
|
||||
#include "xfs_sb.h"
|
||||
#include "xfs_ag.h"
|
||||
#include "xfs_mount.h"
|
||||
|
||||
/*
|
||||
* XFS logging functions
|
||||
*/
|
||||
static int
|
||||
__xfs_printk(
|
||||
const char *level,
|
||||
const struct xfs_mount *mp,
|
||||
struct va_format *vaf)
|
||||
{
|
||||
if (mp && mp->m_fsname)
|
||||
return printk("%sXFS (%s): %pV\n", level, mp->m_fsname, vaf);
|
||||
return printk("%sXFS: %pV\n", level, vaf);
|
||||
}
|
||||
|
||||
int xfs_printk(
|
||||
const char *level,
|
||||
const struct xfs_mount *mp,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
struct va_format vaf;
|
||||
va_list args;
|
||||
int r;
|
||||
|
||||
va_start(args, fmt);
|
||||
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
|
||||
r = __xfs_printk(level, mp, &vaf);
|
||||
va_end(args);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
#define define_xfs_printk_level(func, kern_level) \
|
||||
int func(const struct xfs_mount *mp, const char *fmt, ...) \
|
||||
{ \
|
||||
struct va_format vaf; \
|
||||
va_list args; \
|
||||
int r; \
|
||||
\
|
||||
va_start(args, fmt); \
|
||||
\
|
||||
vaf.fmt = fmt; \
|
||||
vaf.va = &args; \
|
||||
\
|
||||
r = __xfs_printk(kern_level, mp, &vaf); \
|
||||
va_end(args); \
|
||||
\
|
||||
return r; \
|
||||
} \
|
||||
|
||||
define_xfs_printk_level(xfs_emerg, KERN_EMERG);
|
||||
define_xfs_printk_level(xfs_alert, KERN_ALERT);
|
||||
define_xfs_printk_level(xfs_crit, KERN_CRIT);
|
||||
define_xfs_printk_level(xfs_err, KERN_ERR);
|
||||
define_xfs_printk_level(xfs_warn, KERN_WARNING);
|
||||
define_xfs_printk_level(xfs_notice, KERN_NOTICE);
|
||||
define_xfs_printk_level(xfs_info, KERN_INFO);
|
||||
#ifdef DEBUG
|
||||
define_xfs_printk_level(xfs_debug, KERN_DEBUG);
|
||||
#endif
|
||||
|
||||
int
|
||||
xfs_alert_tag(
|
||||
const struct xfs_mount *mp,
|
||||
int panic_tag,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
struct va_format vaf;
|
||||
va_list args;
|
||||
int do_panic = 0;
|
||||
int r;
|
||||
|
||||
if (xfs_panic_mask && (xfs_panic_mask & panic_tag)) {
|
||||
xfs_printk(KERN_ALERT, mp,
|
||||
"XFS: Transforming an alert into a BUG.");
|
||||
do_panic = 1;
|
||||
}
|
||||
|
||||
va_start(args, fmt);
|
||||
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
|
||||
r = __xfs_printk(KERN_ALERT, mp, &vaf);
|
||||
va_end(args);
|
||||
|
||||
BUG_ON(do_panic);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
void
|
||||
assfail(char *expr, char *file, int line)
|
||||
{
|
||||
xfs_emerg(NULL, "Assertion failed: %s, file: %s, line: %d",
|
||||
expr, file, line);
|
||||
BUG();
|
||||
}
|
||||
|
||||
void
|
||||
xfs_hex_dump(void *p, int length)
|
||||
{
|
||||
print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_ADDRESS, 16, 1, p, length, 1);
|
||||
}
|
38
fs/xfs/linux-2.6/xfs_message.h
Normal file
38
fs/xfs/linux-2.6/xfs_message.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#ifndef __XFS_MESSAGE_H
|
||||
#define __XFS_MESSAGE_H 1
|
||||
|
||||
struct xfs_mount;
|
||||
|
||||
extern int xfs_printk(const char *level, const struct xfs_mount *mp,
|
||||
const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 3, 4)));
|
||||
extern int xfs_emerg(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
extern int xfs_alert(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
extern int xfs_alert_tag(const struct xfs_mount *mp, int tag,
|
||||
const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 3, 4)));
|
||||
extern int xfs_crit(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
extern int xfs_err(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
extern int xfs_warn(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
extern int xfs_notice(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
extern int xfs_info(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
|
||||
#ifdef DEBUG
|
||||
extern int xfs_debug(const struct xfs_mount *mp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
#else
|
||||
#define xfs_debug(mp, fmt, ...) (0)
|
||||
#endif
|
||||
|
||||
extern void assfail(char *expr, char *f, int l);
|
||||
|
||||
extern void xfs_hex_dump(void *p, int length);
|
||||
|
||||
#endif /* __XFS_MESSAGE_H */
|
@@ -172,6 +172,15 @@ xfs_parseargs(
|
||||
int iosize = 0;
|
||||
__uint8_t iosizelog = 0;
|
||||
|
||||
/*
|
||||
* set up the mount name first so all the errors will refer to the
|
||||
* correct device.
|
||||
*/
|
||||
mp->m_fsname = kstrndup(sb->s_id, MAXNAMELEN, GFP_KERNEL);
|
||||
if (!mp->m_fsname)
|
||||
return ENOMEM;
|
||||
mp->m_fsname_len = strlen(mp->m_fsname) + 1;
|
||||
|
||||
/*
|
||||
* Copy binary VFS mount flags we are interested in.
|
||||
*/
|
||||
@@ -189,6 +198,7 @@ xfs_parseargs(
|
||||
mp->m_flags |= XFS_MOUNT_BARRIER;
|
||||
mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE;
|
||||
mp->m_flags |= XFS_MOUNT_SMALL_INUMS;
|
||||
mp->m_flags |= XFS_MOUNT_DELAYLOG;
|
||||
|
||||
/*
|
||||
* These can be overridden by the mount option parsing.
|
||||
@@ -207,24 +217,21 @@ xfs_parseargs(
|
||||
|
||||
if (!strcmp(this_char, MNTOPT_LOGBUFS)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
mp->m_logbufs = simple_strtoul(value, &eov, 10);
|
||||
} else if (!strcmp(this_char, MNTOPT_LOGBSIZE)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
mp->m_logbsize = suffix_strtoul(value, &eov, 10);
|
||||
} else if (!strcmp(this_char, MNTOPT_LOGDEV)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
@@ -232,14 +239,12 @@ xfs_parseargs(
|
||||
if (!mp->m_logname)
|
||||
return ENOMEM;
|
||||
} else if (!strcmp(this_char, MNTOPT_MTPT)) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option not allowed on this system",
|
||||
xfs_warn(mp, "%s option not allowed on this system",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
} else if (!strcmp(this_char, MNTOPT_RTDEV)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
@@ -248,8 +253,7 @@ xfs_parseargs(
|
||||
return ENOMEM;
|
||||
} else if (!strcmp(this_char, MNTOPT_BIOSIZE)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
@@ -257,8 +261,7 @@ xfs_parseargs(
|
||||
iosizelog = ffs(iosize) - 1;
|
||||
} else if (!strcmp(this_char, MNTOPT_ALLOCSIZE)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
@@ -280,16 +283,14 @@ xfs_parseargs(
|
||||
mp->m_flags |= XFS_MOUNT_SWALLOC;
|
||||
} else if (!strcmp(this_char, MNTOPT_SUNIT)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
dsunit = simple_strtoul(value, &eov, 10);
|
||||
} else if (!strcmp(this_char, MNTOPT_SWIDTH)) {
|
||||
if (!value || !*value) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option requires an argument",
|
||||
xfs_warn(mp, "%s option requires an argument",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
@@ -297,8 +298,7 @@ xfs_parseargs(
|
||||
} else if (!strcmp(this_char, MNTOPT_64BITINODE)) {
|
||||
mp->m_flags &= ~XFS_MOUNT_SMALL_INUMS;
|
||||
#if !XFS_BIG_INUMS
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: %s option not allowed on this system",
|
||||
xfs_warn(mp, "%s option not allowed on this system",
|
||||
this_char);
|
||||
return EINVAL;
|
||||
#endif
|
||||
@@ -356,20 +356,19 @@ xfs_parseargs(
|
||||
} else if (!strcmp(this_char, MNTOPT_NODELAYLOG)) {
|
||||
mp->m_flags &= ~XFS_MOUNT_DELAYLOG;
|
||||
} else if (!strcmp(this_char, "ihashsize")) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: ihashsize no longer used, option is deprecated.");
|
||||
xfs_warn(mp,
|
||||
"ihashsize no longer used, option is deprecated.");
|
||||
} else if (!strcmp(this_char, "osyncisdsync")) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: osyncisdsync has no effect, option is deprecated.");
|
||||
xfs_warn(mp,
|
||||
"osyncisdsync has no effect, option is deprecated.");
|
||||
} else if (!strcmp(this_char, "osyncisosync")) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: osyncisosync has no effect, option is deprecated.");
|
||||
xfs_warn(mp,
|
||||
"osyncisosync has no effect, option is deprecated.");
|
||||
} else if (!strcmp(this_char, "irixsgid")) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: irixsgid is now a sysctl(2) variable, option is deprecated.");
|
||||
xfs_warn(mp,
|
||||
"irixsgid is now a sysctl(2) variable, option is deprecated.");
|
||||
} else {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: unknown mount option [%s].", this_char);
|
||||
xfs_warn(mp, "unknown mount option [%s].", this_char);
|
||||
return EINVAL;
|
||||
}
|
||||
}
|
||||
@@ -379,40 +378,37 @@ xfs_parseargs(
|
||||
*/
|
||||
if ((mp->m_flags & XFS_MOUNT_NORECOVERY) &&
|
||||
!(mp->m_flags & XFS_MOUNT_RDONLY)) {
|
||||
cmn_err(CE_WARN, "XFS: no-recovery mounts must be read-only.");
|
||||
xfs_warn(mp, "no-recovery mounts must be read-only.");
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
if ((mp->m_flags & XFS_MOUNT_NOALIGN) && (dsunit || dswidth)) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: sunit and swidth options incompatible with the noalign option");
|
||||
xfs_warn(mp,
|
||||
"sunit and swidth options incompatible with the noalign option");
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_XFS_QUOTA
|
||||
if (XFS_IS_QUOTA_RUNNING(mp)) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: quota support not available in this kernel.");
|
||||
xfs_warn(mp, "quota support not available in this kernel.");
|
||||
return EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) &&
|
||||
(mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE))) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: cannot mount with both project and group quota");
|
||||
xfs_warn(mp, "cannot mount with both project and group quota");
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
if ((dsunit && !dswidth) || (!dsunit && dswidth)) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: sunit and swidth must be specified together");
|
||||
xfs_warn(mp, "sunit and swidth must be specified together");
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
if (dsunit && (dswidth % dsunit != 0)) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: stripe width (%d) must be a multiple of the stripe unit (%d)",
|
||||
xfs_warn(mp,
|
||||
"stripe width (%d) must be a multiple of the stripe unit (%d)",
|
||||
dswidth, dsunit);
|
||||
return EINVAL;
|
||||
}
|
||||
@@ -438,8 +434,7 @@ done:
|
||||
mp->m_logbufs != 0 &&
|
||||
(mp->m_logbufs < XLOG_MIN_ICLOGS ||
|
||||
mp->m_logbufs > XLOG_MAX_ICLOGS)) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: invalid logbufs value: %d [not %d-%d]",
|
||||
xfs_warn(mp, "invalid logbufs value: %d [not %d-%d]",
|
||||
mp->m_logbufs, XLOG_MIN_ICLOGS, XLOG_MAX_ICLOGS);
|
||||
return XFS_ERROR(EINVAL);
|
||||
}
|
||||
@@ -448,22 +443,16 @@ done:
|
||||
(mp->m_logbsize < XLOG_MIN_RECORD_BSIZE ||
|
||||
mp->m_logbsize > XLOG_MAX_RECORD_BSIZE ||
|
||||
!is_power_of_2(mp->m_logbsize))) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: invalid logbufsize: %d [not 16k,32k,64k,128k or 256k]",
|
||||
xfs_warn(mp,
|
||||
"invalid logbufsize: %d [not 16k,32k,64k,128k or 256k]",
|
||||
mp->m_logbsize);
|
||||
return XFS_ERROR(EINVAL);
|
||||
}
|
||||
|
||||
mp->m_fsname = kstrndup(sb->s_id, MAXNAMELEN, GFP_KERNEL);
|
||||
if (!mp->m_fsname)
|
||||
return ENOMEM;
|
||||
mp->m_fsname_len = strlen(mp->m_fsname) + 1;
|
||||
|
||||
if (iosizelog) {
|
||||
if (iosizelog > XFS_MAX_IO_LOG ||
|
||||
iosizelog < XFS_MIN_IO_LOG) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: invalid log iosize: %d [not %d-%d]",
|
||||
xfs_warn(mp, "invalid log iosize: %d [not %d-%d]",
|
||||
iosizelog, XFS_MIN_IO_LOG,
|
||||
XFS_MAX_IO_LOG);
|
||||
return XFS_ERROR(EINVAL);
|
||||
@@ -610,7 +599,7 @@ xfs_blkdev_get(
|
||||
mp);
|
||||
if (IS_ERR(*bdevp)) {
|
||||
error = PTR_ERR(*bdevp);
|
||||
printk("XFS: Invalid device [%s], error=%d\n", name, error);
|
||||
xfs_warn(mp, "Invalid device [%s], error=%d\n", name, error);
|
||||
}
|
||||
|
||||
return -error;
|
||||
@@ -664,23 +653,23 @@ xfs_mountfs_check_barriers(xfs_mount_t *mp)
|
||||
int error;
|
||||
|
||||
if (mp->m_logdev_targp != mp->m_ddev_targp) {
|
||||
xfs_fs_cmn_err(CE_NOTE, mp,
|
||||
xfs_notice(mp,
|
||||
"Disabling barriers, not supported with external log device");
|
||||
mp->m_flags &= ~XFS_MOUNT_BARRIER;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xfs_readonly_buftarg(mp->m_ddev_targp)) {
|
||||
xfs_fs_cmn_err(CE_NOTE, mp,
|
||||
"Disabling barriers, underlying device is readonly");
|
||||
xfs_notice(mp,
|
||||
"Disabling barriers, underlying device is readonly");
|
||||
mp->m_flags &= ~XFS_MOUNT_BARRIER;
|
||||
return;
|
||||
}
|
||||
|
||||
error = xfs_barrier_test(mp);
|
||||
if (error) {
|
||||
xfs_fs_cmn_err(CE_NOTE, mp,
|
||||
"Disabling barriers, trial barrier write failed");
|
||||
xfs_notice(mp,
|
||||
"Disabling barriers, trial barrier write failed");
|
||||
mp->m_flags &= ~XFS_MOUNT_BARRIER;
|
||||
return;
|
||||
}
|
||||
@@ -743,8 +732,8 @@ xfs_open_devices(
|
||||
goto out_close_logdev;
|
||||
|
||||
if (rtdev == ddev || rtdev == logdev) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: Cannot mount filesystem with identical rtdev and ddev/logdev.");
|
||||
xfs_warn(mp,
|
||||
"Cannot mount filesystem with identical rtdev and ddev/logdev.");
|
||||
error = EINVAL;
|
||||
goto out_close_rtdev;
|
||||
}
|
||||
@@ -1345,8 +1334,8 @@ xfs_fs_remount(
|
||||
* options that we can't actually change.
|
||||
*/
|
||||
#if 0
|
||||
printk(KERN_INFO
|
||||
"XFS: mount option \"%s\" not supported for remount\n", p);
|
||||
xfs_info(mp,
|
||||
"mount option \"%s\" not supported for remount\n", p);
|
||||
return -EINVAL;
|
||||
#else
|
||||
break;
|
||||
@@ -1367,8 +1356,7 @@ xfs_fs_remount(
|
||||
if (mp->m_update_flags) {
|
||||
error = xfs_mount_log_sb(mp, mp->m_update_flags);
|
||||
if (error) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: failed to write sb changes");
|
||||
xfs_warn(mp, "failed to write sb changes");
|
||||
return error;
|
||||
}
|
||||
mp->m_update_flags = 0;
|
||||
@@ -1452,15 +1440,15 @@ xfs_finish_flags(
|
||||
mp->m_logbsize = mp->m_sb.sb_logsunit;
|
||||
} else if (mp->m_logbsize > 0 &&
|
||||
mp->m_logbsize < mp->m_sb.sb_logsunit) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: logbuf size must be greater than or equal to log stripe size");
|
||||
xfs_warn(mp,
|
||||
"logbuf size must be greater than or equal to log stripe size");
|
||||
return XFS_ERROR(EINVAL);
|
||||
}
|
||||
} else {
|
||||
/* Fail a mount if the logbuf is larger than 32K */
|
||||
if (mp->m_logbsize > XLOG_BIG_RECORD_BSIZE) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: logbuf size for version 1 logs must be 16K or 32K");
|
||||
xfs_warn(mp,
|
||||
"logbuf size for version 1 logs must be 16K or 32K");
|
||||
return XFS_ERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
@@ -1477,8 +1465,8 @@ xfs_finish_flags(
|
||||
* prohibit r/w mounts of read-only filesystems
|
||||
*/
|
||||
if ((mp->m_sb.sb_flags & XFS_SBF_READONLY) && !ronly) {
|
||||
cmn_err(CE_WARN,
|
||||
"XFS: cannot mount a read-only filesystem as read-write");
|
||||
xfs_warn(mp,
|
||||
"cannot mount a read-only filesystem as read-write");
|
||||
return XFS_ERROR(EROFS);
|
||||
}
|
||||
|
||||
|
@@ -425,8 +425,7 @@ xfs_quiesce_attr(
|
||||
/* Push the superblock and write an unmount record */
|
||||
error = xfs_log_sbcount(mp, 1);
|
||||
if (error)
|
||||
xfs_fs_cmn_err(CE_WARN, mp,
|
||||
"xfs_attr_quiesce: failed to log sb changes. "
|
||||
xfs_warn(mp, "xfs_attr_quiesce: failed to log sb changes. "
|
||||
"Frozen image may not be consistent.");
|
||||
xfs_log_unmount_write(mp);
|
||||
xfs_unmountfs_writesb(mp);
|
||||
@@ -806,7 +805,7 @@ xfs_reclaim_inode(
|
||||
* pass on the error.
|
||||
*/
|
||||
if (error && error != EAGAIN && !XFS_FORCED_SHUTDOWN(ip->i_mount)) {
|
||||
xfs_fs_cmn_err(CE_WARN, ip->i_mount,
|
||||
xfs_warn(ip->i_mount,
|
||||
"inode 0x%llx background reclaim flush failed with %d",
|
||||
(long long)ip->i_ino, error);
|
||||
}
|
||||
|
@@ -37,7 +37,7 @@ xfs_stats_clear_proc_handler(
|
||||
ret = proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);
|
||||
|
||||
if (!ret && write && *valp) {
|
||||
printk("XFS Clearing xfsstats\n");
|
||||
xfs_notice(NULL, "Clearing xfsstats");
|
||||
for_each_possible_cpu(c) {
|
||||
preempt_disable();
|
||||
/* save vn_active, it's a universal truth! */
|
||||
|
Reference in New Issue
Block a user