1. 09 Mar, 2019 14 commits
    • J. R. Okajima's avatar
      aufs: workqueue · f04356cb
      J. R. Okajima authored
      
      
      Aufs uses the workqueue both synchronously and asynchronously.
      For sync-use-case, aufs uses its own specific wkq since doesn't want to
      be disturbed by other tasks on the system. For async-use-case, aufs uses
      the system global workqueue.
      Aufs has to prevent itself to being unmounted during the async-task is
      queued.
      
      See also the document in this commit.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      f04356cb
    • J. R. Okajima's avatar
      aufs: debug print sbinfo and branch · 2460d8e6
      J. R. Okajima authored
      
      
      Print various info about aufs branch and superblock. This feature is
      enabled when CONFIG_AUFS_DEBUG and the module parameter 'debug' are set.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      2460d8e6
    • J. R. Okajima's avatar
      aufs: readonly branch 2/2, callers · 66bc346d
      J. R. Okajima authored
      
      
      For details, see previous commit.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      66bc346d
    • J. R. Okajima's avatar
      aufs: readonly branch 1/2, definition · b7051459
      J. R. Okajima authored
      
      
      The branch object is managed by the sbinfo object as an element of its
      internal array. The iinfo and dinfo objects contain the branch id, and
      it will be used to implement the correct order in branch management
      (add/del).
      
      See also the documents in this commit.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      b7051459
    • J. R. Okajima's avatar
      aufs: infos generation 2/2 · f2ade007
      J. R. Okajima authored
      
      
      The generation of iinfo and dinfo inherit sbinfo's.
      Also iinfo generation tracks the branch inode's generation to test the
      matching after the branch management.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      f2ade007
    • J. R. Okajima's avatar
      aufs: infos generation 1/2, dcsub · fa25dbe6
      J. R. Okajima authored
      
      
      The generation of aufs objects will be updated by the branch
      management (add/del branches, by later commit), and aufs will refresh
      the objects based upon the generation.
      In refreshing dinfos, aufs will find all ancestors of the given dentry
      and store the pointers in dynamically allocated memory. I don't think it
      beautiful, but I don't have any other idea.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      fa25dbe6
    • J. R. Okajima's avatar
      aufs: sbinfo core · 3742849b
      J. R. Okajima authored
      
      
      The structure is very similar to inode and dentry infos (in previous
      commits), but the internal array is for 'struct au_branch' instead of
      'superblock.' Additionally the lifetime of 'struct au_sbinfo' is managed
      by kobject since it will be connected to sysfs by later commit.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      3742849b
    • J. R. Okajima's avatar
      aufs: dinfo core · ee166183
      J. R. Okajima authored
      
      
      The structure is very similar to aufs inode info (in previous commit).
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      ee166183
    • J. R. Okajima's avatar
      aufs: debug print · 786c90cb
      J. R. Okajima authored
      
      
      Print various info about aufs inode. This feature is enabled when
      CONFIG_AUFS_DEBUG and the module parameter 'debug' are set.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      786c90cb
    • J. R. Okajima's avatar
      aufs: module parameter, debug · 6011ea2b
      J. R. Okajima authored
      
      
      This parameter is available only when CONFIG_AUFS_DEBUG is enabled, and
      its default value is 0. Setting 1 will enable the various verifications
      and debug outputs.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      6011ea2b
    • J. R. Okajima's avatar
      aufs: iinfo, debug by rwsem · c74884be
      J. R. Okajima authored
      
      
      This is a very old debugging routine for rw_semaphore I was using
      privately and less meaningful to other people. It was (probably) before
      LOCKDEP feature was introduced, but now it is based upon LOCKDEP. This
      is compiled when CONFIG_AUFS_DEBUG is enabled.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      c74884be
    • J. R. Okajima's avatar
      aufs: iinfo core · a3d2caf2
      J. R. Okajima authored
      
      
      See the documents in this commit.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      a3d2caf2
    • J. R. Okajima's avatar
      aufs: kmalloc/kfree wrappers · c7926831
      J. R. Okajima authored
      
      
      Very basic, simple and stupid wrappers for kmalloc family.
      It tries kfree_ruc() as possible, with hoping a better performance.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      c7926831
    • J. R. Okajima's avatar
      aufs: intro, public header · 78ac643d
      J. R. Okajima authored
      
      
      A header file for both of kernelspace and userspace.
      
      For the new file fs/aufs/Kconfig, the maximum number of branches is
      customizable, and it determines the type (size) of 'aufs_bindex_t.' The
      type is always 'signed.' If we made it 'unsigned,' then more branches
      would be available. But generally I think 127 (default) is enough and it
      won't be a big issue.
      
      For those who wants more than 127 branches, other values are
      available. But we should care the size of the internal pointer arrays,
      and it is good for the performance to keep it in a page at most.
      AUFS_BRANCH_MAX_511 is mainly for 64bit systems which limits the
      internal array size less than 4k (511 x 8bytes < 4k). Similarly for
      32bit systems, AUFS_BRANCH_MAX_1023 (1023 x 4 bytes < 4k).
      
      See also the documents in this commit.
      Signed-off-by: default avatarJ. R. Okajima <hooanon05g@gmail.com>
      78ac643d