1. 19 Nov, 2013 2 commits
    • Peng Tao's avatar
      drivers/staging/lustre: indent lustre_ldlm_flags_vals · d298b537
      Peng Tao authored
      To follow kernel's "no spaces at the start of a line" rule.
      Signed-off-by: default avatarPeng Tao <bergwolf@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d298b537
    • Jinshan Xiong's avatar
      staging/lustre/hsm: Implementation of exclusive open · d3a8a4e2
      Jinshan Xiong authored
      Proposed way to do exclusive open:
      
      0. First of all, we have to perform most of the work in kernel space;
      
      1. Client exclusively opens the file with IT_RELEASE_OPEN.
      1.1 exclusive open means the open will fail if the file is being opened by somebody else;
      
      2. the MDT will handle IT_RELEASE as follows:
      2.1 Revoke OPEN_LOCK on this file, just request EX mode of MDS_INODELOCK_OPEN lock and
      release it;
      2.2 Acquire a rwsem, say open_rwsem, with write mode before trying to the file; for the
      normal open, it should acquire read mode of open_rwsem;
      2.3 Check if the file is already being opened by others, if not return with -EBUSY;
      2.4 Check if the file can be released;
      2.5 Set a special flag in struct mdt_file_data to mark this open is exclusive;
      2.5 Release open rwsem.
      
      >From now on, if the file is opened by others, it will mark mdt_file_data that the
      exclusive open is broken.
      
      3. Client: if IT_RELEASE_OPEN is finished successfully, and do followings:
      3.1 Acquire full PW or EX extent lock to flush dirty cache;
      3.2 Pack the handle of layout lock, data version and other attars;
      3.3 Close the file with IT_RELEASE_CLOSE.
      
      4. Back to MDT to handle IT_RELEASE CLOSE:
      4.1 Grab the open_rwsem
      4.2 Check if the exclusive open has ever been broken, in that case, the RELEASE process
      will fail;
      4.3 Verify the data version matches archive;
      4.4 Grab EX layout lock
      4.5 Swap the layout
      4.6 Release EX layout lock
      4.7 Close the exclusive open
      
      Basically we avoid granting EX layout lock back to client and introduce exclusive open so
      that we know it if the file has ever being accessed. I hope this can simplify things
      a little bit. Also, exclusive open can be used to implement file lease.
      
      In this patch, a framework of lease is implemented. However,
      only exclusive lease is supported right now.
      
      To apply a lease, MDS_OPEN_LEASE must be set to open the file, EX
      mode open lock is returned to the client side to hold a lease. From
      that time on, if this file is opened again by other processes, the
      open lock will be revoked so the client who holds the lease will
      know the lease is already broken by checking that open lock.
      
      To release a lease, normal close is used. The client will revoke the
      open lock before sending CLOSE request.
      
      Lease can be applied in two ways. ll_lease_open()/close() can be
      called directly if the lease holder is in kernel space; or if the
      lease holder lives in user space, it has to open the file first and
      then use ioctl() with command LL_IOC_SET_LEASE to apply a lease. The
      lease holder has to poll the lease status itself.
      
      Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2919
      Lustre-change: http://review.whamcloud.com/6730Signed-off-by: default avatarJinshan Xiong <jinshan.xiong@intel.com>
      Signed-off-by: default avatarJohn L. Hammond <john.hammond@intel.com>
      Reviewed-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
      Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
      Signed-off-by: default avatarPeng Tao <bergwolf@gmail.com>
      Signed-off-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d3a8a4e2
  2. 15 Nov, 2013 9 commits
  3. 12 Nov, 2013 29 commits