1. 23 3月, 2016 1 次提交
    • G
      ocfs2: export ocfs2_kset for online file check · 9dde5e4f
      Gang He 提交于
      When there are errors in the ocfs2 filesystem, they are usually
      accompanied by the inode number which caused the error.  This inode
      number would be the input to fixing the file.  One of these options
      could be considered:
      
      A file in the sys filesytem which would accept inode numbers.  This
      could be used to communication back what has to be fixed or is fixed.
      You could write:
      
        $# echo "<inode>" > /sys/fs/ocfs2/devname/filecheck/check
      
      or
      
        $# echo "<inode>" > /sys/fs/ocfs2/devname/filecheck/fix
      
      Compare with second version, I re-design filecheck sysfs interfaces,
      there are three sysfs files (check, fix and set) under filecheck
      directory (see above), sysfs will accept only one argument <inode>.
      Second, I adjust some code in ocfs2_filecheck_repair_inode_block()
      function according to upstream feedback, we cannot just add VALID_FL
      flag back as a inode block fix, then we will not fix this field
      corruption currently until having a complete solution.  Compare with
      first version, I use strncasecmp instead of double strncmp functions.
      Second, update the source file contribution vendor.
      
      This patch (of 4):
      
      Export ocfs2_kset object from ocfs2_stackglue kernel module, then online
      file check code will create the related sysfiles under ocfs2_kset
      object.  We're exporting this because it's built in ocfs2_stackglue.ko.
      Signed-off-by: NGang He <ghe@suse.com>
      Reviewed-by: NMark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Joseph Qi <joseph.qi@huawei.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9dde5e4f
  2. 22 1月, 2014 2 次提交
  3. 31 3月, 2011 1 次提交
  4. 27 2月, 2010 6 次提交
    • J
      ocfs2_dlmfs: Enable the use of user cluster stacks. · cbe0e331
      Joel Becker 提交于
      Unlike ocfs2, dlmfs has no permanent storage.  It can't store off a
      cluster stack it is supposed to be using.  So it can't specify the stack
      name in ocfs2_cluster_connect().
      
      Instead, we create ocfs2_cluster_connect_agnostic(), which simply uses
      the stack that is currently enabled.  This is find for dlmfs, which will
      rely on the stack initialization.
      
      We add the "stackglue" capability to dlmfs's capability list.  This lets
      userspace know dlmfs can be used with all cluster stacks.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      cbe0e331
    • J
      ocfs2: Pass the locking protocol into ocfs2_cluster_connect(). · 553b5eb9
      Joel Becker 提交于
      Inside the stackglue, the locking protocol structure is hanging off of
      the ocfs2_cluster_connection.  This takes it one further; the locking
      protocol is passed into ocfs2_cluster_connect().  Now different cluster
      connections can have different locking protocols with distinct asts.
      Note that all locking protocols have to keep their maximum protocol
      version in lock-step.
      
      With the protocol structure set in ocfs2_cluster_connect(), there is no
      need for the stackglue to have a static pointer to a specific protocol
      structure.  We can change initialization to only pass in the maximum
      protocol version.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      553b5eb9
    • J
      ocfs2: Remove the ast pointers from ocfs2_stack_plugins · e603cfb0
      Joel Becker 提交于
      With the full ocfs2_locking_protocol hanging off of the
      ocfs2_cluster_connection, ast wrappers can get the ast/bast pointers
      there.  They don't need to get them from their plugin structure.
      
      The user plugin still needs the maximum locking protocol version,
      though.  This changes the plugin structure so that it only holds the max
      version, not the entire ocfs2_locking_protocol pointer.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      e603cfb0
    • J
      ocfs2: Hang the locking proto on the cluster conn and use it in asts. · 110946c8
      Joel Becker 提交于
      With the ocfs2_cluster_connection hanging off of the ocfs2_dlm_lksb, we
      have access to it in the ast and bast wrapper functions.  Attach the
      ocfs2_locking_protocol to the conn.
      
      Now, instead of refering to a static variable for ast/bast pointers, the
      wrappers can look at the connection.  This means different connections
      can have different ast/bast pointers, and it reduces the need for the
      static pointer.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      110946c8
    • J
      ocfs2: Attach the connection to the lksb · c0e41338
      Joel Becker 提交于
      We're going to want it in the ast functions, so we convert union
      ocfs2_dlm_lksb to struct ocfs2_dlm_lksb and let it carry the connection.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      c0e41338
    • J
      ocfs2: Pass lksbs back from stackglue ast/bast functions. · a796d286
      Joel Becker 提交于
      The stackglue ast and bast functions tried to maintain the fiction that
      their arguments were void pointers.  In reality, stack_user.c had to
      know that the argument was an ocfs2_lock_res in order to get the status
      off of the lksb.  That's ugly.
      
      This changes stackglue to always pass the lksb as the argument to ast
      and bast functions.  The caller can always use container_of() to get the
      ocfs2_lock_res or user_dlm_lock_res.  The net effect to the caller is
      zero.  They still get back the lockres in their ast.  stackglue gets
      cleaner, and now can use the lksb itself.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      a796d286
  5. 23 6月, 2009 1 次提交
    • J
      ocfs2: Provide the ocfs2_dlm_lvb_valid() stack API. · 1c520dfb
      Joel Becker 提交于
      The Lock Value Block (LVB) of a DLM lock can be lost when nodes die and
      the DLM cannot reconstruct its state.  Clients of the DLM need to know
      this.
      
      ocfs2's internal DLM, o2dlm, explicitly zeroes out the LVB when it loses
      track of the state.  This is not a standard behavior, but ocfs2 has
      always relied on it.  Thus, an o2dlm LVB is always "valid".
      
      ocfs2 now supports both o2dlm and fs/dlm via the stack glue.  When
      fs/dlm loses track of an LVBs state, it sets a flag
      (DLM_SBF_VALNOTVALID) on the Lock Status Block (LKSB).  The contents of
      the LVB may be garbage or merely stale.
      
      ocfs2 doesn't want to try to guess at the validity of the stale LVB.
      Instead, it should be checking the VALNOTVALID flag.  As this is the
      'standard' way of treating LVBs, we will promote this behavior.
      
      We add a stack glue API ocfs2_dlm_lvb_valid().  It returns non-zero when
      the LVB is valid.  o2dlm will always return valid, while fs/dlm will
      check VALNOTVALID.
      Signed-off-by: NJoel Becker <joel.becker@oracle.com>
      Acked-by: NMark Fasheh <mfasheh@suse.com>
      1c520dfb
  6. 14 10月, 2008 1 次提交
    • M
      ocfs2: POSIX file locks support · 53da4939
      Mark Fasheh 提交于
      This is actually pretty easy since fs/dlm already handles the bulk of the
      work. The Ocfs2 userspace cluster stack module already uses fs/dlm as the
      underlying lock manager, so I only had to add the right calls.
      
      Cluster-aware POSIX locks ("plocks") can be turned off by the same means at
      UNIX locks - mount with 'noflocks', or create a local-only Ocfs2 volume.
      Internally, the file system uses two sets of file_operations, depending on
      whether cluster aware plocks is required. This turns out to be easier than
      implementing local-only versions of ->lock.
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      53da4939
  7. 17 6月, 2008 3 次提交
  8. 18 4月, 2008 13 次提交