Commit 3762ec6b authored by Nathan Scott's avatar Nathan Scott

[XFS] Merge in trivial changes, sync up headers with userspace

equivalents.

SGI-PV: 907752
SGI-Modid: xfs-linux-melb:xfs-kern:24961a
Signed-off-by: default avatarNathan Scott <nathans@sgi.com>
parent 6ab65429
...@@ -239,7 +239,7 @@ xfs_qm_dquot_logitem_pushbuf( ...@@ -239,7 +239,7 @@ xfs_qm_dquot_logitem_pushbuf(
* trying to duplicate our effort. * trying to duplicate our effort.
*/ */
ASSERT(qip->qli_pushbuf_flag != 0); ASSERT(qip->qli_pushbuf_flag != 0);
ASSERT(qip->qli_push_owner == get_thread_id()); ASSERT(qip->qli_push_owner == current_pid());
/* /*
* If flushlock isn't locked anymore, chances are that the * If flushlock isn't locked anymore, chances are that the
...@@ -333,7 +333,7 @@ xfs_qm_dquot_logitem_trylock( ...@@ -333,7 +333,7 @@ xfs_qm_dquot_logitem_trylock(
qip->qli_pushbuf_flag = 1; qip->qli_pushbuf_flag = 1;
ASSERT(qip->qli_format.qlf_blkno == dqp->q_blkno); ASSERT(qip->qli_format.qlf_blkno == dqp->q_blkno);
#ifdef DEBUG #ifdef DEBUG
qip->qli_push_owner = get_thread_id(); qip->qli_push_owner = current_pid();
#endif #endif
/* /*
* The dquot is left locked. * The dquot is left locked.
......
...@@ -32,39 +32,6 @@ static const char * const err_level[XFS_MAX_ERR_LEVEL+1] = ...@@ -32,39 +32,6 @@ static const char * const err_level[XFS_MAX_ERR_LEVEL+1] =
KERN_ERR, KERN_WARNING, KERN_NOTICE, KERN_ERR, KERN_WARNING, KERN_NOTICE,
KERN_INFO, KERN_DEBUG}; KERN_INFO, KERN_DEBUG};
void
assfail(char *a, char *f, int l)
{
printk("XFS assertion failed: %s, file: %s, line: %d\n", a, f, l);
BUG();
}
#if ((defined(DEBUG) || defined(INDUCE_IO_ERRROR)) && !defined(NO_WANT_RANDOM))
unsigned long
random(void)
{
static unsigned long RandomValue = 1;
/* cycles pseudo-randomly through all values between 1 and 2^31 - 2 */
register long rv = RandomValue;
register long lo;
register long hi;
hi = rv / 127773;
lo = rv % 127773;
rv = 16807 * lo - 2836 * hi;
if( rv <= 0 ) rv += 2147483647;
return( RandomValue = rv );
}
int
get_thread_id(void)
{
return current->pid;
}
#endif /* DEBUG || INDUCE_IO_ERRROR || !NO_WANT_RANDOM */
void void
cmn_err(register int level, char *fmt, ...) cmn_err(register int level, char *fmt, ...)
{ {
...@@ -90,7 +57,6 @@ cmn_err(register int level, char *fmt, ...) ...@@ -90,7 +57,6 @@ cmn_err(register int level, char *fmt, ...)
BUG(); BUG();
} }
void void
icmn_err(register int level, char *fmt, va_list ap) icmn_err(register int level, char *fmt, va_list ap)
{ {
...@@ -109,3 +75,27 @@ icmn_err(register int level, char *fmt, va_list ap) ...@@ -109,3 +75,27 @@ icmn_err(register int level, char *fmt, va_list ap)
if (level == CE_PANIC) if (level == CE_PANIC)
BUG(); BUG();
} }
void
assfail(char *expr, char *file, int line)
{
printk("Assertion failed: %s, file: %s, line: %d\n", expr, file, line);
BUG();
}
#if ((defined(DEBUG) || defined(INDUCE_IO_ERRROR)) && !defined(NO_WANT_RANDOM))
unsigned long random(void)
{
static unsigned long RandomValue = 1;
/* cycles pseudo-randomly through all values between 1 and 2^31 - 2 */
register long rv = RandomValue;
register long lo;
register long hi;
hi = rv / 127773;
lo = rv % 127773;
rv = 16807 * lo - 2836 * hi;
if (rv <= 0) rv += 2147483647;
return RandomValue = rv;
}
#endif /* DEBUG || INDUCE_IO_ERRROR || !NO_WANT_RANDOM */
...@@ -31,24 +31,23 @@ extern void icmn_err(int, char *, va_list) ...@@ -31,24 +31,23 @@ extern void icmn_err(int, char *, va_list)
__attribute__ ((format (printf, 2, 0))); __attribute__ ((format (printf, 2, 0)));
extern void cmn_err(int, char *, ...) extern void cmn_err(int, char *, ...)
__attribute__ ((format (printf, 2, 3))); __attribute__ ((format (printf, 2, 3)));
extern void assfail(char *expr, char *f, int l);
#ifndef STATIC #define prdev(fmt,targ,args...) \
# define STATIC static printk("Device %s - " fmt "\n", XFS_BUFTARG_NAME(targ), ## args)
#endif
#ifdef DEBUG #define ASSERT_ALWAYS(expr) \
# define ASSERT(EX) ((EX) ? ((void)0) : assfail(#EX, __FILE__, __LINE__)) (unlikely((expr) != 0) ? (void)0 : assfail(#expr, __FILE__, __LINE__))
#else
# define ASSERT(x) ((void)0)
#endif
extern void assfail(char *, char *, int); #ifndef DEBUG
#ifdef DEBUG # define ASSERT(expr) ((void)0)
#else
# define ASSERT(expr) ASSERT_ALWAYS(expr)
extern unsigned long random(void); extern unsigned long random(void);
extern int get_thread_id(void);
#endif #endif
#define ASSERT_ALWAYS(EX) ((EX)?((void)0):assfail(#EX, __FILE__, __LINE__)) #ifndef STATIC
#define debug_stop_all_cpus(param) /* param is "cpumask_t *" */ # define STATIC static
#endif
#endif /* __XFS_SUPPORT_DEBUG_H__ */ #endif /* __XFS_SUPPORT_DEBUG_H__ */
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
#define cpu_to_be16(val) ((__be16)(val)) #define cpu_to_be16(val) ((__be16)(val))
#define cpu_to_be32(val) ((__be32)(val)) #define cpu_to_be32(val) ((__be32)(val))
#define cpu_to_be64(val) ((__be64)(val)) #define cpu_to_be64(val) ((__be64)(val))
#define be16_to_cpu(val) ((__uint16_t)(val) #define be16_to_cpu(val) ((__uint16_t)(val))
#define be32_to_cpu(val) ((__uint32_t)(val)) #define be32_to_cpu(val) ((__uint32_t)(val))
#define be64_to_cpu(val) ((__uint64_t)(val)) #define be64_to_cpu(val) ((__uint64_t)(val))
#else #else
......
...@@ -63,7 +63,7 @@ struct xfs_trans; ...@@ -63,7 +63,7 @@ struct xfs_trans;
* the leaf_entry. The namespaces are independent only because we also look * the leaf_entry. The namespaces are independent only because we also look
* at the namespace bit when we are looking for a matching attribute name. * at the namespace bit when we are looking for a matching attribute name.
* *
* We also store a "incomplete" bit in the leaf_entry. It shows that an * We also store an "incomplete" bit in the leaf_entry. It shows that an
* attribute is in the middle of being created and should not be shown to * attribute is in the middle of being created and should not be shown to
* the user if we crash during the time that the bit is set. We clear the * the user if we crash during the time that the bit is set. We clear the
* bit when we have finished setting up the attribute. We do this because * bit when we have finished setting up the attribute. We do this because
...@@ -72,42 +72,48 @@ struct xfs_trans; ...@@ -72,42 +72,48 @@ struct xfs_trans;
*/ */
#define XFS_ATTR_LEAF_MAPSIZE 3 /* how many freespace slots */ #define XFS_ATTR_LEAF_MAPSIZE 3 /* how many freespace slots */
typedef struct xfs_attr_leafblock { typedef struct xfs_attr_leaf_map { /* RLE map of free bytes */
struct xfs_attr_leaf_hdr { /* constant-structure header block */ __uint16_t base; /* base of free region */
__uint16_t size; /* length of free region */
} xfs_attr_leaf_map_t;
typedef struct xfs_attr_leaf_hdr { /* constant-structure header block */
xfs_da_blkinfo_t info; /* block type, links, etc. */ xfs_da_blkinfo_t info; /* block type, links, etc. */
__uint16_t count; /* count of active leaf_entry's */ __uint16_t count; /* count of active leaf_entry's */
__uint16_t usedbytes; /* num bytes of names/values stored */ __uint16_t usedbytes; /* num bytes of names/values stored */
__uint16_t firstused; /* first used byte in name area */ __uint16_t firstused; /* first used byte in name area */
__uint8_t holes; /* != 0 if blk needs compaction */ __uint8_t holes; /* != 0 if blk needs compaction */
__uint8_t pad1; __uint8_t pad1;
struct xfs_attr_leaf_map { /* RLE map of free bytes */ xfs_attr_leaf_map_t freemap[XFS_ATTR_LEAF_MAPSIZE];
__uint16_t base; /* base of free region */ /* N largest free regions */
__uint16_t size; /* length of free region */ } xfs_attr_leaf_hdr_t;
} freemap[XFS_ATTR_LEAF_MAPSIZE]; /* N largest free regions */
} hdr; typedef struct xfs_attr_leaf_entry { /* sorted on key, not name */
struct xfs_attr_leaf_entry { /* sorted on key, not name */
xfs_dahash_t hashval; /* hash value of name */ xfs_dahash_t hashval; /* hash value of name */
__uint16_t nameidx; /* index into buffer of name/value */ __uint16_t nameidx; /* index into buffer of name/value */
__uint8_t flags; /* LOCAL/ROOT/SECURE/INCOMPLETE flag */ __uint8_t flags; /* LOCAL/ROOT/SECURE/INCOMPLETE flag */
__uint8_t pad2; /* unused pad byte */ __uint8_t pad2; /* unused pad byte */
} entries[1]; /* variable sized array */ } xfs_attr_leaf_entry_t;
struct xfs_attr_leaf_name_local {
typedef struct xfs_attr_leaf_name_local {
__uint16_t valuelen; /* number of bytes in value */ __uint16_t valuelen; /* number of bytes in value */
__uint8_t namelen; /* length of name bytes */ __uint8_t namelen; /* length of name bytes */
__uint8_t nameval[1]; /* name/value bytes */ __uint8_t nameval[1]; /* name/value bytes */
} namelist; /* grows from bottom of buf */ } xfs_attr_leaf_name_local_t;
struct xfs_attr_leaf_name_remote {
typedef struct xfs_attr_leaf_name_remote {
xfs_dablk_t valueblk; /* block number of value bytes */ xfs_dablk_t valueblk; /* block number of value bytes */
__uint32_t valuelen; /* number of bytes in value */ __uint32_t valuelen; /* number of bytes in value */
__uint8_t namelen; /* length of name bytes */ __uint8_t namelen; /* length of name bytes */
__uint8_t name[1]; /* name bytes */ __uint8_t name[1]; /* name bytes */
} valuelist; /* grows from bottom of buf */ } xfs_attr_leaf_name_remote_t;
typedef struct xfs_attr_leafblock {
xfs_attr_leaf_hdr_t hdr; /* constant-structure header block */
xfs_attr_leaf_entry_t entries[1]; /* sorted on key, not name */
xfs_attr_leaf_name_local_t namelist; /* grows from bottom of buf */
xfs_attr_leaf_name_remote_t valuelist; /* grows from bottom of buf */
} xfs_attr_leafblock_t; } xfs_attr_leafblock_t;
typedef struct xfs_attr_leaf_hdr xfs_attr_leaf_hdr_t;
typedef struct xfs_attr_leaf_map xfs_attr_leaf_map_t;
typedef struct xfs_attr_leaf_entry xfs_attr_leaf_entry_t;
typedef struct xfs_attr_leaf_name_local xfs_attr_leaf_name_local_t;
typedef struct xfs_attr_leaf_name_remote xfs_attr_leaf_name_remote_t;
/* /*
* Flags used in the leaf_entry[i].flags field. * Flags used in the leaf_entry[i].flags field.
...@@ -150,7 +156,8 @@ xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx) ...@@ -150,7 +156,8 @@ xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx)
(leafp))[INT_GET((leafp)->entries[idx].nameidx, ARCH_CONVERT)]; (leafp))[INT_GET((leafp)->entries[idx].nameidx, ARCH_CONVERT)];
} }
#define XFS_ATTR_LEAF_NAME(leafp,idx) xfs_attr_leaf_name(leafp,idx) #define XFS_ATTR_LEAF_NAME(leafp,idx) \
xfs_attr_leaf_name(leafp,idx)
static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx) static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx)
{ {
return (&((char *) return (&((char *)
......
...@@ -4493,8 +4493,8 @@ xfs_bmap_read_extents( ...@@ -4493,8 +4493,8 @@ xfs_bmap_read_extents(
num_recs = be16_to_cpu(block->bb_numrecs); num_recs = be16_to_cpu(block->bb_numrecs);
if (unlikely(i + num_recs > room)) { if (unlikely(i + num_recs > room)) {
ASSERT(i + num_recs <= room); ASSERT(i + num_recs <= room);
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt dinode %Lu, (btree extents). Unmount and run xfs_repair.", "corrupt dinode %Lu, (btree extents).",
(unsigned long long) ip->i_ino); (unsigned long long) ip->i_ino);
XFS_ERROR_REPORT("xfs_bmap_read_extents(1)", XFS_ERROR_REPORT("xfs_bmap_read_extents(1)",
XFS_ERRLEVEL_LOW, XFS_ERRLEVEL_LOW,
......
...@@ -67,34 +67,38 @@ struct xfs_trans; ...@@ -67,34 +67,38 @@ struct xfs_trans;
*/ */
#define XFS_DIR_LEAF_MAPSIZE 3 /* how many freespace slots */ #define XFS_DIR_LEAF_MAPSIZE 3 /* how many freespace slots */
typedef struct xfs_dir_leafblock { typedef struct xfs_dir_leaf_map { /* RLE map of free bytes */
struct xfs_dir_leaf_hdr { /* constant-structure header block */ __uint16_t base; /* base of free region */
__uint16_t size; /* run length of free region */
} xfs_dir_leaf_map_t;
typedef struct xfs_dir_leaf_hdr { /* constant-structure header block */
xfs_da_blkinfo_t info; /* block type, links, etc. */ xfs_da_blkinfo_t info; /* block type, links, etc. */
__uint16_t count; /* count of active leaf_entry's */ __uint16_t count; /* count of active leaf_entry's */
__uint16_t namebytes; /* num bytes of name strings stored */ __uint16_t namebytes; /* num bytes of name strings stored */
__uint16_t firstused; /* first used byte in name area */ __uint16_t firstused; /* first used byte in name area */
__uint8_t holes; /* != 0 if blk needs compaction */ __uint8_t holes; /* != 0 if blk needs compaction */
__uint8_t pad1; __uint8_t pad1;
struct xfs_dir_leaf_map {/* RLE map of free bytes */ xfs_dir_leaf_map_t freemap[XFS_DIR_LEAF_MAPSIZE];
__uint16_t base; /* base of free region */ } xfs_dir_leaf_hdr_t;
__uint16_t size; /* run length of free region */
} freemap[XFS_DIR_LEAF_MAPSIZE]; /* N largest free regions */ typedef struct xfs_dir_leaf_entry { /* sorted on key, not name */
} hdr;
struct xfs_dir_leaf_entry { /* sorted on key, not name */
xfs_dahash_t hashval; /* hash value of name */ xfs_dahash_t hashval; /* hash value of name */
__uint16_t nameidx; /* index into buffer of name */ __uint16_t nameidx; /* index into buffer of name */
__uint8_t namelen; /* length of name string */ __uint8_t namelen; /* length of name string */
__uint8_t pad2; __uint8_t pad2;
} entries[1]; /* var sized array */ } xfs_dir_leaf_entry_t;
struct xfs_dir_leaf_name {
typedef struct xfs_dir_leaf_name {
xfs_dir_ino_t inumber; /* inode number for this key */ xfs_dir_ino_t inumber; /* inode number for this key */
__uint8_t name[1]; /* name string itself */ __uint8_t name[1]; /* name string itself */
} namelist[1]; /* grows from bottom of buf */ } xfs_dir_leaf_name_t;
typedef struct xfs_dir_leafblock {
xfs_dir_leaf_hdr_t hdr; /* constant-structure header block */
xfs_dir_leaf_entry_t entries[1]; /* var sized array */
xfs_dir_leaf_name_t namelist[1]; /* grows from bottom of buf */
} xfs_dir_leafblock_t; } xfs_dir_leafblock_t;
typedef struct xfs_dir_leaf_hdr xfs_dir_leaf_hdr_t;
typedef struct xfs_dir_leaf_map xfs_dir_leaf_map_t;
typedef struct xfs_dir_leaf_entry xfs_dir_leaf_entry_t;
typedef struct xfs_dir_leaf_name xfs_dir_leaf_name_t;
/* /*
* Length of name for which a 512-byte block filesystem * Length of name for which a 512-byte block filesystem
...@@ -126,8 +130,7 @@ typedef union { ...@@ -126,8 +130,7 @@ typedef union {
#define XFS_PUT_COOKIE(c,mp,bno,entry,hash) \ #define XFS_PUT_COOKIE(c,mp,bno,entry,hash) \
((c).s.be = XFS_DA_MAKE_BNOENTRY(mp, bno, entry), (c).s.h = (hash)) ((c).s.be = XFS_DA_MAKE_BNOENTRY(mp, bno, entry), (c).s.h = (hash))
typedef struct xfs_dir_put_args typedef struct xfs_dir_put_args {
{
xfs_dircook_t cook; /* cookie of (next) entry */ xfs_dircook_t cook; /* cookie of (next) entry */
xfs_intino_t ino; /* inode number */ xfs_intino_t ino; /* inode number */
struct xfs_dirent *dbp; /* buffer pointer */ struct xfs_dirent *dbp; /* buffer pointer */
...@@ -138,7 +141,8 @@ typedef struct xfs_dir_put_args ...@@ -138,7 +141,8 @@ typedef struct xfs_dir_put_args
struct uio *uio; /* uio control structure */ struct uio *uio; /* uio control structure */
} xfs_dir_put_args_t; } xfs_dir_put_args_t;
#define XFS_DIR_LEAF_ENTSIZE_BYNAME(len) xfs_dir_leaf_entsize_byname(len) #define XFS_DIR_LEAF_ENTSIZE_BYNAME(len) \
xfs_dir_leaf_entsize_byname(len)
static inline int xfs_dir_leaf_entsize_byname(int len) static inline int xfs_dir_leaf_entsize_byname(int len)
{ {
return (uint)sizeof(xfs_dir_leaf_name_t)-1 + len; return (uint)sizeof(xfs_dir_leaf_name_t)-1 + len;
......
...@@ -54,7 +54,6 @@ xfs_error_trap(int e) ...@@ -54,7 +54,6 @@ xfs_error_trap(int e)
if (e != xfs_etrap[i]) if (e != xfs_etrap[i])
continue; continue;
cmn_err(CE_NOTE, "xfs_error_trap: error %d", e); cmn_err(CE_NOTE, "xfs_error_trap: error %d", e);
debug_stop_all_cpus((void *)-1LL);
BUG(); BUG();
break; break;
} }
......
...@@ -18,9 +18,6 @@ ...@@ -18,9 +18,6 @@
#ifndef __XFS_ERROR_H__ #ifndef __XFS_ERROR_H__
#define __XFS_ERROR_H__ #define __XFS_ERROR_H__
#define prdev(fmt,targ,args...) \
printk("XFS: device %s - " fmt "\n", XFS_BUFTARG_NAME(targ), ## args)
#define XFS_ERECOVER 1 /* Failure to recover log */ #define XFS_ERECOVER 1 /* Failure to recover log */
#define XFS_ELOGSTAT 2 /* Failure to stat log in user space */ #define XFS_ELOGSTAT 2 /* Failure to stat log in user space */
#define XFS_ENOLOGSPACE 3 /* Reservation too large */ #define XFS_ENOLOGSPACE 3 /* Reservation too large */
...@@ -186,4 +183,7 @@ extern void xfs_cmn_err(int panic_tag, int level, struct xfs_mount *mp, ...@@ -186,4 +183,7 @@ extern void xfs_cmn_err(int panic_tag, int level, struct xfs_mount *mp,
/* PRINTFLIKE3 */ /* PRINTFLIKE3 */
extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...); extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...);
#define xfs_fs_repair_cmn_err(level, mp, fmt, args...) \
xfs_fs_cmn_err(level, mp, fmt " Unmount and run xfs_repair.", ## args)
#endif /* __XFS_ERROR_H__ */ #endif /* __XFS_ERROR_H__ */
...@@ -404,9 +404,8 @@ xfs_iformat( ...@@ -404,9 +404,8 @@ xfs_iformat(
INT_GET(dip->di_core.di_nextents, ARCH_CONVERT) + INT_GET(dip->di_core.di_nextents, ARCH_CONVERT) +
INT_GET(dip->di_core.di_anextents, ARCH_CONVERT) > INT_GET(dip->di_core.di_anextents, ARCH_CONVERT) >
INT_GET(dip->di_core.di_nblocks, ARCH_CONVERT))) { INT_GET(dip->di_core.di_nblocks, ARCH_CONVERT))) {
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt dinode %Lu, extent total = %d, nblocks = %Lu." "corrupt dinode %Lu, extent total = %d, nblocks = %Lu.",
" Unmount and run xfs_repair.",
(unsigned long long)ip->i_ino, (unsigned long long)ip->i_ino,
(int)(INT_GET(dip->di_core.di_nextents, ARCH_CONVERT) (int)(INT_GET(dip->di_core.di_nextents, ARCH_CONVERT)
+ INT_GET(dip->di_core.di_anextents, ARCH_CONVERT)), + INT_GET(dip->di_core.di_anextents, ARCH_CONVERT)),
...@@ -418,9 +417,8 @@ xfs_iformat( ...@@ -418,9 +417,8 @@ xfs_iformat(
} }
if (unlikely(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT) > ip->i_mount->m_sb.sb_inodesize)) { if (unlikely(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT) > ip->i_mount->m_sb.sb_inodesize)) {
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt dinode %Lu, forkoff = 0x%x." "corrupt dinode %Lu, forkoff = 0x%x.",
" Unmount and run xfs_repair.",
(unsigned long long)ip->i_ino, (unsigned long long)ip->i_ino,
(int)(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT))); (int)(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT)));
XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW,
...@@ -451,8 +449,9 @@ xfs_iformat( ...@@ -451,8 +449,9 @@ xfs_iformat(
* no local regular files yet * no local regular files yet
*/ */
if (unlikely((INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFREG)) { if (unlikely((INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFREG)) {
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt inode (local format for regular file) %Lu. Unmount and run xfs_repair.", "corrupt inode %Lu "
"(local format for regular file).",
(unsigned long long) ip->i_ino); (unsigned long long) ip->i_ino);
XFS_CORRUPTION_ERROR("xfs_iformat(4)", XFS_CORRUPTION_ERROR("xfs_iformat(4)",
XFS_ERRLEVEL_LOW, XFS_ERRLEVEL_LOW,
...@@ -462,8 +461,9 @@ xfs_iformat( ...@@ -462,8 +461,9 @@ xfs_iformat(
di_size = INT_GET(dip->di_core.di_size, ARCH_CONVERT); di_size = INT_GET(dip->di_core.di_size, ARCH_CONVERT);
if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) {
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt inode %Lu (bad size %Ld for local inode). Unmount and run xfs_repair.", "corrupt inode %Lu "
"(bad size %Ld for local inode).",
(unsigned long long) ip->i_ino, (unsigned long long) ip->i_ino,
(long long) di_size); (long long) di_size);
XFS_CORRUPTION_ERROR("xfs_iformat(5)", XFS_CORRUPTION_ERROR("xfs_iformat(5)",
...@@ -551,8 +551,9 @@ xfs_iformat_local( ...@@ -551,8 +551,9 @@ xfs_iformat_local(
* kmem_alloc() or memcpy() below. * kmem_alloc() or memcpy() below.
*/ */
if (unlikely(size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { if (unlikely(size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) {
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt inode %Lu (bad size %d for local fork, size = %d). Unmount and run xfs_repair.", "corrupt inode %Lu "
"(bad size %d for local fork, size = %d).",
(unsigned long long) ip->i_ino, size, (unsigned long long) ip->i_ino, size,
XFS_DFORK_SIZE(dip, ip->i_mount, whichfork)); XFS_DFORK_SIZE(dip, ip->i_mount, whichfork));
XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW, XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW,
...@@ -610,8 +611,8 @@ xfs_iformat_extents( ...@@ -610,8 +611,8 @@ xfs_iformat_extents(
* kmem_alloc() or memcpy() below. * kmem_alloc() or memcpy() below.
*/ */
if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) {
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt inode %Lu ((a)extents = %d). Unmount and run xfs_repair.", "corrupt inode %Lu ((a)extents = %d).",
(unsigned long long) ip->i_ino, nex); (unsigned long long) ip->i_ino, nex);
XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW, XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW,
ip->i_mount, dip); ip->i_mount, dip);
...@@ -692,8 +693,8 @@ xfs_iformat_btree( ...@@ -692,8 +693,8 @@ xfs_iformat_btree(
|| XFS_BMDR_SPACE_CALC(nrecs) > || XFS_BMDR_SPACE_CALC(nrecs) >
XFS_DFORK_SIZE(dip, ip->i_mount, whichfork) XFS_DFORK_SIZE(dip, ip->i_mount, whichfork)
|| XFS_IFORK_NEXTENTS(ip, whichfork) > ip->i_d.di_nblocks)) { || XFS_IFORK_NEXTENTS(ip, whichfork) > ip->i_d.di_nblocks)) {
xfs_fs_cmn_err(CE_WARN, ip->i_mount, xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
"corrupt inode %Lu (btree). Unmount and run xfs_repair.", "corrupt inode %Lu (btree).",
(unsigned long long) ip->i_ino); (unsigned long long) ip->i_ino);
XFS_ERROR_REPORT("xfs_iformat_btree", XFS_ERRLEVEL_LOW, XFS_ERROR_REPORT("xfs_iformat_btree", XFS_ERRLEVEL_LOW,
ip->i_mount); ip->i_mount);
......
...@@ -608,7 +608,7 @@ xfs_inode_item_trylock( ...@@ -608,7 +608,7 @@ xfs_inode_item_trylock(
if (iip->ili_pushbuf_flag == 0) { if (iip->ili_pushbuf_flag == 0) {
iip->ili_pushbuf_flag = 1; iip->ili_pushbuf_flag = 1;
#ifdef DEBUG #ifdef DEBUG
iip->ili_push_owner = get_thread_id(); iip->ili_push_owner = current_pid();
#endif #endif
/* /*
* Inode is left locked in shared mode. * Inode is left locked in shared mode.
...@@ -787,7 +787,7 @@ xfs_inode_item_pushbuf( ...@@ -787,7 +787,7 @@ xfs_inode_item_pushbuf(
* trying to duplicate our effort. * trying to duplicate our effort.
*/ */
ASSERT(iip->ili_pushbuf_flag != 0); ASSERT(iip->ili_pushbuf_flag != 0);
ASSERT(iip->ili_push_owner == get_thread_id()); ASSERT(iip->ili_push_owner == current_pid());
/* /*
* If flushlock isn't locked anymore, chances are that the * If flushlock isn't locked anymore, chances are that the
......
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