CC'd: emunson Eric, could you take a look at this patch and apply it if you see no issues.
thanks, Anton On Thu, Feb 06, 2014 at 07:56:32AM -0500, Jan Stancek wrote: > > > ----- Original Message ----- > > From: "Jan Stancek" <jstan...@redhat.com> > > To: libhugetlbfs-devel@lists.sourceforge.net > > Cc: n-horigu...@ah.jp.nec.com, an...@redhat.com > > Sent: Tuesday, 28 May, 2013 1:02:20 PM > > Subject: [Libhugetlbfs-devel] [PATCH] misalign: misaligned length allowed > > on kernels >= 3.10-rc1 > > > > Starting with 3.10-rc1, length passed in mmap() doesn't need > > to be aligned because commit af73e4d9506d3b797509f3c030e7dcd554f7d9c4 > > added ALIGN() to kernel side, in mmap_pgoff(), when mapping huge > > page files. > > > > This patch treats successful mmap() with misaligned length on > > kernels >= 3.10 as PASS. > > > > See also: > > Bug 56881 - MAP_HUGETLB mmap fails for certain sizes > > https://bugzilla.kernel.org/show_bug.cgi?id=56881 > > > > Signed-off-by: Jan Stancek <jstan...@redhat.com> > > Any thoughts about this patch? Acked-by: Anton Arapov <an...@redhat.com> > > Regards, > Jan > > > --- > > tests/misalign.c | 36 ++++++++++++++++++++++++++++++------ > > 1 files changed, 30 insertions(+), 6 deletions(-) > > > > diff --git a/tests/misalign.c b/tests/misalign.c > > index de85be6..de1bf98 100644 > > --- a/tests/misalign.c > > +++ b/tests/misalign.c > > @@ -23,6 +23,7 @@ > > #include <errno.h> > > #include <signal.h> > > #include <sys/mman.h> > > +#include <sys/utsname.h> > > > > #include <hugetlbfs.h> > > > > @@ -40,6 +41,11 @@ > > * necessary checks for the hugepage paths. This testcase ensures > > * that attempted hugepage mappings with parameters which are not > > * correctly hugepage aligned are rejected. > > + * > > + * However starting with 3.10-rc1, length passed in mmap() doesn't need > > + * to be aligned because commit af73e4d9506d3b797509f3c030e7dcd554f7d9c4 > > + * added ALIGN() to kernel side, in mmap_pgoff(), when mapping huge page > > + * files. > > */ > > int main(int argc, char *argv[]) > > { > > @@ -47,9 +53,13 @@ int main(int argc, char *argv[]) > > int fd; > > void *p, *q; > > int err; > > + struct utsname buf; > > > > test_init(argc, argv); > > > > + if (uname(&buf) != 0) > > + FAIL("uname failed %s", strerror(errno)); > > + > > page_size = getpagesize(); > > hpage_size = check_hugepagesize(); > > > > @@ -92,16 +102,30 @@ int main(int argc, char *argv[]) > > > > /* 3) Try a misaligned length */ > > q = mmap(NULL, page_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); > > - if (q != MAP_FAILED) > > - FAIL("mmap() with misaligned length 0x%lx succeeded", > > - page_size); > > + > > + if (test_compare_kver(buf.release, "3.10.0") < 0) { > > + if (q != MAP_FAILED) > > + FAIL("mmap() with misaligned length 0x%lx succeeded", > > + page_size); > > + } else { > > + if (q == MAP_FAILED) > > + FAIL("mmap() with misaligned length 0x%lx failed", > > + page_size); > > + } > > > > /* 4) Try a misaligned length with MAP_FIXED */ > > q = mmap(p, page_size, PROT_READ|PROT_WRITE, > > MAP_PRIVATE|MAP_FIXED, fd, 0); > > - if (q != MAP_FAILED) > > - FAIL("mmap() MAP_FIXED with misaligned length 0x%lx succeeded", > > - page_size); > > + > > + if (test_compare_kver(buf.release, "3.10.0") < 0) { > > + if (q != MAP_FAILED) > > + FAIL("mmap() MAP_FIXED with misaligned length 0x%lx " > > + "succeeded", page_size); > > + } else { > > + if (q == MAP_FAILED) > > + FAIL("mmap() MAP_FIXED with misaligned length 0x%lx " > > + "failed", page_size); > > + } > > > > /* 5) Try a misaligned offset */ > > q = mmap(NULL, hpage_size, PROT_READ|PROT_WRITE, > > -- > > 1.7.1 > > > > > > ------------------------------------------------------------------------------ > > Try New Relic Now & We'll Send You this Cool Shirt > > New Relic is the only SaaS-based application performance monitoring service > > that delivers powerful full stack analytics. Optimize and monitor your > > browser, app, & servers with just a few lines of code. Try New Relic > > and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may > > _______________________________________________ > > Libhugetlbfs-devel mailing list > > Libhugetlbfs-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel > > ------------------------------------------------------------------------------ Managing the Performance of Cloud-Based Applications Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. Read the Whitepaper. http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk _______________________________________________ Libhugetlbfs-devel mailing list Libhugetlbfs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel