1. 16 Oct, 2008 1 commit
  2. 01 Aug, 2008 1 commit
  3. 26 Jul, 2008 1 commit
  4. 30 Apr, 2008 1 commit
  5. 22 Apr, 2008 2 commits
    • Miklos Szeredi's avatar
      [patch 4/7] vfs: mountinfo: add mount peer group ID · 719f5d7f
      Miklos Szeredi authored
      Add a unique ID to each peer group using the IDR infrastructure.  The
      identifiers are reused after the peer group dissolves.
      
      The IDR structures are protected by holding namepspace_sem for write
      while allocating or deallocating IDs.
      
      IDs are allocated when a previously unshared vfsmount becomes the
      first member of a peer group.  When a new member is added to an
      existing group, the ID is copied from one of the old members.
      
      IDs are freed when the last member of a peer group is unshared.
      
      Setting the MNT_SHARED flag on members of a subtree is done as a
      separate step, after all the IDs have been allocated.  This way an
      allocation failure can be cleaned up easilty, without affecting the
      propagation state.
      
      Based on design sketch by Al Viro.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      719f5d7f
    • Miklos Szeredi's avatar
      [patch 3/7] vfs: mountinfo: add mount ID · 73cd49ec
      Miklos Szeredi authored
      Add a unique ID to each vfsmount using the IDR infrastructure.  The
      identifiers are reused after the vfsmount is freed.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      73cd49ec
  6. 21 Apr, 2008 1 commit
  7. 18 Apr, 2008 3 commits
    • Dave Hansen's avatar
      [PATCH] r/o bind mounts: honor mount writer counts at remount · 2e4b7fcd
      Dave Hansen authored
      Originally from: Herbert Poetzl <herbert@13thfloor.at>
      
      This is the core of the read-only bind mount patch set.
      
      Note that this does _not_ add a "ro" option directly to the bind mount
      operation.  If you require such a mount, you must first do the bind, then
      follow it up with a 'mount -o remount,ro' operation:
      
      If you wish to have a r/o bind mount of /foo on bar:
      
      	mount --bind /foo /bar
      	mount -o remount,ro /bar
      Acked-by: default avatarAl Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
      Signed-off-by: default avatarDave Hansen <haveblue@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      2e4b7fcd
    • Dave Hansen's avatar
      [PATCH] r/o bind mounts: track numbers of writers to mounts · 3d733633
      Dave Hansen authored
      This is the real meat of the entire series.  It actually
      implements the tracking of the number of writers to a mount.
      However, it causes scalability problems because there can be
      hundreds of cpus doing open()/close() on files on the same mnt at
      the same time.  Even an atomic_t in the mnt has massive scalaing
      problems because the cacheline gets so terribly contended.
      
      This uses a statically-allocated percpu variable.  All want/drop
      operations are local to a cpu as long that cpu operates on the same
      mount, and there are no writer count imbalances.  Writer count
      imbalances happen when a write is taken on one cpu, and released
      on another, like when an open/close pair is performed on two
      
      Upon a remount,ro request, all of the data from the percpu
      variables is collected (expensive, but very rare) and we determine
      if there are any outstanding writers to the mount.
      
      I've written a little benchmark to sit in a loop for a couple of
      seconds in several cpus in parallel doing open/write/close loops.
      
      http://sr71.net/~dave/linux/openbench.c
      
      The code in here is a a worst-possible case for this patch.  It
      does opens on a _pair_ of files in two different mounts in parallel.
      This should cause my code to lose its "operate on the same mount"
      optimization completely.  This worst-case scenario causes a 3%
      degredation in the benchmark.
      
      I could probably get rid of even this 3%, but it would be more
      complex than what I have here, and I think this is getting into
      acceptable territory.  In practice, I expect writing more than 3
      bytes to a file, as well as disk I/O to mask any effects that this
      has.
      
      (To get rid of that 3%, we could have an #defined number of mounts
      in the percpu variable.  So, instead of a CPU getting operate only
      on percpu data when it accesses only one mount, it could stay on
      percpu data when it only accesses N or fewer mounts.)
      
      [AV] merged fix for __clear_mnt_mount() stepping on freed vfsmount
      Acked-by: default avatarAl Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
      Signed-off-by: default avatarDave Hansen <haveblue@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      3d733633
    • Dave Hansen's avatar
      [PATCH] r/o bind mounts: stub functions · 8366025e
      Dave Hansen authored
      This patch adds two function mnt_want_write() and mnt_drop_write().  These are
      used like a lock pair around and fs operations that might cause a write to the
      filesystem.
      
      Before these can become useful, we must first cover each place in the VFS
      where writes are performed with a want/drop pair.  When that is complete, we
      can actually introduce code that will safely check the counts before allowing
      r/w<->r/o transitions to occur.
      Acked-by: default avatarSerge Hallyn <serue@us.ibm.com>
      Acked-by: default avatarAl Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDave Hansen <haveblue@us.ibm.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      8366025e
  8. 27 Mar, 2008 2 commits
  9. 08 May, 2007 1 commit
  10. 11 Feb, 2007 1 commit
    • Eric Dumazet's avatar
      [PATCH] struct vfsmount: keep mnt_count & mnt_expiry_mark away from mnt_flags · 4ba4d4c0
      Eric Dumazet authored
      I noticed cache misses in touch_atime() that can be avoided if we keep
      mnt_count & mnt_expiry_mark in a different cache line than mnt_flags
      (mostly read)
      
      mnt_count & mnt_expiry_mark are modified each time a file is opened/closed
      in a file system.
      
      touch_atime() is called each time a file is read, and generally needs to
      read mnt_flags.
      
      Other fields of struct vfsmount are mostly read so I chose to move
      mnt_count & mnt_expiry_mark at the end of struct vfsmount.  And adding a
      comment so that nobody tries to re-arrange fields to fill the holes :)
      
      On 64bits platforms, the new offsetof(mnt_count) is 0xC0
      On 32bits platforms, it is 0x60, so I didnot add a
      ____cacheline_aligned_in_smp because it would have a too big impact on the
      size of this object (in particular if CONFIG_X86_L1_CACHE_SHIFT=7)
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4ba4d4c0
  11. 13 Dec, 2006 1 commit
  12. 08 Dec, 2006 1 commit
  13. 23 Jun, 2006 1 commit
  14. 09 Jun, 2006 2 commits
  15. 10 Jan, 2006 1 commit
    • Christoph Hellwig's avatar
      [PATCH] per-mountpoint noatime/nodiratime · fc33a7bb
      Christoph Hellwig authored
      Turn noatime and nodiratime into per-mount instead of per-sb flags.
      
      After all the preparations this is a rather trivial patch.  The mount code
      needs to treat the two options as per-mount instead of per-superblock, and
      touch_atime needs to be changed to check the new MNT_ flags in addition to
      the MS_ flags that are kept for filesystems that are always
      noatime/nodiratime but not user settable anymore.  Besides that core code
      only nfs needed an update because it's leaving atime updates to the server
      and thus sets the S_NOATIME flag on every inode, but needs to know whether
      it's a real noatime mount for an getattr optimization.
      
      While we're at it I've killed the IS_NOATIME/IS_NODIRATIME macros that were
      only used by touch_atime.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      fc33a7bb
  16. 08 Jan, 2006 1 commit
  17. 07 Nov, 2005 5 commits
    • Ram Pai's avatar
      [PATCH] unbindable mounts · 9676f0c6
      Ram Pai authored
      An unbindable mount does not forward or receive propagation.  Also
      unbindable mount disallows bind mounts.  The semantics is as follows.
      
      Bind semantics:
        It is invalid to bind mount an unbindable mount.
      
      Move semantics:
        It is invalid to move an unbindable mount under shared mount.
      
      Clone-namespace semantics:
        If a mount is unbindable in the parent namespace, the corresponding
        cloned mount in the child namespace becomes unbindable too.  Note:
        there is subtle difference, unbindable mounts cannot be bind mounted
        but can be cloned during clone-namespace.
      Signed-off-by: default avatarRam Pai <linuxram@us.ibm.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9676f0c6
    • Ram Pai's avatar
      [PATCH] introduce slave mounts · a58b0eb8
      Ram Pai authored
      A slave mount always has a master mount from which it receives
      mount/umount events.  Unlike shared mount the event propagation does not
      flow from the slave mount to the master.
      Signed-off-by: default avatarRam Pai <linuxram@us.ibm.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      a58b0eb8
    • Ram Pai's avatar
      [PATCH] introduce shared mounts · 03e06e68
      Ram Pai authored
      This creates shared mounts.  A shared mount when bind-mounted to some
      mountpoint, propagates mount/umount events to each other.  All the
      shared mounts that propagate events to each other belong to the same
      peer-group.
      Signed-off-by: default avatarRam Pai <linuxram@us.ibm.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      03e06e68
    • Ram Pai's avatar
      [PATCH] beginning of the shared-subtree proper · 07b20889
      Ram Pai authored
      A private mount does not forward or receive propagation.  This patch
      provides user the ability to convert any mount to private.
      Signed-off-by: default avatarRam Pai <linuxram@us.ibm.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      07b20889
    • Al Viro's avatar
      [PATCH] saner handling of auto_acct_off() and DQUOT_OFF() in umount · 7b7b1ace
      Al Viro authored
      The way we currently deal with quota and process accounting that might
      keep vfsmount busy at umount time is inherently broken; we try to turn
      them off just in case (not quite correctly, at that) and
      
        a) pray umount doesn't fail (otherwise they'll stay turned off)
        b) pray nobody doesn anything funny just as we turn quota off
      
      Moreover, LSM provides hooks for doing the same sort of broken logics.
      
      The proper way to deal with that is to introduce the second kind of
      reference to vfsmount.  Semantics:
      
       - when the last normal reference is dropped, all special ones are
         converted to normal ones and if there had been any, cleanup is done.
       - normal reference can be cloned into a special one
       - special reference can be converted to normal one; that's a no-op if
         we'd already passed the point of no return (i.e.  mntput() had
         converted special references to normal and started cleanup).
      
      The way it works: e.g. starting process accounting converts the vfsmount
      reference pinned by the opened file into special one and turns it back
      to normal when it gets shut down; acct_auto_close() is done when no
      normal references are left.  That way it does *not* obstruct umount(2)
      and it silently gets turned off when the last normal reference to
      vfsmount is gone.  Which is exactly what we want...
      
      The same should be done by LSM module that holds some internal
      references to vfsmount and wants to shut them down on umount - it should
      make them special and security_sb_umount_close() will be called exactly
      when the last normal reference to vfsmount is gone.
      
      quota handling is even simpler - we don't use normal file IO anymore, so
      there's no need to hold vfsmounts at all.  DQUOT_OFF() is done from
      deactivate_super(), where it really belongs.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7b7b1ace
  18. 12 Jul, 2005 1 commit
  19. 07 Jul, 2005 2 commits
  20. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4