Skip to content
Snippets Groups Projects
  • Hanna Reitz's avatar
    0c9b70d5
    fuse: Allow exporting BDSs via FUSE · 0c9b70d5
    Hanna Reitz authored
    
    block-export-add type=fuse allows mounting block graph nodes via FUSE on
    some existing regular file.  That file should then appears like a raw
    disk image, and accesses to it result in accesses to the exported BDS.
    
    Right now, we only implement the necessary block export functions to set
    it up and shut it down.  We do not implement any access functions, so
    accessing the mount point only results in errors.  This will be
    addressed by a followup patch.
    
    We keep a hash table of exported mount points, because we want to be
    able to detect when users try to use a mount point twice.  This is
    because we invoke stat() to check whether the given mount point is a
    regular file, but if that file is served by ourselves (because it is
    already used as a mount point), then this stat() would have to be served
    by ourselves, too, which is impossible to do while we (as the caller)
    are waiting for it to settle.  Therefore, keep track of mount point
    paths to at least catch the most obvious instances of that problem.
    
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    Message-Id: <20201027190600.192171-3-mreitz@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    0c9b70d5
    History
    fuse: Allow exporting BDSs via FUSE
    Hanna Reitz authored
    
    block-export-add type=fuse allows mounting block graph nodes via FUSE on
    some existing regular file.  That file should then appears like a raw
    disk image, and accesses to it result in accesses to the exported BDS.
    
    Right now, we only implement the necessary block export functions to set
    it up and shut it down.  We do not implement any access functions, so
    accessing the mount point only results in errors.  This will be
    addressed by a followup patch.
    
    We keep a hash table of exported mount points, because we want to be
    able to detect when users try to use a mount point twice.  This is
    because we invoke stat() to check whether the given mount point is a
    regular file, but if that file is served by ourselves (because it is
    already used as a mount point), then this stat() would have to be served
    by ourselves, too, which is impossible to do while we (as the caller)
    are waiting for it to settle.  Therefore, keep track of mount point
    paths to at least catch the most obvious instances of that problem.
    
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    Message-Id: <20201027190600.192171-3-mreitz@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>