<div dir="ltr"><div dir="ltr"><div>Hi Michal,<br></div><div>Thank you for the reply.</div>I was having issues compiling qemu code on fedora29. So instead of dropping prealloc in virsh, tried adding prealloc=yes in qemu command line. prealloc=yes works. It does not lead to using more system memory when using DAX.<div>+Dan<br></div><div>Here are the steps:</div><div><p style="margin:0in;font-family:Calibri;font-size:11pt">ndctl
create-namespace -t pmem -m fsdax --align=4k -s 400G</p></div><div><p style="margin:0in;font-family:Calibri;font-size:11pt">mkfs.ext4 /dev/pmem0</p>

<p style="margin:0in;font-family:Calibri;font-size:11pt">mount -o dax
/dev/pmem0 /mnt/pmem0</p>

<p style="margin:0in;font-family:Calibri;font-size:11pt">dd if=/dev/zero
of=/mnt/pmem0/file1 bs=4k count=104857600</p><p style="margin:0in;font-family:Calibri;font-size:11pt">[root@system-name]# dd if=/dev/zero of=/mnt/pmem0/file1 bs=4k count=104857600</p><p style="margin:0in;font-family:Calibri;font-size:11pt">dd: error writing
'/mnt/pmem0/file1': No space left on device</p><p style="margin:0in;font-family:Calibri;font-size:11pt">101313980+0 records
in</p><p style="margin:0in;font-family:Calibri;font-size:11pt">101313979+0 records
out</p><p style="margin:0in;font-family:Calibri;font-size:11pt">414982057984 bytes
(415 GB, 386 GiB) copied, 946.495 s, 438 MB/s</p><p style="margin:0in;font-family:Calibri;font-size:11pt"><br></p><p style="margin:0in;font-family:Calibri;font-size:11pt">Slightly smaller file is created than asked. </p><p style="margin:0in;font-family:Calibri;font-size:11pt">[root@system-name]# du -sh</p><p style="margin:0in;font-family:Calibri;font-size:11pt">













</p><p style="margin:0in;font-family:Calibri;font-size:11pt">387G    .</p><p style="margin:0in;font-family:Calibri;font-size:11pt"><br></p></div><div>sample qemu command line which works:</div><div><p class="m_-4799178658620912949gmail-MsoPlainText" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">qemu-system-x86_64 \</p>

<p class="m_-4799178658620912949gmail-MsoPlainText" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">-name test \</p>

<p class="m_-4799178658620912949gmail-MsoPlainText" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">-drive
file=/var/lib/libvirt/images/test-ad.qcow2,format=qcow2,index=0,media=disk \
-m 2G,slots=4,maxmem=428G \ -smp 2 \ -machine pc,accel=kvm,nvdimm=on \
-enable-kvm \ -object memory-backend-file,id=pmem1,prealloc=yes,share=on,mem-path=/mnt/pmem0/file1,size=386G,align=4K
\ -device nvdimm,memdev=pmem1,id=nv1 \ -daemonize</p>

<p class="m_-4799178658620912949gmail-MsoPlainText" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"> </p>

<p class="m_-4799178658620912949gmail-MsoPlainText" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">So prealloc option works. </p><p class="m_-4799178658620912949gmail-MsoPlainText" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">But still passing
/mnt/pmem0/file1 in virsh as the nvdimm fails to start the VM. Errors out saying cannot allocate that much memory. </p></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 28, 2019 at 6:49 PM Michal Privoznik <<a href="mailto:mprivozn@redhat.com" target="_blank">mprivozn@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 8/27/19 9:58 AM, Seema Pandit wrote:<br>
> error: internal error: qemu unexpectedly closed the monitor: ftruncate:<br>
> Invalid argument 2019-08-22T04:16:08.744402Z qemu-system-x86_64: -object<br>
> memory-backend-file,id=memnvdimm0,prealloc=yes,mem-path=/dev/dax1.0,size=403726925824:<br>
> unable to map backing store for guest RAM: Cannot allocate memory<br>
<br>
I wonder if dropping 'prealloc' would help. This error message comes <br>
from phase before 'prealloc' is processed. You can try the following <br>
patch:<br>
<br>
<br>
diff --git i/src/qemu/qemu_command.c w/src/qemu/qemu_command.c<br>
index 373ebd6d1a..c375955eab 100644<br>
--- i/src/qemu/qemu_command.c<br>
+++ w/src/qemu/qemu_command.c<br>
@@ -3468,7 +3468,7 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,<br>
         }<br>
<br>
         if (virJSONValueObjectAdd(props,<br>
-                                  "B:prealloc", prealloc,<br>
+                                  "B:prealloc", prealloc ? false : false,<br>
                                   "s:mem-path", memPath,<br>
                                   NULL) < 0)<br>
             goto cleanup;<br>
<br>
Michal<br>
</blockquote></div>
</div>