On 2014-02-10 05:39, Anton Arapov wrote: > CC'd: emunson > > Eric, could you take a look at this patch and apply it if you see no > issues. > > thanks, > Anton >
Anton, Jan, Sorry, the original got lost in my inbox. I will apply this evening. Eric > 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