jfs: neatening
cover jfs: neatening
The second patch is speculative and maybe not necessary.
Is a 3KB reduction in object size when embedded and !CONFIG_PRINTK worth it?
Joe Perches (2):
jfs: Update jfs_error
jfs: Reduce object size when CONFIG_PRINTK=n
fs/jfs/jfs_dmap.c | 70 +++++++++++++++++++------------------------------ fs/jfs/jfs_dtree.c | 37 +++++++++++++------------- fs/jfs/jfs_extent.c | 2 +- fs/jfs/jfs_imap.c | 69 ++++++++++++++++++++---------------------------- fs/jfs/jfs_metapage.c | 5 ++-- fs/jfs/jfs_superblock.h | 17 +++++++++++- fs/jfs/jfs_txnmgr.c | 2 +- fs/jfs/jfs_xtree.c | 62 +++++++++++++++++++++---------------------- fs/jfs/namei.c | 2 +- fs/jfs/resize.c | 2 +- fs/jfs/super.c | 24 ++++++++++------- fs/jfs/xattr.c | 4 +-- 12 files changed, 142 insertions(+), 154 deletions(-)
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH 1/2 jfs: Update jfs_error
Use a more current logging style.
Add __printf format and argument verification.
Remove embedded function names from formats. Add %pf, __builtin_return_address(0) to jfs_error. Add newlines to formats for kernel style consistency. (One format already had an erroneous newline) Coalesce formats and align arguments.
Object size reduced ~1KiB.
$ size fs/jfs/built-in.o* text data bss dec hex filename 201891 35488 63936 301315 49903 fs/jfs/built-in.o.new 202821 35488 64192 302501 49da5 fs/jfs/built-in.o.old
--- fs/jfs/jfs_dmap.c | 70 +++++++++++++++++++------------------------------ fs/jfs/jfs_dtree.c | 37 +++++++++++++------------- fs/jfs/jfs_extent.c | 2 +- fs/jfs/jfs_imap.c | 69 ++++++++++++++++++++---------------------------- fs/jfs/jfs_metapage.c | 5 ++-- fs/jfs/jfs_superblock.h | 1 + fs/jfs/jfs_txnmgr.c | 2 +- fs/jfs/jfs_xtree.c | 62 +++++++++++++++++++++---------------------- fs/jfs/namei.c | 2 +- fs/jfs/resize.c | 2 +- fs/jfs/super.c | 22 +++++++++------- fs/jfs/xattr.c | 4 +-- 12 files changed, 126 insertions(+), 152 deletions(-)
fs/jfs/jfs_dmap.c +27 -43
@@ -346,8 +346,7 @@ int dbFree(struct inode *ip, s64 blkno, s64 nblocks)printk (KERN_ERR "blkno = %Lx, nblocks = %Lx\n" , (unsigned long long ) blkno, (unsigned long long ) nblocks); -jfs_error (ip->i_sb, -"dbFree: block to be freed is outside the map" ); +jfs_error (ip->i_sb,"block to be freed is outside the map\n" );return -EIO ; }
@@ -384,7 +383,7 @@ int dbFree(struct inode *ip, s64 blkno, s64 nblocks)/* free the blocks. */ if ((rc =dbFreeDmap (bmp, dp, blkno, nb))) { -jfs_error (ip->i_sb,"dbFree: error in block map\n" ); +jfs_error (ip->i_sb,"error in block map\n" );release_metapage (mp);IREAD_UNLOCK (ipbmap);return (rc);
@@ -441,8 +440,7 @@ dbUpdatePMap(struct inode *ipbmap,printk (KERN_ERR "blkno = %Lx, nblocks = %Lx\n" , (unsigned long long ) blkno, (unsigned long long ) nblocks); -jfs_error (ipbmap->i_sb, -"dbUpdatePMap: blocks are outside the map" ); +jfs_error (ipbmap->i_sb,"blocks are outside the map\n" );return -EIO ; }
@@ -726,7 +724,7 @@ int dbAlloc(struct inode *ip, s64 hint, s64 nblocks, s64 * results)/* the hint should be within the map */ if (hint >= mapSize) { -jfs_error (ip->i_sb,"dbAlloc: the hint is outside the map" ); +jfs_error (ip->i_sb,"the hint is outside the map\n" );return -EIO ; }
@@ -1057,8 +1055,7 @@ static int dbExtend(struct inode *ip, s64 blkno, s64 nblocks, s64 addnblocks) bmp = sbi->bmap;if (lastblkno <0 || lastblkno >= bmp->db_mapsize) {IREAD_UNLOCK (ipbmap); -jfs_error (ip->i_sb, -"dbExtend: the block is outside the filesystem" ); +jfs_error (ip->i_sb,"the block is outside the filesystem\n" );return -EIO ; }
@@ -1134,8 +1131,7 @@ static int dbAllocNext(struct bmap * bmp, struct dmap * dp, s64 blkno,u32 mask;if (dp->tree.leafidx !=cpu_to_le32 (LEAFIND )) { -jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocNext: Corrupt dmap page" ); +jfs_error (bmp->db_ipbmap->i_sb,"Corrupt dmap page\n" );return -EIO ; }
@@ -1265,8 +1261,7 @@ dbAllocNear(struct bmap * bmp,s8 *leaf;if (dp->tree.leafidx !=cpu_to_le32 (LEAFIND )) { -jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocNear: Corrupt dmap page" ); +jfs_error (bmp->db_ipbmap->i_sb,"Corrupt dmap page\n" );return -EIO ; }
@@ -1381,8 +1376,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results)*/ if (l2nb > bmp->db_agl2size) {jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocAG: allocation request is larger than the " -"allocation group size" ); +"allocation request is larger than the allocation group size\n" );return -EIO ; }
@@ -1417,7 +1411,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results) (unsigned long long ) blkno, (unsigned long long) nblocks);jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocAG: dbAllocCtl failed in free AG" ); +"dbAllocCtl failed in free AG\n" ); }return (rc); }
@@ -1433,8 +1427,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results) budmin = dcp->budmin;if (dcp->leafidx !=cpu_to_le32 (CTLLEAFIND )) { -jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocAG: Corrupt dmapctl page" ); +jfs_error (bmp->db_ipbmap->i_sb,"Corrupt dmapctl page\n" );release_metapage (mp);return -EIO ; }
@@ -1475,7 +1468,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results) }if (n ==4 ) {jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocAG: failed descending stree" ); +"failed descending stree\n" );release_metapage (mp);return -EIO ; }
@@ -1515,8 +1508,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results) &blkno))) {if (rc == -ENOSPC ) {jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocAG: control page " -"inconsistent" ); +"control page inconsistent\n" );return -EIO ; }return (rc);
@@ -1528,7 +1520,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results) rc =dbAllocCtl (bmp, nblocks, l2nb, blkno, results);if (rc == -ENOSPC ) {jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocAG: unable to allocate blocks" ); +"unable to allocate blocks\n" ); rc = -EIO ; }return (rc);
@@ -1587,8 +1579,7 @@ static int dbAllocAny(struct bmap * bmp, s64 nblocks, int l2nb, s64 * results)*/ rc =dbAllocCtl (bmp, nblocks, l2nb, blkno, results);if (rc == -ENOSPC ) { -jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocAny: unable to allocate blocks" ); +jfs_error (bmp->db_ipbmap->i_sb,"unable to allocate blocks\n" );return -EIO ; }return (rc);
@@ -1652,8 +1643,7 @@ s64 dbDiscardAG(struct inode *ip, int agno, s64 minlen) range_cnt =min_t (u64, max_ranges +1 ,32 *1024 ); totrim =kmalloc (sizeof (struct range2trim ) * range_cnt,GFP_NOFS );if (totrim ==NULL ) { -jfs_error (bmp->db_ipbmap->i_sb, -"dbDiscardAG: no memory for trim array" ); +jfs_error (bmp->db_ipbmap->i_sb,"no memory for trim array\n" );IWRITE_UNLOCK (ipbmap);return 0 ; }
@@ -1682,8 +1672,7 @@ s64 dbDiscardAG(struct inode *ip, int agno, s64 minlen) nblocks =1 << l2nb; }else {/* Trim any already allocated blocks */ -jfs_error (bmp->db_ipbmap->i_sb, -"dbDiscardAG: -EIO" ); +jfs_error (bmp->db_ipbmap->i_sb,"-EIO\n" );break ; }
@@ -1761,7 +1750,7 @@ static int dbFindCtl(struct bmap * bmp, int l2nb, int level, s64 * blkno)if (dcp->leafidx !=cpu_to_le32 (CTLLEAFIND )) {jfs_error (bmp->db_ipbmap->i_sb, -"dbFindCtl: Corrupt dmapctl page" ); +"Corrupt dmapctl page\n" );release_metapage (mp);return -EIO ; }
@@ -1782,7 +1771,7 @@ static int dbFindCtl(struct bmap * bmp, int l2nb, int level, s64 * blkno)if (rc) {if (lev != level) {jfs_error (bmp->db_ipbmap->i_sb, -"dbFindCtl: dmap inconsistent" ); +"dmap inconsistent\n" );return -EIO ; }return -ENOSPC ;
@@ -1906,7 +1895,7 @@ dbAllocCtl(struct bmap * bmp, s64 nblocks, int l2nb, s64 blkno, s64 * results)if (dp->tree.stree[ROOT ] !=L2BPERDMAP ) {release_metapage (mp);jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocCtl: the dmap is not all free" ); +"the dmap is not all free\n" ); rc = -EIO ; goto backout; }
@@ -1953,7 +1942,7 @@ dbAllocCtl(struct bmap * bmp, s64 nblocks, int l2nb, s64 blkno, s64 * results)* to indicate that we have leaked blocks. */ jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocCtl: I/O Error: Block Leakage." ); +"I/O Error: Block Leakage\n" );continue ; } dp = (struct dmap *) mp->data;
@@ -1965,8 +1954,7 @@ dbAllocCtl(struct bmap * bmp, s64 nblocks, int l2nb, s64 blkno, s64 * results)* to indicate that we have leaked blocks. */ release_metapage (mp); -jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocCtl: Block Leakage." ); +jfs_error (bmp->db_ipbmap->i_sb,"Block Leakage\n" );continue ; }
@@ -2263,8 +2251,7 @@ static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno,for (; nwords >0 ; nwords -= nw) {if (leaf[word] <BUDMIN ) {jfs_error (bmp->db_ipbmap->i_sb, -"dbAllocBits: leaf page " -"corrupt" ); +"leaf page corrupt\n" );break ; }
@@ -2536,8 +2523,7 @@ dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, int level) dcp = (struct dmapctl *) mp->data;if (dcp->leafidx !=cpu_to_le32 (CTLLEAFIND )) { -jfs_error (bmp->db_ipbmap->i_sb, -"dbAdjCtl: Corrupt dmapctl page" ); +jfs_error (bmp->db_ipbmap->i_sb,"Corrupt dmapctl page\n" );release_metapage (mp);return -EIO ; }
@@ -2638,8 +2624,7 @@ dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, int level)assert (level == bmp->db_maxlevel);if (bmp->db_maxfreebud != oldroot) {jfs_error (bmp->db_ipbmap->i_sb, -"dbAdjCtl: the maximum free buddy is " -"not the old root" ); +"the maximum free buddy is not the old root\n" ); } bmp->db_maxfreebud = dcp->stree[ROOT ]; }
@@ -3481,7 +3466,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks) p =BMAPBLKNO + nbperpage;/* L2 page */ l2mp =read_metapage (ipbmap, p,PSIZE ,0 );if (!l2mp) { -jfs_error (ipbmap->i_sb,"dbExtendFS: L2 page could not be read" ); +jfs_error (ipbmap->i_sb,"L2 page could not be read\n" );return -EIO ; } l2dcp = (struct dmapctl *) l2mp->data;
@@ -3646,8 +3631,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks) } }/* for each L1 in a L2 */ -jfs_error (ipbmap->i_sb, -"dbExtendFS: function has not returned as expected" ); +jfs_error (ipbmap->i_sb,"function has not returned as expected\n" ); errout:if (l0mp)release_metapage (l0mp);
@@ -3717,7 +3701,7 @@ void dbFinalizeBmap(struct inode *ipbmap) }if (bmp->db_agpref >= bmp->db_numag) {jfs_error (ipbmap->i_sb, -"cannot find ag with average freespace" ); +"cannot find ag with average freespace\n" ); } }
fs/jfs/jfs_dtree.c +18 -19
@@ -124,21 +124,21 @@ struct dtsplit {#define DT_PAGE (IP ,MP ) BT_PAGE(IP, MP, dtpage_t, i_dtroot)/* get page buffer for specified block address */ -#define DT_GETPAGE (IP ,BN ,MP ,SIZE ,P ,RC )\ -{\ - BT_GETPAGE(IP, BN, MP, dtpage_t, SIZE, P, RC, i_dtroot)\ - if (!(RC))\ - {\ - if (((P)->header.nextindex > (((BN)==0)?DTROOTMAXSLOT:(P)->header.maxslot)) ||\ - ((BN) && ((P)->header.maxslot > DTPAGEMAXSLOT)))\ - {\ - BT_PUTPAGE(MP);\ - jfs_error((IP)->i_sb, "DT_GETPAGE: dtree page corrupt");\ - MP = NULL;\ - RC = -EIO;\ - }\ - }\ -} +#define DT_GETPAGE (IP ,BN ,MP ,SIZE ,P ,RC ) \ +do { \ + BT_GETPAGE(IP, BN, MP, dtpage_t, SIZE, P, RC, i_dtroot); \ + if (!(RC)) { \ + if (((P)->header.nextindex > \ + (((BN) == 0) ? DTROOTMAXSLOT : (P)->header.maxslot)) || \ + ((BN) && ((P)->header.maxslot > DTPAGEMAXSLOT))) { \ + BT_PUTPAGE(MP); \ + jfs_error((IP)->i_sb, \ + "DT_GETPAGE: dtree page corrupt\n"); \ + MP = NULL; \ + RC = -EIO; \ + } \ + } \ +} while (0)/* for consistency */ #define DT_PUTPAGE (MP ) BT_PUTPAGE(MP)
@@ -776,7 +776,7 @@ int dtSearch(struct inode *ip, struct component_name * key, ino_t * data,/* Something's corrupted, mark filesystem dirty so * chkdsk will fix it. */ -jfs_error (sb,"stack overrun in dtSearch!" ); +jfs_error (sb,"stack overrun!\n" );BT_STACK_DUMP (btstack); rc = -EIO ; goto out;
@@ -3252,8 +3252,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)/* Sanity Check */ if (d_namleft ==0 ) {jfs_error (ip->i_sb, -"JFS:Dtree error: ino = " -"%ld, bn=%Ld, index = %d" , +"JFS:Dtree error: ino = %ld, bn=%lld, index = %d\n" , (long )ip->i_ino, (long long )bn, i);
@@ -3373,7 +3372,7 @@ static int dtReadFirst(struct inode *ip, struct btstack * btstack)*/ if (BT_STACK_FULL (btstack)) {DT_PUTPAGE (mp); -jfs_error (ip->i_sb,"dtReadFirst: btstack overrun" ); +jfs_error (ip->i_sb,"btstack overrun\n" );BT_STACK_DUMP (btstack);return -EIO ; }
fs/jfs/jfs_extent.c +1 -1
@@ -388,7 +388,7 @@ int extHint(struct inode *ip, s64 offset, xad_t * xp)if ((rc ==0 ) && xlen) {if (xlen != nbperpage) { -jfs_error (ip->i_sb,"extHint: corrupt xtree" ); +jfs_error (ip->i_sb,"corrupt xtree\n" ); rc = -EIO ; }XADaddress (xp, xaddr);
fs/jfs/jfs_imap.c +29 -40
227 lines not on this page · raw message
fs/jfs/jfs_metapage.c +2 -3
@@ -649,7 +649,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,if (mp) {if (mp->logical_size != size) {jfs_error (inode->i_sb, -"__get_metapage: mp->logical_size != size" ); +"get_mp->logical_size != size\n" );jfs_err ("logical_size = %d, size = %d" , mp->logical_size, size);dump_stack ();
@@ -660,8 +660,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,if (test_bit (META_discard, &mp->flag)) {if (!new) {jfs_error (inode->i_sb, -"__get_metapage: using a " -"discarded metapage" ); +"using a discarded metapage\n" );discard_metapage (mp); goto unlock; }
fs/jfs/jfs_superblock.h +1 -0
@@ -108,6 +108,7 @@ struct jfs_superblock {extern int readSuper (struct super_block *,struct buffer_head **);extern int updateSuper (struct super_block *,uint ); +__printf(2, 3)extern void jfs_error (struct super_block *,const char *, ...);extern int jfs_mount (struct super_block *);extern int jfs_mount_rw (struct super_block *,int );
fs/jfs/jfs_txnmgr.c +1 -1
@@ -2684,7 +2684,7 @@ void txAbort(tid_t tid, int dirty)* mark filesystem dirty */ if (dirty) -jfs_error (tblk->sb,"txAbort" ); +jfs_error (tblk->sb,"\n" );return ; }
fs/jfs/jfs_xtree.c +30 -32
145 lines not on this page · raw message
fs/jfs/namei.c +1 -1
@@ -1176,7 +1176,7 @@ static int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,if (!S_ISDIR (old_ip->i_mode) && new_ip)IWRITE_UNLOCK (new_ip);jfs_error (new_ip->i_sb, -"jfs_rename: new_ip->i_nlink != 0" ); +"new_ip->i_nlink != 0\n" );return -EIO ; } tblk =tid_to_tblock (tid);
fs/jfs/resize.c +1 -1
@@ -530,7 +530,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize) goto resume; error_out: -jfs_error (sb,"jfs_extendfs" ); +jfs_error (sb,"\n" ); resume:/*
fs/jfs/super.c +13 -9
@@ -92,16 +92,20 @@ static void jfs_handle_error(struct super_block *sb)/* nothing is done for continue beyond marking the superblock dirty */ } -void jfs_error (struct super_block *sb,const char * function, ...) +void jfs_error (struct super_block *sb,const char *fmt, ...) { -static char error_buf[256 ]; +struct va_format vaf;va_list args; -va_start (args, function); -vsnprintf (error_buf,sizeof (error_buf), function, args); -va_end (args); +va_start (args, fmt); + + vaf.fmt = fmt; + vaf.va = &args; -pr_err ("ERROR: (device %s): %s\n" , sb->s_id, error_buf); +pr_err ("ERROR: (device %s): %pf: %pV\n" , + sb->s_id,__builtin_return_address (0 ), &vaf); + +va_end (args);jfs_handle_error (sb); }
@@ -617,7 +621,7 @@ static int jfs_freeze(struct super_block *sb)txQuiesce (sb); rc =lmLogShutdown (log);if (rc) { -jfs_error (sb,"jfs_freeze: lmLogShutdown failed" ); +jfs_error (sb,"lmLogShutdown failed\n" );/* let operations fail rather than hang */ txResume (sb);
@@ -646,12 +650,12 @@ static int jfs_unfreeze(struct super_block *sb)if (!(sb->s_flags &MS_RDONLY )) { rc =updateSuper (sb,FM_MOUNT );if (rc) { -jfs_error (sb,"jfs_unfreeze: updateSuper failed" ); +jfs_error (sb,"updateSuper failed\n" ); goto out; } rc =lmLogInit (log);if (rc) -jfs_error (sb,"jfs_unfreeze: lmLogInit failed" ); +jfs_error (sb,"lmLogInit failed\n" ); out:txResume (sb); }
fs/jfs/xattr.c +2 -2
@@ -382,7 +382,7 @@ static int ea_read(struct inode *ip, struct jfs_ea_list *ealist) nbytes =sizeDXD (&ji->ea);if (!nbytes) { -jfs_error (sb,"ea_read: nbytes is 0" ); +jfs_error (sb,"nbytes is 0\n" );return -EIO ; }
@@ -482,7 +482,7 @@ static int ea_get(struct inode *inode, struct ea_buffer *ea_buf, int min_size) current_blocks =0 ; }else {if (!(ji->ea.flag &DXD_EXTENT )) { -jfs_error (sb,"ea_get: invalid ea.flag)" ); +jfs_error (sb,"invalid ea.flag\n" );return -EIO ; } current_blocks = (ea_size + sb->s_blocksize - 1) >>
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH 2/2 jfs: Reduce object size when CONFIG_PRINTK=n
In reply to Joe PerchesAllow the jfs_error format and arguments to be
optimized away when not using printk.
Reduces object size ~3KB
$ grep -E "CONFIG_PRINTK|CONFIG_JFS" .config
# CONFIG_PRINTK is not set
CONFIG_JFS_FS=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
CONFIG_JFS_STATISTICS=y$ size fs/jfs/built-in.o* text data bss dec hex filename 136521 1408 520 138449 21cd1 fs/jfs/built-in.o.new 139834 1408 552 141794 229e2 fs/jfs/built-in.o.old
--- fs/jfs/jfs_superblock.h | 16 +++++++++++++++- fs/jfs/super.c | 4 ++-- 2 files changed, 17 insertions(+), 3 deletions(-)
fs/jfs/jfs_superblock.h +15 -1
@@ -108,8 +108,22 @@ struct jfs_superblock {extern int readSuper (struct super_block *,struct buffer_head **);extern int updateSuper (struct super_block *,uint ); +extern void jfs_handle_error (struct super_block *sb); __printf(2, 3) -extern void jfs_error (struct super_block *,const char *, ...); +extern void _jfs_error (struct super_block *,const char *, ...); + +#ifdef CONFIG_PRINTK +#define jfs_error (sb, fmt, ...) \ + _jfs_error(sb, fmt, ##__VA_ARGS__) +#else +#define jfs_error (sb, fmt, ...) \ +do { \ + if (0) \ + printk(fmt, ##__VA_ARGS__); \ + jfs_handle_error(sb); \ +} while (0) +#endif +extern int jfs_mount (struct super_block *);extern int jfs_mount_rw (struct super_block *,int );extern int jfs_umount (struct super_block *);
fs/jfs/super.c +2 -2
@@ -70,7 +70,7 @@ module_param(jfsloglevel, int, 0644);MODULE_PARM_DESC (jfsloglevel,"Specify JFS loglevel (0, 1 or 2)" );#endif -static void jfs_handle_error (struct super_block *sb) +void jfs_handle_error (struct super_block *sb) {struct jfs_sb_info *sbi =JFS_SBI (sb);
@@ -92,7 +92,7 @@ static void jfs_handle_error(struct super_block *sb)/* nothing is done for continue beyond marking the superblock dirty */ } -void jfs_error (struct super_block *sb,const char *fmt, ...) +void _jfs_error (struct super_block *sb,const char *fmt, ...) {struct va_format vaf;va_list args;
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
Quoted 3 lines · Joe Perches
The second patch is speculative and maybe not necessary.
Is a 3KB reduction in object size when embedded and !CONFIG_PRINTK worth it?
I'm pushing the first patch to linux-next. I haven't made up my mind about the second. I don't really consider jfs to be the filesystem of choice for a small embedded system. Maybe something like a dvr, but then it wouldn't be a big factor.
Thanks
Shagggy
Quoted 18 lines
Joe Perches (2):
jfs: Updatejfs_error
jfs: Reduce object size whenCONFIG_PRINTK=nfs/jfs/jfs_dmap.c | 70 +++++++++++++++++++------------------------------ fs/jfs/jfs_dtree.c | 37 +++++++++++++------------- fs/jfs/jfs_extent.c | 2 +- fs/jfs/jfs_imap.c | 69 ++++++++++++++++++++---------------------------- fs/jfs/jfs_metapage.c | 5 ++-- fs/jfs/jfs_superblock.h | 17 +++++++++++- fs/jfs/jfs_txnmgr.c | 2 +- fs/jfs/jfs_xtree.c | 62 +++++++++++++++++++++---------------------- fs/jfs/namei.c | 2 +- fs/jfs/resize.c | 2 +- fs/jfs/super.c | 24 ++++++++++------- fs/jfs/xattr.c | 4 +-- 12 files changed, 142 insertions(+), 154 deletions(-)