10 Sep, 2020

2 commits

  • This patch implements basic DAX support. mmap() is not implemented
    yet and will come in later patches. This patch looks into implemeting
    read/write.

    We make use of interval tree to keep track of per inode dax mappings.

    Do not use dax for file extending writes, instead just send WRITE message
    to daemon (like we do for direct I/O path). This will keep write and
    i_size change atomic w.r.t crash.

    Signed-off-by: Stefan Hajnoczi
    Signed-off-by: Dr. David Alan Gilbert
    Signed-off-by: Vivek Goyal
    Signed-off-by: Liu Bo
    Signed-off-by: Peng Tao
    Cc: Dave Chinner
    Signed-off-by: Miklos Szeredi

    Vivek Goyal
     
  • Add a mount option to allow using dax with virtio_fs.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Miklos Szeredi

    Vivek Goyal
     

04 Sep, 2020

1 commit

  • As stated in https://sourceforge.net/projects/fuse/, "the FUSE project has
    moved to https://github.com/libfuse/" in 22-Dec-2015. Update URLs to
    reflect this.

    Signed-off-by: André Almeida
    Signed-off-by: Miklos Szeredi

    André Almeida
     

21 Apr, 2020

1 commit

  • Several references got broken due to txt to ReST conversion.

    Several of them can be automatically fixed with:

    scripts/documentation-file-ref-check --fix

    Reviewed-by: Mathieu Poirier # hwtracing/coresight/Kconfig
    Reviewed-by: Paul E. McKenney # memory-barrier.txt
    Acked-by: Alex Shi # translations/zh_CN
    Acked-by: Federico Vaga # translations/it_IT
    Acked-by: Marc Zyngier # kvm/arm64
    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/6f919ddb83a33b5f2a63b6b5f0575737bb2b36aa.1586881715.git.mchehab+huawei@kernel.org
    Signed-off-by: Jonathan Corbet

    Mauro Carvalho Chehab
     

27 Nov, 2019

1 commit


19 Sep, 2019

1 commit

  • Add a basic file system module for virtio-fs. This does not yet contain
    shared data support between host and guest or metadata coherency speedups.
    However it is already significantly faster than virtio-9p.

    Design Overview
    ===============

    With the goal of designing something with better performance and local file
    system semantics, a bunch of ideas were proposed.

    - Use fuse protocol (instead of 9p) for communication between guest and
    host. Guest kernel will be fuse client and a fuse server will run on
    host to serve the requests.

    - For data access inside guest, mmap portion of file in QEMU address space
    and guest accesses this memory using dax. That way guest page cache is
    bypassed and there is only one copy of data (on host). This will also
    enable mmap(MAP_SHARED) between guests.

    - For metadata coherency, there is a shared memory region which contains
    version number associated with metadata and any guest changing metadata
    updates version number and other guests refresh metadata on next access.
    This is yet to be implemented.

    How virtio-fs differs from existing approaches
    ==============================================

    The unique idea behind virtio-fs is to take advantage of the co-location of
    the virtual machine and hypervisor to avoid communication (vmexits).

    DAX allows file contents to be accessed without communication with the
    hypervisor. The shared memory region for metadata avoids communication in
    the common case where metadata is unchanged.

    By replacing expensive communication with cheaper shared memory accesses,
    we expect to achieve better performance than approaches based on network
    file system protocols. In addition, this also makes it easier to achieve
    local file system semantics (coherency).

    These techniques are not applicable to network file system protocols since
    the communications channel is bypassed by taking advantage of shared memory
    on a local machine. This is why we decided to build virtio-fs rather than
    focus on 9P or NFS.

    Caching Modes
    =============

    Like virtio-9p, different caching modes are supported which determine the
    coherency level as well. The “cache=FOO” and “writeback” options control
    the level of coherence between the guest and host filesystems.

    - cache=none
    metadata, data and pathname lookup are not cached in guest. They are
    always fetched from host and any changes are immediately pushed to host.

    - cache=always
    metadata, data and pathname lookup are cached in guest and never expire.

    - cache=auto
    metadata and pathname lookup cache expires after a configured amount of
    time (default is 1 second). Data is cached while the file is open
    (close to open consistency).

    - writeback/no_writeback
    These options control the writeback strategy. If writeback is disabled,
    then normal writes will immediately be synchronized with the host fs.
    If writeback is enabled, then writes may be cached in the guest until
    the file is closed or an fsync(2) performed. This option has no effect
    on mmap-ed writes or writes going through the DAX mechanism.

    Signed-off-by: Stefan Hajnoczi
    Signed-off-by: Vivek Goyal
    Acked-by: Michael S. Tsirkin
    Signed-off-by: Miklos Szeredi

    Stefan Hajnoczi
     

21 May, 2019

1 commit


01 Oct, 2016

1 commit

  • Add a new INIT flag, FUSE_POSIX_ACL, for negotiating ACL support with
    userspace. When it is set in the INIT response, ACL support will be
    enabled. ACL support also implies "default_permissions".

    When ACL support is enabled, the kernel will cache and have responsibility
    for enforcing ACLs. ACL xattrs will be passed to userspace, which is
    responsible for updating the ACLs in the filesystem, keeping the file mode
    in sync, and inheritance of default ACLs when new filesystem nodes are
    created.

    Signed-off-by: Seth Forshee
    Signed-off-by: Miklos Szeredi

    Seth Forshee
     

17 Jan, 2013

1 commit


22 Jan, 2009

1 commit