fs: Remove unnecessary OOM messages
Subsystems (4)
cover fs: Remove unnecessary OOM messages
Joe Perches (4):
coda: Remove unnecessary OOM messages
jffs2: Remove unnecessary OOM messages
reiserfs: Remove unnecessary OOM messages
udf: Remove unnecessary OOM messages
fs/coda/coda_linux.h | 13 ++++++------- fs/jffs2/compr_lzo.c | 1 - fs/jffs2/compr_zlib.c | 6 ++---- fs/reiserfs/journal.c | 8 ++------ fs/reiserfs/resize.c | 1 - fs/udf/super.c | 5 +---- 6 files changed, 11 insertions(+), 23 deletions(-)
Signature · 1 line
1.7.8.111.gad25c.dirty
PATCH 1/4 coda: Remove unnecessary OOM messages
Per call site OOM messages are unnecessary.
k.alloc and v.alloc failures use dump_stack().
--- fs/coda/coda_linux.h | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-)
fs/coda/coda_linux.h +6 -7
@@ -57,13 +57,12 @@ unsigned short coda_flags_to_cflags(unsigned short);void coda_sysctl_init (void );void coda_sysctl_clean (void ); -#define CODA_ALLOC (ptr, cast, size) do { \ - if (size < PAGE_SIZE) \ - ptr = kzalloc((unsigned long) size, GFP_KERNEL); \ - else \ - ptr = (cast)vzalloc((unsigned long) size); \ - if (!ptr) \ - printk("kernel malloc returns 0 at %s:%d\n", __FILE__, __LINE__); \ +#define CODA_ALLOC (ptr, cast, size) \ +do { \ + if (size < PAGE_SIZE) \ + ptr = kzalloc(size, GFP_KERNEL); \ + else \ + ptr = vzalloc(size); \ } while (0)
Signature · 1 line
1.7.8.111.gad25c.dirty
Re: [PATCH 1/4] coda: Remove unnecessary OOM messages
Quoted 21 lines · Joe Perches
Per call site OOM messages are unnecessary.
k.alloc and v.alloc failures usedump_stack().Signed-off-by Joe Perches <[email protected]>--- fs/coda/coda_linux.h | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-)fs/coda/coda_linux.h +0
-5@@ -57,13 +57,12 @@ unsigned short coda_flags_to_cflags(unsigned short);void coda_sysctl_init (void );void coda_sysctl_clean (void ); -#define CODA_ALLOC (ptr, cast, size) do { \ - if (size < PAGE_SIZE) \ - ptr = kzalloc((unsigned long) size, GFP_KERNEL); \ - else \ - ptr = (cast)vzalloc((unsigned long) size); \
fs/coda/coda_linux.h unsigned short coda_flags_to_cflags(unsigned short); · line 67
Quoted 10 lines
fs/coda/coda_linux.h +6
-2-if (!ptr) \ -printk ("kernel malloc returns 0 at %s:%d\n" , __FILE__, __LINE__); \ +#define CODA_ALLOC (ptr, cast, size) \ +do { \ + if (size < PAGE_SIZE) \ + ptr = kzalloc(size, GFP_KERNEL); \ + else \ + ptr = vzalloc(size); \ } while (0)
Hi Joe,
Since CODA_ALLOC no longer uses __FILE__ and __LINE__ and doesn't use the cast argument any more, it can be replaced with a static inline function. Something like this (untested, applies on top of your patch):
----
Since CODA_ALLOC no longer needs to be defined as a macro, replace it with a static inline function and make it return the allocated pointer. Rename it to coda_alloc to be more consistent with other function naming. Similarly, replace CODA_FREE with a static inline function.
Also fix a bug in coda_psdev_write where the return value of CODA_ALLOC was not being checked.
---
fs/coda/coda_linux.h +13 -10
@@ -57,17 +57,20 @@ unsigned short coda_flags_to_cflags(unsigned short);void coda_sysctl_init (void );void coda_sysctl_clean (void ); -#define CODA_ALLOC (ptr, cast, size) \ -do { \ - if (size < PAGE_SIZE) \ - ptr = kzalloc(size, GFP_KERNEL); \ - else \ - ptr = vzalloc(size); \ -} while (0) - +static inline void *coda_alloc (size_t size) +{ +if (size <PAGE_SIZE ) +return kzalloc (size,GFP_KERNEL ); +return vzalloc (size); +} -#define CODA_FREE (ptr,size) \ - do { if (size < PAGE_SIZE) kfree((ptr)); else vfree((ptr)); } while (0) +static inline void coda_free (const void *ptr,size_t size) +{ +if (size <PAGE_SIZE ) +kfree (ptr); +else +vfree (ptr); +}/* inode to cnode access functions */
fs/coda/psdev.c +9 -5
@@ -124,9 +124,13 @@ static ssize_t coda_psdev_write(struct file *file, const char __user *buf, hdr.opcode, hdr.unique); nbytes = size; } - CODA_ALLOC(dcbuf, union outputArgs *, nbytes); + dcbuf =coda_alloc (nbytes); +if (!dcbuf) { + retval = -ENOMEM ; + goto out; + }if (copy_from_user (dcbuf, buf, nbytes)) { -CODA_FREE (dcbuf, nbytes); +coda_free (dcbuf, nbytes); retval = -EFAULT ; goto out; }
@@ -134,7 +138,7 @@ static ssize_t coda_psdev_write(struct file *file, const char __user *buf,/* what downcall errors does Venus handle ? */ error =coda_downcall (vcp, hdr.opcode, dcbuf); -CODA_FREE (dcbuf, nbytes); +coda_free (dcbuf, nbytes);if (error) {printk ("psdev_write: coda_downcall error: %d\n" , error); retval = error;
@@ -255,7 +259,7 @@ static ssize_t coda_psdev_read(struct file * file, char __user * buf, goto out; } -CODA_FREE (req->uc_data,sizeof (struct coda_in_hdr )); +coda_free (req->uc_data,sizeof (struct coda_in_hdr ));kfree (req); out:mutex_unlock (&vcp->vc_mutex);
@@ -311,7 +315,7 @@ static int coda_psdev_release(struct inode * inode, struct file * file)/* Async requests need to be freed here */ if (req->uc_flags &CODA_REQ_ASYNC ) { -CODA_FREE (req->uc_data,sizeof (struct coda_in_hdr )); +coda_free (req->uc_data,sizeof (struct coda_in_hdr ));kfree (req);continue ; }
fs/coda/upcall.c +20 -20
@@ -46,7 +46,7 @@ static void *alloc_upcall(int opcode, int size) {union inputArgs *inp; - CODA_ALLOC(inp, union inputArgs *, size); + inp =coda_alloc (size);if (!inp)return ERR_PTR (-ENOMEM );
@@ -85,7 +85,7 @@ int venus_rootfid(struct super_block *sb, struct CodaFid *fidp)if (!error) *fidp = outp->coda_root.VFid; -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -104,7 +104,7 @@ int venus_getattr(struct super_block *sb, struct CodaFid *fid,if (!error) *attr = outp->coda_getattr.attr; -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -123,7 +123,7 @@ int venus_setattr(struct super_block *sb, struct CodaFid *fid, error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -153,7 +153,7 @@ int venus_lookup(struct super_block *sb, struct CodaFid *fid, *type = outp->coda_lookup.vtype; } -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -173,7 +173,7 @@ int venus_close(struct super_block *sb, struct CodaFid *fid, int flags, error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -194,7 +194,7 @@ int venus_open(struct super_block *sb, struct CodaFid *fid,if (!error) *fh = outp->coda_open_by_fd.fh; -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -224,7 +224,7 @@ int venus_mkdir(struct super_block *sb, struct CodaFid *dirfid, *newfid = outp->coda_mkdir.VFid; } -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -262,7 +262,7 @@ int venus_rename(struct super_block *sb, struct CodaFid *old_fid, error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -295,7 +295,7 @@ int venus_create(struct super_block *sb, struct CodaFid *dirfid, *newfid = outp->coda_create.VFid; } -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -318,7 +318,7 @@ int venus_rmdir(struct super_block *sb, struct CodaFid *dirfid, error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -340,7 +340,7 @@ int venus_remove(struct super_block *sb, struct CodaFid *dirfid, error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -370,7 +370,7 @@ int venus_readlink(struct super_block *sb, struct CodaFid *fid, *(buffer + retlen) ='\0' ; } -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -398,7 +398,7 @@ int venus_link(struct super_block *sb, struct CodaFid *fid, error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -433,7 +433,7 @@ int venus_symlink(struct super_block *sb, struct CodaFid *fid, error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -450,7 +450,7 @@ int venus_fsync(struct super_block *sb, struct CodaFid *fid) error =coda_upcall (coda_vcp (sb),sizeof (union inputArgs ), &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -468,7 +468,7 @@ int venus_access(struct super_block *sb, struct CodaFid *fid, int mask) error =coda_upcall (coda_vcp (sb), insize, &outsize, inp); -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -544,7 +544,7 @@ int venus_pioctl(struct super_block *sb, struct CodaFid *fid, } exit: -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -566,7 +566,7 @@ int venus_statfs(struct dentry *dentry, struct kstatfs *sfs) sfs->f_ffree = outp->coda_statfs.stat.f_ffree; } -CODA_FREE (inp, insize); +coda_free (inp, insize);return error; }
@@ -744,7 +744,7 @@ static int coda_upcall(struct venus_comm *vcp, sig_req =kmalloc (sizeof (struct upc_req ),GFP_KERNEL );if (!sig_req) goto exit; - CODA_ALLOC((sig_req->uc_data), char *, sizeof(struct coda_in_hdr)); + sig_req->uc_data =coda_alloc (sizeof (struct coda_in_hdr ));if (!sig_req->uc_data) {kfree (sig_req); goto exit;
Re: [PATCH 1/4] coda: Remove unnecessary OOM messages
Quoted 3 lines
Since
CODA_ALLOCno longer uses__FILE__and__LINE__and doesn't use the cast argument any more, it can be replaced with a static inline function. Something like this (untested, applies on top of your patch):
Hi Ryan.
I didn't want to be quite so invasive but this looks like a nice cleanup to me.
Maybe because alloc/free functions are used relatively infrequently, maybe it'd be better to not declare the functions inline but add them to coda_linux.c
fs/coda/coda_linux.h unsigned short coda_flags_to_cflags(unsigned short); · line 65
Quoted 6 lines
fs/coda/coda_linux.h +6
-0+static inline void *coda_alloc (size_t size) +{ +if (size <PAGE_SIZE ) +return kzalloc (size,GFP_KERNEL ); +return vzalloc (size); +}
[]
Quoted 7 lines
fs/coda/coda_linux.h +7
-0+static inline void coda_free (const void *ptr,size_t size) +{ +if (size <PAGE_SIZE ) +kfree (ptr); +else +vfree (ptr); +}
Re: [PATCH 1/4] coda: Remove unnecessary OOM messages
Quoted 8 lines · Joe Perches
Quoted 3 lines
Since
CODA_ALLOCno longer uses__FILE__and__LINE__and doesn't use the cast argument any more, it can be replaced with a static inline function. Something like this (untested, applies on top of your patch):Hi Ryan.
I didn't want to be quite so invasive but this looks like a nice cleanup to me.
Yeah, it needed to be done as a separate patch. Just a good time to do it now that it no longer needs to be a macro.
Quoted 4 lines
Maybe because alloc/free functions are used relatively infrequently, maybe it'd be better to not declare the functions inline but add them to
coda_linux.c
Sure, either approach is fine. Do you want to add the patch to your series?
~Ryan
Quoted 17 lines
fs/coda/coda_linux.h unsigned short coda_flags_to_cflags(unsigned short); · line 65
Quoted 7 lines
fs/coda/coda_linux.h +6
-0+static inline void *coda_alloc (size_t size) +{ +if (size <PAGE_SIZE ) +return kzalloc (size,GFP_KERNEL ); +return vzalloc (size); +}[]
Quoted 7 lines
fs/coda/coda_linux.h +7
-0+static inline void coda_free (const void *ptr,size_t size) +{ +if (size <PAGE_SIZE ) +kfree (ptr); +else +vfree (ptr); +}
Re: [PATCH 1/4] coda: Remove unnecessary OOM messages
Quoted 6 lines · Ryan Mallon
Quoted 4 lines · Joe Perches
Maybe because alloc/free functions are used relatively infrequently, maybe it'd be better to not declare the functions inline but add them to
coda_linux.cSure, either approach is fine. Do you want to add the patch to your series?
I think Jan can work it out properly if he wants it.
Jan Harkes
maintainerRe: [PATCH 1/4] coda: Remove unnecessary OOM messages
Quoted 10 lines · Joe Perches
Quoted 6 lines · Ryan Mallon
Quoted 4 lines · Joe Perches
Maybe because alloc/free functions are used relatively infrequently, maybe it'd be better to not declare the functions inline but add them to
coda_linux.cSure, either approach is fine. Do you want to add the patch to your
series?
I think Jan can work it out properly if he wants it.
It looks good to me, I have no problem if you want to add it to your series.
Jan
Re: [PATCH 1/4] coda: Remove unnecessary OOM messages
Quoted 11 lines · Jan Harkes
Quoted 9 lines · Joe Perches
Quoted 6 lines · Ryan Mallon
Quoted 4 lines · Joe Perches
Maybe because alloc/free functions are used relatively infrequently, maybe it'd be better to not declare the functions inline but add them to
coda_linux.cSure, either approach is fine. Do you want to add the patch to your
series?
I think Jan can work it out properly if he wants it.It looks good to me, I have no problem if you want to add it to your series.
(adding Al Viro and Andrew Morton to cc:)
Hi Jan.
I think Ryan's patches are fine as well.
Quoted 1 line
From my perspective as a contributor, you should ack the
patches you apply to your own tree with your own "Signed-off-by:" tag and later send a pull request to Linus or another upstream maintainer like Al Viro or you should ack the patches and forward them to another upstream maintainer to be applied in their tree with your "Acked-by:" tag.
cheers, Joe
PATCH 2/4 jffs2: Remove unnecessary OOM messages
In reply to Joe PerchesPer call site OOM messages are unnecessary.
k.alloc and v.alloc failures use dump_stack().
--- fs/jffs2/compr_lzo.c | 1 - fs/jffs2/compr_zlib.c | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-)
fs/jffs2/compr_lzo.c +0 -1
@@ -33,7 +33,6 @@ static int __init alloc_workspace(void) lzo_compress_buf =vmalloc (lzo1x_worst_compress (PAGE_SIZE ));if (!lzo_mem || !lzo_compress_buf) { -printk (KERN_WARNING "Failed to allocate lzo deflate workspace\n" );free_workspace ();return -ENOMEM ; }
fs/jffs2/compr_zlib.c +2 -4
@@ -42,14 +42,12 @@ static int __init alloc_workspaces(void) { def_strm.workspace =vmalloc (zlib_deflate_workspacesize (MAX_WBITS ,MAX_MEM_LEVEL )); -if (!def_strm.workspace) { -printk (KERN_WARNING "Failed to allocate %d bytes for deflate workspace\n" ,zlib_deflate_workspacesize (MAX_WBITS ,MAX_MEM_LEVEL )); +if (!def_strm.workspace)return -ENOMEM ; - } +D1 (printk (KERN_DEBUG "Allocated %d bytes for deflate workspace\n" ,zlib_deflate_workspacesize (MAX_WBITS ,MAX_MEM_LEVEL ))); inf_strm.workspace =vmalloc (zlib_inflate_workspacesize ());if (!inf_strm.workspace) { -printk (KERN_WARNING "Failed to allocate %d bytes for inflate workspace\n" ,zlib_inflate_workspacesize ());vfree (def_strm.workspace);return -ENOMEM ; }
Signature · 1 line
1.7.8.111.gad25c.dirty
Artem Bityutskiy
AppliedRe: [PATCH 2/4] jffs2: Remove unnecessary OOM messages
Quoted 4 lines · Joe Perches
Per call site OOM messages are unnecessary.
k.alloc and v.alloc failures usedump_stack().Signed-off-by Joe Perches <[email protected]>
Pushed to l2-mtd.git, thanks!
Signature · 2 lines
Best Regards, Artem Bityutskiy
PATCH 3/4 reiserfs: Remove unnecessary OOM messages
In reply to Joe PerchesPer call site OOM messages are unnecessary.
k.alloc and v.alloc failures use dump_stack().
--- fs/reiserfs/journal.c | 8 ++------ fs/reiserfs/resize.c | 1 - 2 files changed, 2 insertions(+), 7 deletions(-)
fs/reiserfs/journal.c +2 -6
@@ -293,8 +293,6 @@ int reiserfs_allocate_list_bitmaps(struct super_block *sb, jb->journal_list =NULL ; jb->bitmaps =vzalloc (mem);if (!jb->bitmaps) { -reiserfs_warning (sb,"clm-2000" ,"unable to " -"allocate bitmaps for journal lists" ); failed =1 ;break ; }
@@ -2679,11 +2677,9 @@ int journal_init(struct super_block *sb, const char *j_dev_name,int ret; journal =SB_JOURNAL (sb) =vzalloc (sizeof (struct reiserfs_journal )); -if (!journal) { -reiserfs_warning (sb,"journal-1256" , -"unable to get memory for journal structure" ); +if (!journal)return 1 ; - } +INIT_LIST_HEAD (&journal->j_bitmap_nodes);INIT_LIST_HEAD (&journal->j_prealloc_list);INIT_LIST_HEAD (&journal->j_working_list);
fs/reiserfs/resize.c +0 -1
@@ -115,7 +115,6 @@ int reiserfs_resize(struct super_block *s, unsigned long block_count_new)if (!bitmap) {/* Journal bitmaps are still supersized, but the memory isn't * leaked, so I guess it's ok */ -printk ("reiserfs_resize: unable to allocate memory.\n" );return -ENOMEM ; }for (i =0 ; i < bmap_nr; i++)
Signature · 1 line
1.7.8.111.gad25c.dirty
PATCH 4/4 udf: Remove unnecessary OOM messages
In reply to Joe PerchesPer call site OOM messages are unnecessary.
k.alloc and v.alloc failures use dump_stack().
--- fs/udf/super.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-)
fs/udf/super.c +1 -4
@@ -948,11 +948,8 @@ static struct udf_bitmap *udf_sb_alloc_bitmap(struct super_block *sb, u32 index)else bitmap =vzalloc (size);/* TODO: get rid of vzalloc */ -if (bitmap ==NULL ) { -udf_err (sb,"Unable to allocate space for bitmap and %d buffer_head pointers\n" , - nr_groups); +if (bitmap ==NULL )return NULL ; - } bitmap->s_block_bitmap = (struct buffer_head **)(bitmap +1 ); bitmap->s_nr_groups = nr_groups;
Signature · 1 line
1.7.8.111.gad25c.dirty
Re: [PATCH 4/4] udf: Remove unnecessary OOM messages
Quoted 2 lines · Joe Perches
Per call site OOM messages are unnecessary.
k.alloc and v.alloc failures usedump_stack().
Thanks. Applied.
Honza
Quoted 26 lines
Signed-off-by Joe Perches <[email protected]>--- fs/udf/super.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-)fs/udf/super.c +1
-4@@ -948,11 +948,8 @@ static struct udf_bitmap *udf_sb_alloc_bitmap(struct super_block *sb, u32 index)else bitmap =vzalloc (size);/* TODO: get rid of vzalloc */ -if (bitmap ==NULL ) { -udf_err (sb,"Unable to allocate space for bitmap and %d buffer_head pointers\n" , - nr_groups); +if (bitmap ==NULL )return NULL ; - } bitmap->s_block_bitmap = (struct buffer_head **)(bitmap +1 ); bitmap->s_nr_groups = nr_groups;Signature · 1 line
1.7.8.111.gad25c.dirty
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR