-
Vitaly Fertman authored
mdt_intent_getxattr() can return EFAULT if a buffer cannot be found, it is returned after lock_replace, where a new lock is installed into lockp. An error forces ldlm_lock_enqueue() to destroy the original lock, but ldlm_handle_enqueue0() drops the reference on the new lock. xattr client code implied intent error is returned under a lock, which is immediately cancelled. Check if a lock obtained and cancel it properly for error cases. Note: we should support both cases for interop needs, an intent error under a lock and with a lock abort. Keep returning a lock with an intent error for interop purposes for now, to be dropped later when client will get old enough. make all intent ops to work through md_intent_lock: getxattr and layout, which should extract the intent error. Signed-off-by:
Vitaly Fertman <vitaly.fertman@seagate.com> Change-Id: I7b628b50448c4bdb26a3a8758fc16a44212ad9ac Seagate-bug-id: MRP-3072 MRP-3137 Reviewed-by:
Andrew Perepechko <andrew.perepechko@seagate.com> Reviewed-by:
Andriy Skulysh <andriy.skulysh@seagate.com> Tested-by:
Elena V. Gryaznova <elena.gryaznova@seagate.com> Reviewed-on: http://review.whamcloud.com/17220 Tested-by: Jenkins Tested-by:
Maloo <hpdd-maloo@intel.com> Reviewed-by:
John L. Hammond <john.hammond@intel.com> Reviewed-by:
Lai Siyao <lai.siyao@intel.com> Reviewed-by:
Oleg Drokin <oleg.drokin@intel.com>
1cb9e850