* hugetlbfs not working
@ 2008-03-27 15:10 Alexander Graf
2008-03-27 15:19 ` Avi Kivity
0 siblings, 1 reply; 9+ messages in thread
From: Alexander Graf @ 2008-03-27 15:10 UTC (permalink / raw)
To: kvm-devel
Hi,
I'm currently trying to get hugetlbfs working on the current git
version and am quite puzzled to see it not working. It appears as if
the ftruncate call fails:
open("/dev/hugetlbfs//kvm.vI3G8z", O_RDWR|O_CREAT|O_EXCL, 0600) = 7
unlink("/dev/hugetlbfs//kvm.vI3G8z") = 0
ftruncate(7, 157286400) = -1 EINVAL (Invalid argument)
dup(2) = 8
fcntl(8, F_GETFL) = 0x8001 (flags O_WRONLY|
O_LARGEFILE)
close(8) = 0
write(2, "ftruncate: Invalid argument\n", 28ftruncate: Invalid argument
) = 28
close(7) = 0
My host kernel is a 2.6.22.
Is this supposed to work? The first version did not have the ftruncate
call, so maybe it doesn't work at all with hugetlbfs?
Alex
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: hugetlbfs not working 2008-03-27 15:10 hugetlbfs not working Alexander Graf @ 2008-03-27 15:19 ` Avi Kivity 2008-03-27 15:30 ` Alexander Graf 0 siblings, 1 reply; 9+ messages in thread From: Avi Kivity @ 2008-03-27 15:19 UTC (permalink / raw) To: Alexander Graf; +Cc: kvm-devel Alexander Graf wrote: > Hi, > > I'm currently trying to get hugetlbfs working on the current git > version and am quite puzzled to see it not working. It appears as if > the ftruncate call fails: > > open("/dev/hugetlbfs//kvm.vI3G8z", O_RDWR|O_CREAT|O_EXCL, 0600) = 7 > unlink("/dev/hugetlbfs//kvm.vI3G8z") = 0 > ftruncate(7, 157286400) = -1 EINVAL (Invalid argument) > dup(2) = 8 > fcntl(8, F_GETFL) = 0x8001 (flags O_WRONLY| > O_LARGEFILE) > close(8) = 0 > write(2, "ftruncate: Invalid argument\n", 28ftruncate: Invalid argument > ) = 28 > close(7) = 0 > > My host kernel is a 2.6.22. > > Is this supposed to work? The first version did not have the ftruncate > call, so maybe it doesn't work at all with hugetlbfs? > Are you on i386 non-pae? that has 4MB pages, while you're asking for for 37.5 4MB pages. Try adding 2MB to the requested memory size. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: hugetlbfs not working 2008-03-27 15:19 ` Avi Kivity @ 2008-03-27 15:30 ` Alexander Graf 2008-03-27 16:07 ` Anthony Liguori 0 siblings, 1 reply; 9+ messages in thread From: Alexander Graf @ 2008-03-27 15:30 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel On Mar 27, 2008, at 4:19 PM, Avi Kivity wrote: > Alexander Graf wrote: >> Hi, >> >> I'm currently trying to get hugetlbfs working on the current git >> version and am quite puzzled to see it not working. It appears as >> if the ftruncate call fails: >> >> open("/dev/hugetlbfs//kvm.vI3G8z", O_RDWR|O_CREAT|O_EXCL, 0600) = 7 >> unlink("/dev/hugetlbfs//kvm.vI3G8z") = 0 >> ftruncate(7, 157286400) = -1 EINVAL (Invalid >> argument) >> dup(2) = 8 >> fcntl(8, F_GETFL) = 0x8001 (flags O_WRONLY| >> O_LARGEFILE) >> close(8) = 0 >> write(2, "ftruncate: Invalid argument\n", 28ftruncate: Invalid >> argument >> ) = 28 >> close(7) = 0 >> >> My host kernel is a 2.6.22. >> >> Is this supposed to work? The first version did not have the >> ftruncate call, so maybe it doesn't work at all with hugetlbfs? >> > > Are you on i386 non-pae? that has 4MB pages, while you're asking > for for 37.5 4MB pages. > > Try adding 2MB to the requested memory size. I'm on x86_64 and /proc/meminfo tells me: HugePages_Total: 1435 HugePages_Free: 1435 HugePages_Rsvd: 0 Hugepagesize: 2048 kB I also reserved all available huge pages: % cat /proc/sys/vm/nr_hugepages 1435 Changing the guest memory size using -m does not help. Alex ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: hugetlbfs not working 2008-03-27 15:30 ` Alexander Graf @ 2008-03-27 16:07 ` Anthony Liguori 2008-03-27 16:09 ` Avi Kivity 0 siblings, 1 reply; 9+ messages in thread From: Anthony Liguori @ 2008-03-27 16:07 UTC (permalink / raw) To: Alexander Graf; +Cc: kvm-devel, Avi Kivity Alexander Graf wrote: > On Mar 27, 2008, at 4:19 PM, Avi Kivity wrote: > > >> Alexander Graf wrote: >> >>> Hi, >>> >>> I'm currently trying to get hugetlbfs working on the current git >>> version and am quite puzzled to see it not working. It appears as >>> if the ftruncate call fails: >>> >>> open("/dev/hugetlbfs//kvm.vI3G8z", O_RDWR|O_CREAT|O_EXCL, 0600) = 7 >>> unlink("/dev/hugetlbfs//kvm.vI3G8z") = 0 >>> ftruncate(7, 157286400) = -1 EINVAL (Invalid >>> argument) >>> dup(2) = 8 >>> fcntl(8, F_GETFL) = 0x8001 (flags O_WRONLY| >>> O_LARGEFILE) >>> close(8) = 0 >>> write(2, "ftruncate: Invalid argument\n", 28ftruncate: Invalid >>> argument >>> ) = 28 >>> close(7) = 0 >>> >>> My host kernel is a 2.6.22. >>> >>> Is this supposed to work? The first version did not have the >>> ftruncate call, so maybe it doesn't work at all with hugetlbfs? >>> >>> >> Are you on i386 non-pae? that has 4MB pages, while you're asking >> for for 37.5 4MB pages. >> >> Try adding 2MB to the requested memory size. >> > > I'm on x86_64 and /proc/meminfo tells me: > > HugePages_Total: 1435 > HugePages_Free: 1435 > HugePages_Rsvd: 0 > Hugepagesize: 2048 kB > > I also reserved all available huge pages: > > % cat /proc/sys/vm/nr_hugepages > 1435 > > Changing the guest memory size using -m does not help. > If you don't bail when ftruncate fails, does it work as expected for you? Perhaps older versions of hugetlbfs didn't support truncate. Regards, Anthony Liguori > Alex > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > _______________________________________________ > kvm-devel mailing list > kvm-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/kvm-devel > ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: hugetlbfs not working 2008-03-27 16:07 ` Anthony Liguori @ 2008-03-27 16:09 ` Avi Kivity 2008-03-27 16:35 ` Marcelo Tosatti 2008-03-27 21:55 ` Marcelo Tosatti 0 siblings, 2 replies; 9+ messages in thread From: Avi Kivity @ 2008-03-27 16:09 UTC (permalink / raw) To: Anthony Liguori; +Cc: kvm-devel, Alexander Graf Anthony Liguori wrote: > > If you don't bail when ftruncate fails, does it work as expected for > you? Perhaps older versions of hugetlbfs didn't support truncate. If you don't truncate, how can you change the file size? hugetlbfs doesn't support write(). I vaugely recall using ftruncate() on 2.4. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: hugetlbfs not working 2008-03-27 16:09 ` Avi Kivity @ 2008-03-27 16:35 ` Marcelo Tosatti 2008-03-27 21:55 ` Marcelo Tosatti 1 sibling, 0 replies; 9+ messages in thread From: Marcelo Tosatti @ 2008-03-27 16:35 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel, Alexander Graf On Thu, Mar 27, 2008 at 06:09:56PM +0200, Avi Kivity wrote: > Anthony Liguori wrote: > > > > If you don't bail when ftruncate fails, does it work as expected for > > you? Perhaps older versions of hugetlbfs didn't support truncate. > > If you don't truncate, how can you change the file size? hugetlbfs > doesn't support write(). > > I vaugely recall using ftruncate() on 2.4. hugetlbfs will automatically adjust the file size on mmap(). ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: hugetlbfs not working 2008-03-27 16:09 ` Avi Kivity 2008-03-27 16:35 ` Marcelo Tosatti @ 2008-03-27 21:55 ` Marcelo Tosatti [not found] ` <47EC9302.40103@qumranet.com> 1 sibling, 1 reply; 9+ messages in thread From: Marcelo Tosatti @ 2008-03-27 21:55 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel, Alexander Graf On Thu, Mar 27, 2008 at 06:09:56PM +0200, Avi Kivity wrote: > Anthony Liguori wrote: > > > > If you don't bail when ftruncate fails, does it work as expected for > > you? Perhaps older versions of hugetlbfs didn't support truncate. > > If you don't truncate, how can you change the file size? hugetlbfs > doesn't support write(). > > I vaugely recall using ftruncate() on 2.4. commit 7aa91e104028b87ff13f5eeb7a0d7ffe7b5a2348 Author: Ken Chen <kenchen@google.com> Date: Tue Oct 16 01:26:21 2007 -0700 hugetlb: allow extending ftruncate on hugetlbfs For historical reason, expanding ftruncate that increases file size on hugetlbfs is not allowed due to pages were pre-faulted and lack of fault handler. Now that we have demand faulting on hugetlb since 2.6.15, there is no reason to hold back that limitation. This will make hugetlbfs behave more like a normal fs. I'm writing a user level code that uses hugetlbfs but will fall back to tmpfs if there are no hugetlb page available in the system. Having hugetlbfs specific ftruncate behavior is a bit quirky and I would like to remove that artificial limitation. Signed-off-by: <kenchen@google.com> Acked-by: Wiliam Irwin <wli@holomorphy.com> Cc: Adam Litke <agl@us.ibm.com> Cc: David Gibson <david@gibson.dropbear.id.au> Cc: Nishanth Aravamudan <nacc@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> mmap() should fail if anything goes wrong with ftruncate and the file length is not extented on tmpfs. --- vl.c.orig 2008-03-27 18:51:31.000000000 -0300 +++ vl.c 2008-03-27 18:52:40.000000000 -0300 @@ -8749,11 +8749,7 @@ memory = (memory+hpagesize-1) & ~(hpagesize-1); - if (ftruncate(fd, memory) == -1) { - perror("ftruncate"); - close(fd); - return NULL; - } + ftruncate(fd, memory); area = mmap(0, memory, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); if (area == MAP_FAILED) { ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <47EC9302.40103@qumranet.com>]
* Re: hugetlbfs not working [not found] ` <47EC9302.40103@qumranet.com> @ 2008-03-31 17:01 ` Marcelo Tosatti 2008-03-31 17:17 ` Avi Kivity 0 siblings, 1 reply; 9+ messages in thread From: Marcelo Tosatti @ 2008-03-31 17:01 UTC (permalink / raw) To: Avi Kivity; +Cc: Marcelo Tosatti, kvm-devel, Alexander Graf On Fri, Mar 28, 2008 at 09:41:06AM +0300, Avi Kivity wrote: > >mmap() should fail if anything goes wrong with ftruncate and the file > >length is not extented on tmpfs. > > > >--- vl.c.orig 2008-03-27 18:51:31.000000000 -0300 > >+++ vl.c 2008-03-27 18:52:40.000000000 -0300 > >@@ -8749,11 +8749,7 @@ > > > > memory = (memory+hpagesize-1) & ~(hpagesize-1); > > > >- if (ftruncate(fd, memory) == -1) { > >- perror("ftruncate"); > >- close(fd); > >- return NULL; > >- } > >+ ftruncate(fd, memory); > > > > I'm sure a patch will follow to add a missing error check, so how about > a comment here? > > btw, we use signoffs on kvm-userspace, too. QEMU/KVM: ftruncate() is not supported by hugetlbfs on older hosts Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> diff --git a/qemu/vl.c b/qemu/vl.c index 5627862..6a240bf 100644 --- a/qemu/vl.c +++ b/qemu/vl.c @@ -8739,11 +8739,13 @@ void *alloc_mem_area(unsigned long memory, const char *path) memory = (memory+hpagesize-1) & ~(hpagesize-1); - if (ftruncate(fd, memory) == -1) { - perror("ftruncate"); - close(fd); - return NULL; - } + /* + * ftruncate is not supported by hugetlbfs in older + * hosts, so don't bother checking for errors. + * If anything goes wrong with it under other filesystems, + * mmap will fail. + */ + ftruncate(fd, memory); area = mmap(0, memory, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); if (area == MAP_FAILED) { ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: hugetlbfs not working 2008-03-31 17:01 ` Marcelo Tosatti @ 2008-03-31 17:17 ` Avi Kivity 0 siblings, 0 replies; 9+ messages in thread From: Avi Kivity @ 2008-03-31 17:17 UTC (permalink / raw) To: Marcelo Tosatti; +Cc: kvm-devel, Alexander Graf Marcelo Tosatti wrote: > QEMU/KVM: ftruncate() is not supported by hugetlbfs on older hosts > > Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> > Applied, thanks. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-03-31 17:17 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-27 15:10 hugetlbfs not working Alexander Graf
2008-03-27 15:19 ` Avi Kivity
2008-03-27 15:30 ` Alexander Graf
2008-03-27 16:07 ` Anthony Liguori
2008-03-27 16:09 ` Avi Kivity
2008-03-27 16:35 ` Marcelo Tosatti
2008-03-27 21:55 ` Marcelo Tosatti
[not found] ` <47EC9302.40103@qumranet.com>
2008-03-31 17:01 ` Marcelo Tosatti
2008-03-31 17:17 ` Avi Kivity
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox