mmap:没有这样的设备

时间:2017-10-19 22:27:26

标签: python mmap glusterfs

我试图通过python跟踪一个错误,现在把我带到了ansi-c的mmap。

import os, mmap
filename = <name to ntfs file>
os.path.exists(filename) # is true
with open(filename, 'rb') as f:
    # f.fileno() is 3 or 19 (not -1)
    mmap.mmap(f.fileno(), 1, access=mmap.ACCESS_READ, offset=0)
    # OSError [19]: No such device
    # this is thrown by:
    #    cpython/Modules/mmapmodule.c:1188
    # apparently b/c systems `mmap` (line 1177) can't
    # find the memory.

这里是ntfs目录的挂载信息

jtschw2@compi:~/Code/cpython$ mount | grep labs
bmidata2:cliff.tcp on /labs/cliff type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)

现在这一切都在CentOS7上。你认为我应该从哪里离开?这是不可映射的记忆,还是我们能解决的问题?

相关可能是this。使用numpy.memmap时出现问题。

  

为什么没有卡纸时说卡纸!

1 个答案:

答案 0 :(得分:3)

确实这是保险丝的问题。 Apparently,我的glusterfs版本在共享模式下仍然存在mmap问题,例如: mmap(.., flags=mmap.MAP_SHARED, ..)。通过MAP_SHARED替换MAP_PRIVATE来解决此问题:

import os, mmap
filename = <name to ntfs file>
os.path.exists(filename) # is true
with open(filename, 'rb') as f:
    mmap.mmap(
        f.fileno(), 1, prot=mmap.PROT_READ,
        flags=mmap.MAP_PRIVATE, offset=0)

然后一切都变得很好了!)