1. 07 Dec, 2010 4 commits
    • Miklos Szeredi's avatar
      fuse: fix ioctl ABI · 1baa26b2
      Miklos Szeredi authored
      In kernel ABI version 7.16 and later FUSE_IOCTL_RETRY reply from a
      unrestricted IOCTL request shall return with an array of 'struct
      fuse_ioctl_iovec' instead of 'struct iovec'.  This fixes the ABI
      ambiguity of 32bit vs. 64bit.
      Reported-by: default avatar"ccmail111" <ccmail111@yahoo.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      CC: Tejun Heo <tj@kernel.org>
      1baa26b2
    • Miklos Szeredi's avatar
      fuse: allow batching of FORGET requests · 02c048b9
      Miklos Szeredi authored
      Terje Malmedal reports that a fuse filesystem with 32 million inodes
      on a machine with lots of memory can take up to 30 minutes to process
      FORGET requests when all those inodes are evicted from the icache.
      
      To solve this, create a BATCH_FORGET request that allows up to about
      8000 FORGET requests to be sent in a single message.
      
      This request is only sent if userspace supports interface version 7.16
      or later, otherwise fall back to sending individual FORGET messages.
      Reported-by: default avatarTerje Malmedal <terje.malmedal@usit.uio.no>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      02c048b9
    • Miklos Szeredi's avatar
      fuse: separate queue for FORGET requests · 07e77dca
      Miklos Szeredi authored
      Terje Malmedal reports that a fuse filesystem with 32 million inodes
      on a machine with lots of memory can go unresponsive for up to 30
      minutes when all those inodes are evicted from the icache.
      
      The reason is that FORGET messages, sent when the inode is evicted,
      are queued up together with regular filesystem requests, and while the
      huge queue of FORGET messages are processed no other filesystem
      operation can proceed.
      
      Since a full fuse request structure is allocated for each inode, these
      take up quite a bit of memory as well.
      
      To solve these issues, create a slim 'fuse_forget_link' structure
      containing just the minimum of information required to send the FORGET
      request and chain these on a separate queue.
      
      When userspace is asking for a request make sure that FORGET and
      non-FORGET requests are selected fairly: for each 8 non-FORGET allow
      16 FORGET requests.  This will make sure FORGETs do not pile up, yet
      other requests are also allowed to proceed while the queued FORGETs
      are processed.
      Reported-by: default avatarTerje Malmedal <terje.malmedal@usit.uio.no>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      07e77dca
    • Miklos Szeredi's avatar
      fuse: ioctl cleanup · 8ac83505
      Miklos Szeredi authored
      Get rid of unnecessary page_address()-es.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      CC: Tejun Heo <tj@kernel.org>
      8ac83505
  2. 30 Nov, 2010 4 commits
  3. 29 Nov, 2010 18 commits
  4. 28 Nov, 2010 14 commits