1. 08 12月, 2006 1 次提交
  2. 17 10月, 2006 1 次提交
    • M
      [PATCH] fuse: fix handling of moved directory · d2a85164
      Miklos Szeredi 提交于
      Fuse considered it an error (EIO) if lookup returned a directory inode, to
      which a dentry already refered.  This is because directory aliases are not
      allowed.
      
      But in a network filesystem this could happen legitimately, if a directory is
      moved on a remote client.  This patch attempts to relax the restriction by
      trying to first evict the offending alias from the cache.  If this fails, it
      still returns an error (EBUSY).
      
      A rarer situation is if an mkdir races with an indenpendent lookup, which
      finds the newly created directory already moved.  In this situation the mkdir
      should return success, but that would be incorrect, since the dentry cannot be
      instantiated, so return EBUSY.
      
      Previously checking for a directory alias and instantiation of the dentry
      weren't done atomically in lookup/mkdir, hence two such calls racing with each
      other could create aliased directories.  To prevent this introduce a new
      per-connection mutex: fuse_conn->inst_mutex, which is taken for instantiations
      with a directory inode.
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d2a85164
  3. 01 8月, 2006 1 次提交
    • M
      [PATCH] fuse: use jiffies_64 · 0a0898cf
      Miklos Szeredi 提交于
      It is entirely possible (though rare) that jiffies half-wraps around, while a
      dentry/inode remains in the cache.  This could mean that the dentry/inode is
      not invalidated for another half wraparound-time.
      
      To get around this problem, use 64-bit jiffies.  The only problem with this is
      that dentry->d_time is 32 bits on 32-bit archs.  So use d_fsdata as the high
      32 bits.  This is an ugly hack, but far simpler, than having to allocate
      private data just for this purpose.
      
      Since 64-bit jiffies can be assumed never to wrap around, simple comparison
      can be used, and a zero time value can represent "invalid".
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      0a0898cf
  4. 26 6月, 2006 7 次提交
  5. 26 4月, 2006 1 次提交
  6. 12 4月, 2006 2 次提交
    • M
      [fuse] Fix accounting the number of waiting requests · 9bc5ddda
      Miklos Szeredi 提交于
      Properly accounting the number of waiting requests was forgotten in
      "clean up request accounting" patch.
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      9bc5ddda
    • M
      [fuse] fix deadlock between fuse_put_super() and request_end() · 73ce8355
      Miklos Szeredi 提交于
      A deadlock was possible, when the last reference to the superblock was
      held due to a background request containing a file reference.
      
      Releasing the file would release the vfsmount which in turn would
      release the superblock.  Since sbput_sem is held during the fput() and
      fuse_put_super() tries to acquire this same semaphore, a deadlock
      results.
      
      The chosen soltuion is to get rid of sbput_sem, and instead use the
      spinlock to ensure the referenced inodes/file are released only once.
      Since the actual release may sleep, defer these outside the locked
      region, but using local variables instead of the structure members.
      
      This is a much more rubust solution.
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      73ce8355
  7. 11 4月, 2006 4 次提交
  8. 29 3月, 2006 1 次提交
  9. 02 2月, 2006 1 次提交
    • M
      [PATCH] fuse: fix async read for legacy filesystems · 9cd68455
      Miklos Szeredi 提交于
      While asynchronous reads mean a performance improvement in most cases, if
      the filesystem assumed that reads are synchronous, then async reads may
      degrade performance (filesystem may receive reads out of order, which can
      confuse it's own readahead logic).
      
      With sshfs a 1.5 to 4 times slowdown can be measured.
      
      There's also a need for userspace filesystems to know whether asynchronous
      reads are supported by the kernel or not.
      
      To achive these, negotiate in the INIT request whether async reads will be
      used and the maximum readahead value.  Update interface version to 7.6
      
      If userspace uses a version earlier than 7.6, then disable async reads, and
      set maximum readahead value to the maximum read size, as done in previous
      versions.
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      9cd68455
  10. 17 1月, 2006 11 次提交
  11. 07 1月, 2006 3 次提交
  12. 07 11月, 2005 2 次提交
  13. 31 10月, 2005 1 次提交
  14. 10 9月, 2005 4 次提交