Skip to content
Snippets Groups Projects
  1. Oct 10, 2013
  2. Sep 27, 2013
    • Or Cohen's avatar
      vfs_task: Fix path conversion in certain cases · fbed5179
      Or Cohen authored
      
      task_conv was wrongly converting "/.." and produced a path with unexpected
      characters after /
      Consequently, repeated calls (Java) to 'new File("/..").exists()' returned
      ambigous results, not to mention other properties like isDirectory.
      
      This confused the shell's completion mechanism (and me).
      
      In more detail, in this (/..) situation 'len' was more than 2 (in line 105) which
      caused 'tgt' to be pointing before the begining of 'full', from that point
      whatever stopped the backward search for '/' (lines 109-112) was unexpected.
      I guess this might occur with other combinations.
      
      This sets 'len' to be 1 when starting an absolute path conversion, to match
      the behavior where relative path conversion sets 'len = strlen(cwd)'.
      
      Signed-off-by: default avatarOr Cohen <orc@fewbytes.com>
      fbed5179
  3. Sep 26, 2013
  4. Sep 15, 2013
    • Nadav Har'El's avatar
      Add copyright statement to files in fs subdirectory · bc213b60
      Nadav Har'El authored
      Added Cloudius copyright statement to source files in fs/ which are our
      own code (and not from Prex or FreeBSD). Also added our copyright statement
      in addition to the original one when I thought we made non-trivial changes
      to the original.
      bc213b60
  5. Sep 05, 2013
    • Glauber Costa's avatar
      build adaptions for single image · 16b47261
      Glauber Costa authored
      16b47261
    • Glauber Costa's avatar
      read partition table · 7fb8b99b
      Glauber Costa authored
      This code, living in device.c for maximum generality, will read the partition
      table from any disk that calls it. Ideally, each new device would have its own
      private data. But that would mean having to callback to the driver to set each
      of the partitions up. Therefore, I found it easier to convention that all
      partitions in the same drive have the same private data. This makes some sense
      if we consider that the hypervisors are usually agnostic about partitions, and
      all of the addressing and communications go through a single entry point, which
      is the disk.
      7fb8b99b
    • Glauber Costa's avatar
      add offset calculation · cd14aecc
      Glauber Costa authored
      To support multiple partitions to a disk, I found it easier to add a
      post-processing offset calculation to the bio just before calling the strategy.
      
      The reason is, we have many (really many) entry points for bio preparation
      (pre-strategy) and only two entry points for the strategy itself (the drivers).
      Since multiplex_strategy is a good thing to be used even for virtio (although I
      am not converting it now), since it allows for arbitrary sized requests, we
      could very well reduce it to just one.
      
      At this moment, the offset is always 0 and everything works as before.
      cd14aecc
    • Glauber Costa's avatar
      5524f1ef
  6. Aug 28, 2013
  7. Aug 26, 2013
    • Nadav Har'El's avatar
      __xstat64: Don't check version argument · 31fe1784
      Nadav Har'El authored
      Do to __xstat* what commit 018c672e
      did to __fxstat* - they had the same problem.
      31fe1784
    • Nadav Har'El's avatar
      __fxstat64: Don't check version argument · 018c672e
      Nadav Har'El authored
      In Linux, _STAT_VER is 1 on 64-bit (and 3 on 32-bit), but glibc never
      verifies the argument to __fxstat64. JNR - a library used by JRuby -
      wrongly (I believe) passes ver==0 to __fxstat64
      (see jnr-posix/..../LinuxPosix.java). On Linux this wrong argument is
      ignored but in our implementation, fails the check.
      
      So this patch removes this check from our code as well, to let JNR and
      therefore JRuby which uses it, use stat without failing.
      018c672e
  8. Aug 20, 2013
    • Avi Kivity's avatar
      vfs: implement umask() · e93b0a25
      Avi Kivity authored
      Currently the umask is ignore (it's pointless since we have no users).
      
      Needed by JRuby.
      e93b0a25
  9. Aug 19, 2013
    • Avi Kivity's avatar
      vfs: improve response time of dup3() closing the original file · 367a5eb4
      Avi Kivity authored
      If dup3() is called with oldfd pointing to an existing file, it will close
      the file for us.  37988879 converted fd operations to RCU, which caused
      this close to be deferred until after the RCU grace period (43df74e7 fixed
      this, but only for close(), not for dup3).
      
      The asynchronous operation of dup3() should be fine, except that it triggers
      a bug in sys_rename(): if the reference count of the vnode for either the
      source or destination is elevated, rename fails with EBUSY.  This is due to
      the coupling between vnodes and pathnames and can be fixed with the move
      to separate dentries.
      
      The whole sequence looks like
      
      0xffffc000de90c010  3   1376912988.418660 vfs_lseek            95 0x0 0
      0xffffc000de90c010  3   1376912988.418661 vfs_lseek_ret        0x0
      0xffffc000de90c010  3   1376912988.418689 vfs_dup3             93 95 0x0
      0xffffc000de90c010  3   1376912988.418696 vfs_dup3_ret         95
      0xffffc000de90c010  3   1376912988.418711 vfs_close            95
      0xffffc000de90c010  3   1376912988.418711 vfs_close_ret
      ...
      0xffffc000de90c010  3   1376912988.420573 vfs_close            95
      0xffffc000de90c010  3   1376912988.420580 vfs_close_ret
      0xffffc000de90c010  3   1376912988.420738 vfs_rename           "/usr/var/lib/cassandra/data/system/local/system-local-tmp-ic-1-Index.db" "/usr/var/lib/cassandra/data/system/l
      ocal/system-local-ic-1-Index.db"
      0xffffc000de90c010  3   1376912988.422302 vfs_pwritev_ret      0x56
      0xffffc000de90c010  3   1376912988.422302 vfs_rename_err       16
      
      fd 95 (as it was before dup3) is still open at the time of the rename.
      
      Fix by not deferring the fdrop() in fdset(); 43df74e7 already made fdrop()
      safe to use directly.
      
      Fixes failures with Cassandra.
      367a5eb4
    • Avi Kivity's avatar
      vfs: add tracepoints to vfs entry points · 1cd7aae5
      Avi Kivity authored
      1cd7aae5
  10. Aug 16, 2013
  11. Aug 13, 2013
    • Glauber Costa's avatar
      simple implementation of bio_finish · ea8a5891
      Glauber Costa authored
      This is used by subr_disk during bio flush operation
      ea8a5891
    • Glauber Costa's avatar
      multiplex strategy · ea3b0171
      Glauber Costa authored
      ea3b0171
    • Glauber Costa's avatar
      bio.h: augment bio structures for xen blkfront · 797e97f7
      Glauber Costa authored
      There are many other bio fields and functions that blkfront uses that are
      not provided by our simplified bio. I am adding them here. One of the things we need is
      a type definition of daddr_t. This already exists in fatfs.h, but it makes more sense to
      live in the lower level code. So instead of including fatfs in bio.h, I am including
      bio.h in fatfs and moving the daddr_t definition here.
      797e97f7
    • Glauber Costa's avatar
      Allow device communcation of the maximum io size · 0140180d
      Glauber Costa authored
      Some block devices, such as the Xen blkfront, will have a maximum per-request size
      that needs to be obeyed. In order for us to do it, we'll need to be aware of this
      requirement in upper layers. So set up the device with it. We initialize the default
      structure to make sure only interested parties need to set this up.
      0140180d
    • Glauber Costa's avatar
      factor out device_create · 1381d181
      Glauber Costa authored
      For xen, I would like to use an already existing device instead of creating one.
      I still need to register it, though. I am here factoring out device_create in
      a allocation and a registering part so I can use the later by itself.
      1381d181
  12. Aug 12, 2013
    • Avi Kivity's avatar
      vfs: relax dependency of close() performance on rcu grace periods · 43df74e7
      Avi Kivity authored
      Currently, we perform the final fdrop() in an rcu callback, which means it
      can have considerable latency.  This in turn places restrictions on
      further optimizations we can do to rcu, as we need prompt close() execution.
      
      Relax this by performing the fdrop() immediately, and only deferring the
      final free().  To do this, we harden fget() so it now expects files with
      positive refcounts, and make sure that after the final fdrop() refcounts
      are either zero or negative.
      
      This also makes close() take effect immediately, which fixes tst-pipe.so.
      43df74e7
  13. Aug 11, 2013
Loading