Messages in this thread | | | Date | Wed, 18 Apr 2012 03:24:04 +0000 | From | "Serge E. Hallyn" <> | Subject | Re: [Patch 6/8] mqueue: don't use kmalloc with KMALLOC_MAX_SIZE |
| |
Quoting Doug Ledford (dledford@redhat.com): > From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> > > KMALLOC_MAX_SIZE is no good threshold. It is extream high and > problematic. Unfortunately, some silly drivers depend on and > we can't change it. but any new code don't use such extream > ugly high order allocations. It bring us awful fragmentation > issue and system slowdown. > > Signed-off-by: KOSAKI Motohiro <mkosaki@jp.fujitsu.com> > Acked-by: Doug Ledford <dledford@redhat.com> > Acked-by: Joe Korty <joe.korty@ccur.com> > Cc: Amerigo Wang <amwang@redhat.com> > Cc: Serge E. Hallyn <serue@us.ibm.com>
Looks reasonable to me, but that doesn't mean much. Cc:d Dave Hansen explicitly, he'd have a better idea.
> Cc: Jiri Slaby <jslaby@suse.cz> > --- > ipc/mqueue.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/ipc/mqueue.c b/ipc/mqueue.c > index 3ced596..f9f0782 100644 > --- a/ipc/mqueue.c > +++ b/ipc/mqueue.c > @@ -150,7 +150,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb, > info->attr.mq_msgsize = attr->mq_msgsize; > } > mq_msg_tblsz = info->attr.mq_maxmsg * sizeof(struct msg_msg *); > - if (mq_msg_tblsz > KMALLOC_MAX_SIZE) > + if (mq_msg_tblsz > PAGE_SIZE) > info->messages = vmalloc(mq_msg_tblsz); > else > info->messages = kmalloc(mq_msg_tblsz, GFP_KERNEL); > @@ -263,7 +263,7 @@ static void mqueue_evict_inode(struct inode *inode) > spin_lock(&info->lock); > for (i = 0; i < info->attr.mq_curmsgs; i++) > free_msg(info->messages[i]); > - if (info->attr.mq_maxmsg * sizeof(struct msg_msg *) > KMALLOC_MAX_SIZE) > + if (is_vmalloc_addr(info->messages)) > vfree(info->messages); > else > kfree(info->messages); > -- > 1.7.7.6 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
| |