diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/quota/xfs_dquot_item.c | 4 | ||||
-rw-r--r-- | fs/xfs/support/debug.c | 58 | ||||
-rw-r--r-- | fs/xfs/support/debug.h | 25 | ||||
-rw-r--r-- | fs/xfs/xfs_arch.h | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_attr_leaf.h | 79 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap.c | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_dir_leaf.h | 64 | ||||
-rw-r--r-- | fs/xfs/xfs_error.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_error.h | 8 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.c | 33 | ||||
-rw-r--r-- | fs/xfs/xfs_inode_item.c | 4 |
11 files changed, 141 insertions, 141 deletions
diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index 2f69822344e5..2ec6b441849c 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c | |||
@@ -239,7 +239,7 @@ xfs_qm_dquot_logitem_pushbuf( | |||
239 | * trying to duplicate our effort. | 239 | * trying to duplicate our effort. |
240 | */ | 240 | */ |
241 | ASSERT(qip->qli_pushbuf_flag != 0); | 241 | ASSERT(qip->qli_pushbuf_flag != 0); |
242 | ASSERT(qip->qli_push_owner == get_thread_id()); | 242 | ASSERT(qip->qli_push_owner == current_pid()); |
243 | 243 | ||
244 | /* | 244 | /* |
245 | * If flushlock isn't locked anymore, chances are that the | 245 | * If flushlock isn't locked anymore, chances are that the |
@@ -333,7 +333,7 @@ xfs_qm_dquot_logitem_trylock( | |||
333 | qip->qli_pushbuf_flag = 1; | 333 | qip->qli_pushbuf_flag = 1; |
334 | ASSERT(qip->qli_format.qlf_blkno == dqp->q_blkno); | 334 | ASSERT(qip->qli_format.qlf_blkno == dqp->q_blkno); |
335 | #ifdef DEBUG | 335 | #ifdef DEBUG |
336 | qip->qli_push_owner = get_thread_id(); | 336 | qip->qli_push_owner = current_pid(); |
337 | #endif | 337 | #endif |
338 | /* | 338 | /* |
339 | * The dquot is left locked. | 339 | * The dquot is left locked. |
diff --git a/fs/xfs/support/debug.c b/fs/xfs/support/debug.c index e281c3a71ad0..b08b3d9345b7 100644 --- a/fs/xfs/support/debug.c +++ b/fs/xfs/support/debug.c | |||
@@ -33,39 +33,6 @@ static const char * const err_level[XFS_MAX_ERR_LEVEL+1] = | |||
33 | KERN_INFO, KERN_DEBUG}; | 33 | KERN_INFO, KERN_DEBUG}; |
34 | 34 | ||
35 | void | 35 | void |
36 | assfail(char *a, char *f, int l) | ||
37 | { | ||
38 | printk("XFS assertion failed: %s, file: %s, line: %d\n", a, f, l); | ||
39 | BUG(); | ||
40 | } | ||
41 | |||
42 | #if ((defined(DEBUG) || defined(INDUCE_IO_ERRROR)) && !defined(NO_WANT_RANDOM)) | ||
43 | |||
44 | unsigned long | ||
45 | random(void) | ||
46 | { | ||
47 | static unsigned long RandomValue = 1; | ||
48 | /* cycles pseudo-randomly through all values between 1 and 2^31 - 2 */ | ||
49 | register long rv = RandomValue; | ||
50 | register long lo; | ||
51 | register long hi; | ||
52 | |||
53 | hi = rv / 127773; | ||
54 | lo = rv % 127773; | ||
55 | rv = 16807 * lo - 2836 * hi; | ||
56 | if( rv <= 0 ) rv += 2147483647; | ||
57 | return( RandomValue = rv ); | ||
58 | } | ||
59 | |||
60 | int | ||
61 | get_thread_id(void) | ||
62 | { | ||
63 | return current->pid; | ||
64 | } | ||
65 | |||
66 | #endif /* DEBUG || INDUCE_IO_ERRROR || !NO_WANT_RANDOM */ | ||
67 | |||
68 | void | ||
69 | cmn_err(register int level, char *fmt, ...) | 36 | cmn_err(register int level, char *fmt, ...) |
70 | { | 37 | { |
71 | char *fp = fmt; | 38 | char *fp = fmt; |
@@ -90,7 +57,6 @@ cmn_err(register int level, char *fmt, ...) | |||
90 | BUG(); | 57 | BUG(); |
91 | } | 58 | } |
92 | 59 | ||
93 | |||
94 | void | 60 | void |
95 | icmn_err(register int level, char *fmt, va_list ap) | 61 | icmn_err(register int level, char *fmt, va_list ap) |
96 | { | 62 | { |
@@ -109,3 +75,27 @@ icmn_err(register int level, char *fmt, va_list ap) | |||
109 | if (level == CE_PANIC) | 75 | if (level == CE_PANIC) |
110 | BUG(); | 76 | BUG(); |
111 | } | 77 | } |
78 | |||
79 | void | ||
80 | assfail(char *expr, char *file, int line) | ||
81 | { | ||
82 | printk("Assertion failed: %s, file: %s, line: %d\n", expr, file, line); | ||
83 | BUG(); | ||
84 | } | ||
85 | |||
86 | #if ((defined(DEBUG) || defined(INDUCE_IO_ERRROR)) && !defined(NO_WANT_RANDOM)) | ||
87 | unsigned long random(void) | ||
88 | { | ||
89 | static unsigned long RandomValue = 1; | ||
90 | /* cycles pseudo-randomly through all values between 1 and 2^31 - 2 */ | ||
91 | register long rv = RandomValue; | ||
92 | register long lo; | ||
93 | register long hi; | ||
94 | |||
95 | hi = rv / 127773; | ||
96 | lo = rv % 127773; | ||
97 | rv = 16807 * lo - 2836 * hi; | ||
98 | if (rv <= 0) rv += 2147483647; | ||
99 | return RandomValue = rv; | ||
100 | } | ||
101 | #endif /* DEBUG || INDUCE_IO_ERRROR || !NO_WANT_RANDOM */ | ||
diff --git a/fs/xfs/support/debug.h b/fs/xfs/support/debug.h index aff558664c32..e3bf58112e7e 100644 --- a/fs/xfs/support/debug.h +++ b/fs/xfs/support/debug.h | |||
@@ -31,24 +31,23 @@ extern void icmn_err(int, char *, va_list) | |||
31 | __attribute__ ((format (printf, 2, 0))); | 31 | __attribute__ ((format (printf, 2, 0))); |
32 | extern void cmn_err(int, char *, ...) | 32 | extern void cmn_err(int, char *, ...) |
33 | __attribute__ ((format (printf, 2, 3))); | 33 | __attribute__ ((format (printf, 2, 3))); |
34 | extern void assfail(char *expr, char *f, int l); | ||
34 | 35 | ||
35 | #ifndef STATIC | 36 | #define prdev(fmt,targ,args...) \ |
36 | # define STATIC static | 37 | printk("Device %s - " fmt "\n", XFS_BUFTARG_NAME(targ), ## args) |
37 | #endif | ||
38 | 38 | ||
39 | #ifdef DEBUG | 39 | #define ASSERT_ALWAYS(expr) \ |
40 | # define ASSERT(EX) ((EX) ? ((void)0) : assfail(#EX, __FILE__, __LINE__)) | 40 | (unlikely((expr) != 0) ? (void)0 : assfail(#expr, __FILE__, __LINE__)) |
41 | #else | ||
42 | # define ASSERT(x) ((void)0) | ||
43 | #endif | ||
44 | 41 | ||
45 | extern void assfail(char *, char *, int); | 42 | #ifndef DEBUG |
46 | #ifdef DEBUG | 43 | # define ASSERT(expr) ((void)0) |
44 | #else | ||
45 | # define ASSERT(expr) ASSERT_ALWAYS(expr) | ||
47 | extern unsigned long random(void); | 46 | extern unsigned long random(void); |
48 | extern int get_thread_id(void); | ||
49 | #endif | 47 | #endif |
50 | 48 | ||
51 | #define ASSERT_ALWAYS(EX) ((EX)?((void)0):assfail(#EX, __FILE__, __LINE__)) | 49 | #ifndef STATIC |
52 | #define debug_stop_all_cpus(param) /* param is "cpumask_t *" */ | 50 | # define STATIC static |
51 | #endif | ||
53 | 52 | ||
54 | #endif /* __XFS_SUPPORT_DEBUG_H__ */ | 53 | #endif /* __XFS_SUPPORT_DEBUG_H__ */ |
diff --git a/fs/xfs/xfs_arch.h b/fs/xfs/xfs_arch.h index 71de20cedb5c..c4836890b726 100644 --- a/fs/xfs/xfs_arch.h +++ b/fs/xfs/xfs_arch.h | |||
@@ -44,7 +44,7 @@ | |||
44 | #define cpu_to_be16(val) ((__be16)(val)) | 44 | #define cpu_to_be16(val) ((__be16)(val)) |
45 | #define cpu_to_be32(val) ((__be32)(val)) | 45 | #define cpu_to_be32(val) ((__be32)(val)) |
46 | #define cpu_to_be64(val) ((__be64)(val)) | 46 | #define cpu_to_be64(val) ((__be64)(val)) |
47 | #define be16_to_cpu(val) ((__uint16_t)(val) | 47 | #define be16_to_cpu(val) ((__uint16_t)(val)) |
48 | #define be32_to_cpu(val) ((__uint32_t)(val)) | 48 | #define be32_to_cpu(val) ((__uint32_t)(val)) |
49 | #define be64_to_cpu(val) ((__uint64_t)(val)) | 49 | #define be64_to_cpu(val) ((__uint64_t)(val)) |
50 | #else | 50 | #else |
diff --git a/fs/xfs/xfs_attr_leaf.h b/fs/xfs/xfs_attr_leaf.h index f6143ff251a0..541e34109bb9 100644 --- a/fs/xfs/xfs_attr_leaf.h +++ b/fs/xfs/xfs_attr_leaf.h | |||
@@ -63,7 +63,7 @@ struct xfs_trans; | |||
63 | * the leaf_entry. The namespaces are independent only because we also look | 63 | * the leaf_entry. The namespaces are independent only because we also look |
64 | * at the namespace bit when we are looking for a matching attribute name. | 64 | * at the namespace bit when we are looking for a matching attribute name. |
65 | * | 65 | * |
66 | * We also store a "incomplete" bit in the leaf_entry. It shows that an | 66 | * We also store an "incomplete" bit in the leaf_entry. It shows that an |
67 | * attribute is in the middle of being created and should not be shown to | 67 | * attribute is in the middle of being created and should not be shown to |
68 | * the user if we crash during the time that the bit is set. We clear the | 68 | * the user if we crash during the time that the bit is set. We clear the |
69 | * bit when we have finished setting up the attribute. We do this because | 69 | * bit when we have finished setting up the attribute. We do this because |
@@ -72,42 +72,48 @@ struct xfs_trans; | |||
72 | */ | 72 | */ |
73 | #define XFS_ATTR_LEAF_MAPSIZE 3 /* how many freespace slots */ | 73 | #define XFS_ATTR_LEAF_MAPSIZE 3 /* how many freespace slots */ |
74 | 74 | ||
75 | typedef struct xfs_attr_leaf_map { /* RLE map of free bytes */ | ||
76 | __uint16_t base; /* base of free region */ | ||
77 | __uint16_t size; /* length of free region */ | ||
78 | } xfs_attr_leaf_map_t; | ||
79 | |||
80 | typedef struct xfs_attr_leaf_hdr { /* constant-structure header block */ | ||
81 | xfs_da_blkinfo_t info; /* block type, links, etc. */ | ||
82 | __uint16_t count; /* count of active leaf_entry's */ | ||
83 | __uint16_t usedbytes; /* num bytes of names/values stored */ | ||
84 | __uint16_t firstused; /* first used byte in name area */ | ||
85 | __uint8_t holes; /* != 0 if blk needs compaction */ | ||
86 | __uint8_t pad1; | ||
87 | xfs_attr_leaf_map_t freemap[XFS_ATTR_LEAF_MAPSIZE]; | ||
88 | /* N largest free regions */ | ||
89 | } xfs_attr_leaf_hdr_t; | ||
90 | |||
91 | typedef struct xfs_attr_leaf_entry { /* sorted on key, not name */ | ||
92 | xfs_dahash_t hashval; /* hash value of name */ | ||
93 | __uint16_t nameidx; /* index into buffer of name/value */ | ||
94 | __uint8_t flags; /* LOCAL/ROOT/SECURE/INCOMPLETE flag */ | ||
95 | __uint8_t pad2; /* unused pad byte */ | ||
96 | } xfs_attr_leaf_entry_t; | ||
97 | |||
98 | typedef struct xfs_attr_leaf_name_local { | ||
99 | __uint16_t valuelen; /* number of bytes in value */ | ||
100 | __uint8_t namelen; /* length of name bytes */ | ||
101 | __uint8_t nameval[1]; /* name/value bytes */ | ||
102 | } xfs_attr_leaf_name_local_t; | ||
103 | |||
104 | typedef struct xfs_attr_leaf_name_remote { | ||
105 | xfs_dablk_t valueblk; /* block number of value bytes */ | ||
106 | __uint32_t valuelen; /* number of bytes in value */ | ||
107 | __uint8_t namelen; /* length of name bytes */ | ||
108 | __uint8_t name[1]; /* name bytes */ | ||
109 | } xfs_attr_leaf_name_remote_t; | ||
110 | |||
75 | typedef struct xfs_attr_leafblock { | 111 | typedef struct xfs_attr_leafblock { |
76 | struct xfs_attr_leaf_hdr { /* constant-structure header block */ | 112 | xfs_attr_leaf_hdr_t hdr; /* constant-structure header block */ |
77 | xfs_da_blkinfo_t info; /* block type, links, etc. */ | 113 | xfs_attr_leaf_entry_t entries[1]; /* sorted on key, not name */ |
78 | __uint16_t count; /* count of active leaf_entry's */ | 114 | xfs_attr_leaf_name_local_t namelist; /* grows from bottom of buf */ |
79 | __uint16_t usedbytes; /* num bytes of names/values stored */ | 115 | xfs_attr_leaf_name_remote_t valuelist; /* grows from bottom of buf */ |
80 | __uint16_t firstused; /* first used byte in name area */ | ||
81 | __uint8_t holes; /* != 0 if blk needs compaction */ | ||
82 | __uint8_t pad1; | ||
83 | struct xfs_attr_leaf_map { /* RLE map of free bytes */ | ||
84 | __uint16_t base; /* base of free region */ | ||
85 | __uint16_t size; /* length of free region */ | ||
86 | } freemap[XFS_ATTR_LEAF_MAPSIZE]; /* N largest free regions */ | ||
87 | } hdr; | ||
88 | struct xfs_attr_leaf_entry { /* sorted on key, not name */ | ||
89 | xfs_dahash_t hashval; /* hash value of name */ | ||
90 | __uint16_t nameidx; /* index into buffer of name/value */ | ||
91 | __uint8_t flags; /* LOCAL/ROOT/SECURE/INCOMPLETE flag */ | ||
92 | __uint8_t pad2; /* unused pad byte */ | ||
93 | } entries[1]; /* variable sized array */ | ||
94 | struct xfs_attr_leaf_name_local { | ||
95 | __uint16_t valuelen; /* number of bytes in value */ | ||
96 | __uint8_t namelen; /* length of name bytes */ | ||
97 | __uint8_t nameval[1]; /* name/value bytes */ | ||
98 | } namelist; /* grows from bottom of buf */ | ||
99 | struct xfs_attr_leaf_name_remote { | ||
100 | xfs_dablk_t valueblk; /* block number of value bytes */ | ||
101 | __uint32_t valuelen; /* number of bytes in value */ | ||
102 | __uint8_t namelen; /* length of name bytes */ | ||
103 | __uint8_t name[1]; /* name bytes */ | ||
104 | } valuelist; /* grows from bottom of buf */ | ||
105 | } xfs_attr_leafblock_t; | 116 | } xfs_attr_leafblock_t; |
106 | typedef struct xfs_attr_leaf_hdr xfs_attr_leaf_hdr_t; | ||
107 | typedef struct xfs_attr_leaf_map xfs_attr_leaf_map_t; | ||
108 | typedef struct xfs_attr_leaf_entry xfs_attr_leaf_entry_t; | ||
109 | typedef struct xfs_attr_leaf_name_local xfs_attr_leaf_name_local_t; | ||
110 | typedef struct xfs_attr_leaf_name_remote xfs_attr_leaf_name_remote_t; | ||
111 | 117 | ||
112 | /* | 118 | /* |
113 | * Flags used in the leaf_entry[i].flags field. | 119 | * 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 | (leafp))[INT_GET((leafp)->entries[idx].nameidx, ARCH_CONVERT)]; | 156 | (leafp))[INT_GET((leafp)->entries[idx].nameidx, ARCH_CONVERT)]; |
151 | } | 157 | } |
152 | 158 | ||
153 | #define XFS_ATTR_LEAF_NAME(leafp,idx) xfs_attr_leaf_name(leafp,idx) | 159 | #define XFS_ATTR_LEAF_NAME(leafp,idx) \ |
160 | xfs_attr_leaf_name(leafp,idx) | ||
154 | static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx) | 161 | static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx) |
155 | { | 162 | { |
156 | return (&((char *) | 163 | return (&((char *) |
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 34bfb8ad0a25..70625e577c70 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -4493,8 +4493,8 @@ xfs_bmap_read_extents( | |||
4493 | num_recs = be16_to_cpu(block->bb_numrecs); | 4493 | num_recs = be16_to_cpu(block->bb_numrecs); |
4494 | if (unlikely(i + num_recs > room)) { | 4494 | if (unlikely(i + num_recs > room)) { |
4495 | ASSERT(i + num_recs <= room); | 4495 | ASSERT(i + num_recs <= room); |
4496 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 4496 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
4497 | "corrupt dinode %Lu, (btree extents). Unmount and run xfs_repair.", | 4497 | "corrupt dinode %Lu, (btree extents).", |
4498 | (unsigned long long) ip->i_ino); | 4498 | (unsigned long long) ip->i_ino); |
4499 | XFS_ERROR_REPORT("xfs_bmap_read_extents(1)", | 4499 | XFS_ERROR_REPORT("xfs_bmap_read_extents(1)", |
4500 | XFS_ERRLEVEL_LOW, | 4500 | XFS_ERRLEVEL_LOW, |
diff --git a/fs/xfs/xfs_dir_leaf.h b/fs/xfs/xfs_dir_leaf.h index ab6b09eef9ab..eb8cd9a4667f 100644 --- a/fs/xfs/xfs_dir_leaf.h +++ b/fs/xfs/xfs_dir_leaf.h | |||
@@ -67,34 +67,38 @@ struct xfs_trans; | |||
67 | */ | 67 | */ |
68 | #define XFS_DIR_LEAF_MAPSIZE 3 /* how many freespace slots */ | 68 | #define XFS_DIR_LEAF_MAPSIZE 3 /* how many freespace slots */ |
69 | 69 | ||
70 | typedef struct xfs_dir_leaf_map { /* RLE map of free bytes */ | ||
71 | __uint16_t base; /* base of free region */ | ||
72 | __uint16_t size; /* run length of free region */ | ||
73 | } xfs_dir_leaf_map_t; | ||
74 | |||
75 | typedef struct xfs_dir_leaf_hdr { /* constant-structure header block */ | ||
76 | xfs_da_blkinfo_t info; /* block type, links, etc. */ | ||
77 | __uint16_t count; /* count of active leaf_entry's */ | ||
78 | __uint16_t namebytes; /* num bytes of name strings stored */ | ||
79 | __uint16_t firstused; /* first used byte in name area */ | ||
80 | __uint8_t holes; /* != 0 if blk needs compaction */ | ||
81 | __uint8_t pad1; | ||
82 | xfs_dir_leaf_map_t freemap[XFS_DIR_LEAF_MAPSIZE]; | ||
83 | } xfs_dir_leaf_hdr_t; | ||
84 | |||
85 | typedef struct xfs_dir_leaf_entry { /* sorted on key, not name */ | ||
86 | xfs_dahash_t hashval; /* hash value of name */ | ||
87 | __uint16_t nameidx; /* index into buffer of name */ | ||
88 | __uint8_t namelen; /* length of name string */ | ||
89 | __uint8_t pad2; | ||
90 | } xfs_dir_leaf_entry_t; | ||
91 | |||
92 | typedef struct xfs_dir_leaf_name { | ||
93 | xfs_dir_ino_t inumber; /* inode number for this key */ | ||
94 | __uint8_t name[1]; /* name string itself */ | ||
95 | } xfs_dir_leaf_name_t; | ||
96 | |||
70 | typedef struct xfs_dir_leafblock { | 97 | typedef struct xfs_dir_leafblock { |
71 | struct xfs_dir_leaf_hdr { /* constant-structure header block */ | 98 | xfs_dir_leaf_hdr_t hdr; /* constant-structure header block */ |
72 | xfs_da_blkinfo_t info; /* block type, links, etc. */ | 99 | xfs_dir_leaf_entry_t entries[1]; /* var sized array */ |
73 | __uint16_t count; /* count of active leaf_entry's */ | 100 | xfs_dir_leaf_name_t namelist[1]; /* grows from bottom of buf */ |
74 | __uint16_t namebytes; /* num bytes of name strings stored */ | ||
75 | __uint16_t firstused; /* first used byte in name area */ | ||
76 | __uint8_t holes; /* != 0 if blk needs compaction */ | ||
77 | __uint8_t pad1; | ||
78 | struct xfs_dir_leaf_map {/* RLE map of free bytes */ | ||
79 | __uint16_t base; /* base of free region */ | ||
80 | __uint16_t size; /* run length of free region */ | ||
81 | } freemap[XFS_DIR_LEAF_MAPSIZE]; /* N largest free regions */ | ||
82 | } hdr; | ||
83 | struct xfs_dir_leaf_entry { /* sorted on key, not name */ | ||
84 | xfs_dahash_t hashval; /* hash value of name */ | ||
85 | __uint16_t nameidx; /* index into buffer of name */ | ||
86 | __uint8_t namelen; /* length of name string */ | ||
87 | __uint8_t pad2; | ||
88 | } entries[1]; /* var sized array */ | ||
89 | struct xfs_dir_leaf_name { | ||
90 | xfs_dir_ino_t inumber; /* inode number for this key */ | ||
91 | __uint8_t name[1]; /* name string itself */ | ||
92 | } namelist[1]; /* grows from bottom of buf */ | ||
93 | } xfs_dir_leafblock_t; | 101 | } xfs_dir_leafblock_t; |
94 | typedef struct xfs_dir_leaf_hdr xfs_dir_leaf_hdr_t; | ||
95 | typedef struct xfs_dir_leaf_map xfs_dir_leaf_map_t; | ||
96 | typedef struct xfs_dir_leaf_entry xfs_dir_leaf_entry_t; | ||
97 | typedef struct xfs_dir_leaf_name xfs_dir_leaf_name_t; | ||
98 | 102 | ||
99 | /* | 103 | /* |
100 | * Length of name for which a 512-byte block filesystem | 104 | * Length of name for which a 512-byte block filesystem |
@@ -126,11 +130,10 @@ typedef union { | |||
126 | #define XFS_PUT_COOKIE(c,mp,bno,entry,hash) \ | 130 | #define XFS_PUT_COOKIE(c,mp,bno,entry,hash) \ |
127 | ((c).s.be = XFS_DA_MAKE_BNOENTRY(mp, bno, entry), (c).s.h = (hash)) | 131 | ((c).s.be = XFS_DA_MAKE_BNOENTRY(mp, bno, entry), (c).s.h = (hash)) |
128 | 132 | ||
129 | typedef struct xfs_dir_put_args | 133 | typedef struct xfs_dir_put_args { |
130 | { | ||
131 | xfs_dircook_t cook; /* cookie of (next) entry */ | 134 | xfs_dircook_t cook; /* cookie of (next) entry */ |
132 | xfs_intino_t ino; /* inode number */ | 135 | xfs_intino_t ino; /* inode number */ |
133 | struct xfs_dirent *dbp; /* buffer pointer */ | 136 | struct xfs_dirent *dbp; /* buffer pointer */ |
134 | char *name; /* directory entry name */ | 137 | char *name; /* directory entry name */ |
135 | int namelen; /* length of name */ | 138 | int namelen; /* length of name */ |
136 | int done; /* output: set if value was stored */ | 139 | int done; /* output: set if value was stored */ |
@@ -138,7 +141,8 @@ typedef struct xfs_dir_put_args | |||
138 | struct uio *uio; /* uio control structure */ | 141 | struct uio *uio; /* uio control structure */ |
139 | } xfs_dir_put_args_t; | 142 | } xfs_dir_put_args_t; |
140 | 143 | ||
141 | #define XFS_DIR_LEAF_ENTSIZE_BYNAME(len) xfs_dir_leaf_entsize_byname(len) | 144 | #define XFS_DIR_LEAF_ENTSIZE_BYNAME(len) \ |
145 | xfs_dir_leaf_entsize_byname(len) | ||
142 | static inline int xfs_dir_leaf_entsize_byname(int len) | 146 | static inline int xfs_dir_leaf_entsize_byname(int len) |
143 | { | 147 | { |
144 | return (uint)sizeof(xfs_dir_leaf_name_t)-1 + len; | 148 | return (uint)sizeof(xfs_dir_leaf_name_t)-1 + len; |
diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index d7b6b5d16704..2a21c5024017 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c | |||
@@ -54,7 +54,6 @@ xfs_error_trap(int e) | |||
54 | if (e != xfs_etrap[i]) | 54 | if (e != xfs_etrap[i]) |
55 | continue; | 55 | continue; |
56 | cmn_err(CE_NOTE, "xfs_error_trap: error %d", e); | 56 | cmn_err(CE_NOTE, "xfs_error_trap: error %d", e); |
57 | debug_stop_all_cpus((void *)-1LL); | ||
58 | BUG(); | 57 | BUG(); |
59 | break; | 58 | break; |
60 | } | 59 | } |
diff --git a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h index 06d8a8426c16..26b8e709a569 100644 --- a/fs/xfs/xfs_error.h +++ b/fs/xfs/xfs_error.h | |||
@@ -18,9 +18,6 @@ | |||
18 | #ifndef __XFS_ERROR_H__ | 18 | #ifndef __XFS_ERROR_H__ |
19 | #define __XFS_ERROR_H__ | 19 | #define __XFS_ERROR_H__ |
20 | 20 | ||
21 | #define prdev(fmt,targ,args...) \ | ||
22 | printk("XFS: device %s - " fmt "\n", XFS_BUFTARG_NAME(targ), ## args) | ||
23 | |||
24 | #define XFS_ERECOVER 1 /* Failure to recover log */ | 21 | #define XFS_ERECOVER 1 /* Failure to recover log */ |
25 | #define XFS_ELOGSTAT 2 /* Failure to stat log in user space */ | 22 | #define XFS_ELOGSTAT 2 /* Failure to stat log in user space */ |
26 | #define XFS_ENOLOGSPACE 3 /* Reservation too large */ | 23 | #define XFS_ENOLOGSPACE 3 /* Reservation too large */ |
@@ -182,8 +179,11 @@ extern int xfs_errortag_clearall_umount(int64_t fsid, char *fsname, int loud); | |||
182 | struct xfs_mount; | 179 | struct xfs_mount; |
183 | /* PRINTFLIKE4 */ | 180 | /* PRINTFLIKE4 */ |
184 | extern void xfs_cmn_err(int panic_tag, int level, struct xfs_mount *mp, | 181 | extern void xfs_cmn_err(int panic_tag, int level, struct xfs_mount *mp, |
185 | char *fmt, ...); | 182 | char *fmt, ...); |
186 | /* PRINTFLIKE3 */ | 183 | /* PRINTFLIKE3 */ |
187 | extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...); | 184 | extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...); |
188 | 185 | ||
186 | #define xfs_fs_repair_cmn_err(level, mp, fmt, args...) \ | ||
187 | xfs_fs_cmn_err(level, mp, fmt " Unmount and run xfs_repair.", ## args) | ||
188 | |||
189 | #endif /* __XFS_ERROR_H__ */ | 189 | #endif /* __XFS_ERROR_H__ */ |
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 6b7ac8bdcac2..1d7f5a7e063e 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -404,9 +404,8 @@ xfs_iformat( | |||
404 | INT_GET(dip->di_core.di_nextents, ARCH_CONVERT) + | 404 | INT_GET(dip->di_core.di_nextents, ARCH_CONVERT) + |
405 | INT_GET(dip->di_core.di_anextents, ARCH_CONVERT) > | 405 | INT_GET(dip->di_core.di_anextents, ARCH_CONVERT) > |
406 | INT_GET(dip->di_core.di_nblocks, ARCH_CONVERT))) { | 406 | INT_GET(dip->di_core.di_nblocks, ARCH_CONVERT))) { |
407 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 407 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
408 | "corrupt dinode %Lu, extent total = %d, nblocks = %Lu." | 408 | "corrupt dinode %Lu, extent total = %d, nblocks = %Lu.", |
409 | " Unmount and run xfs_repair.", | ||
410 | (unsigned long long)ip->i_ino, | 409 | (unsigned long long)ip->i_ino, |
411 | (int)(INT_GET(dip->di_core.di_nextents, ARCH_CONVERT) | 410 | (int)(INT_GET(dip->di_core.di_nextents, ARCH_CONVERT) |
412 | + INT_GET(dip->di_core.di_anextents, ARCH_CONVERT)), | 411 | + INT_GET(dip->di_core.di_anextents, ARCH_CONVERT)), |
@@ -418,9 +417,8 @@ xfs_iformat( | |||
418 | } | 417 | } |
419 | 418 | ||
420 | if (unlikely(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT) > ip->i_mount->m_sb.sb_inodesize)) { | 419 | if (unlikely(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT) > ip->i_mount->m_sb.sb_inodesize)) { |
421 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 420 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
422 | "corrupt dinode %Lu, forkoff = 0x%x." | 421 | "corrupt dinode %Lu, forkoff = 0x%x.", |
423 | " Unmount and run xfs_repair.", | ||
424 | (unsigned long long)ip->i_ino, | 422 | (unsigned long long)ip->i_ino, |
425 | (int)(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT))); | 423 | (int)(INT_GET(dip->di_core.di_forkoff, ARCH_CONVERT))); |
426 | XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, | 424 | XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, |
@@ -451,8 +449,9 @@ xfs_iformat( | |||
451 | * no local regular files yet | 449 | * no local regular files yet |
452 | */ | 450 | */ |
453 | if (unlikely((INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFREG)) { | 451 | if (unlikely((INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFREG)) { |
454 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 452 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
455 | "corrupt inode (local format for regular file) %Lu. Unmount and run xfs_repair.", | 453 | "corrupt inode %Lu " |
454 | "(local format for regular file).", | ||
456 | (unsigned long long) ip->i_ino); | 455 | (unsigned long long) ip->i_ino); |
457 | XFS_CORRUPTION_ERROR("xfs_iformat(4)", | 456 | XFS_CORRUPTION_ERROR("xfs_iformat(4)", |
458 | XFS_ERRLEVEL_LOW, | 457 | XFS_ERRLEVEL_LOW, |
@@ -462,8 +461,9 @@ xfs_iformat( | |||
462 | 461 | ||
463 | di_size = INT_GET(dip->di_core.di_size, ARCH_CONVERT); | 462 | di_size = INT_GET(dip->di_core.di_size, ARCH_CONVERT); |
464 | if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { | 463 | if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { |
465 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 464 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
466 | "corrupt inode %Lu (bad size %Ld for local inode). Unmount and run xfs_repair.", | 465 | "corrupt inode %Lu " |
466 | "(bad size %Ld for local inode).", | ||
467 | (unsigned long long) ip->i_ino, | 467 | (unsigned long long) ip->i_ino, |
468 | (long long) di_size); | 468 | (long long) di_size); |
469 | XFS_CORRUPTION_ERROR("xfs_iformat(5)", | 469 | XFS_CORRUPTION_ERROR("xfs_iformat(5)", |
@@ -551,8 +551,9 @@ xfs_iformat_local( | |||
551 | * kmem_alloc() or memcpy() below. | 551 | * kmem_alloc() or memcpy() below. |
552 | */ | 552 | */ |
553 | if (unlikely(size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { | 553 | if (unlikely(size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { |
554 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 554 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
555 | "corrupt inode %Lu (bad size %d for local fork, size = %d). Unmount and run xfs_repair.", | 555 | "corrupt inode %Lu " |
556 | "(bad size %d for local fork, size = %d).", | ||
556 | (unsigned long long) ip->i_ino, size, | 557 | (unsigned long long) ip->i_ino, size, |
557 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork)); | 558 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork)); |
558 | XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW, | 559 | XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW, |
@@ -610,8 +611,8 @@ xfs_iformat_extents( | |||
610 | * kmem_alloc() or memcpy() below. | 611 | * kmem_alloc() or memcpy() below. |
611 | */ | 612 | */ |
612 | if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { | 613 | if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { |
613 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 614 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
614 | "corrupt inode %Lu ((a)extents = %d). Unmount and run xfs_repair.", | 615 | "corrupt inode %Lu ((a)extents = %d).", |
615 | (unsigned long long) ip->i_ino, nex); | 616 | (unsigned long long) ip->i_ino, nex); |
616 | XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW, | 617 | XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW, |
617 | ip->i_mount, dip); | 618 | ip->i_mount, dip); |
@@ -692,8 +693,8 @@ xfs_iformat_btree( | |||
692 | || XFS_BMDR_SPACE_CALC(nrecs) > | 693 | || XFS_BMDR_SPACE_CALC(nrecs) > |
693 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork) | 694 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork) |
694 | || XFS_IFORK_NEXTENTS(ip, whichfork) > ip->i_d.di_nblocks)) { | 695 | || XFS_IFORK_NEXTENTS(ip, whichfork) > ip->i_d.di_nblocks)) { |
695 | xfs_fs_cmn_err(CE_WARN, ip->i_mount, | 696 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, |
696 | "corrupt inode %Lu (btree). Unmount and run xfs_repair.", | 697 | "corrupt inode %Lu (btree).", |
697 | (unsigned long long) ip->i_ino); | 698 | (unsigned long long) ip->i_ino); |
698 | XFS_ERROR_REPORT("xfs_iformat_btree", XFS_ERRLEVEL_LOW, | 699 | XFS_ERROR_REPORT("xfs_iformat_btree", XFS_ERRLEVEL_LOW, |
699 | ip->i_mount); | 700 | ip->i_mount); |
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 9369010f3f16..36aa1fcb90a5 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -608,7 +608,7 @@ xfs_inode_item_trylock( | |||
608 | if (iip->ili_pushbuf_flag == 0) { | 608 | if (iip->ili_pushbuf_flag == 0) { |
609 | iip->ili_pushbuf_flag = 1; | 609 | iip->ili_pushbuf_flag = 1; |
610 | #ifdef DEBUG | 610 | #ifdef DEBUG |
611 | iip->ili_push_owner = get_thread_id(); | 611 | iip->ili_push_owner = current_pid(); |
612 | #endif | 612 | #endif |
613 | /* | 613 | /* |
614 | * Inode is left locked in shared mode. | 614 | * Inode is left locked in shared mode. |
@@ -787,7 +787,7 @@ xfs_inode_item_pushbuf( | |||
787 | * trying to duplicate our effort. | 787 | * trying to duplicate our effort. |
788 | */ | 788 | */ |
789 | ASSERT(iip->ili_pushbuf_flag != 0); | 789 | ASSERT(iip->ili_pushbuf_flag != 0); |
790 | ASSERT(iip->ili_push_owner == get_thread_id()); | 790 | ASSERT(iip->ili_push_owner == current_pid()); |
791 | 791 | ||
792 | /* | 792 | /* |
793 | * If flushlock isn't locked anymore, chances are that the | 793 | * If flushlock isn't locked anymore, chances are that the |