Whamcloud - gitweb
LU-1546 mdd: return nlink as zero for dead objects
[fs/lustre-release.git] / lustre / lov / lov_merge.c
index bb29f48..4b9b1a5 100644 (file)
@@ -26,6 +26,8 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -130,19 +132,21 @@ int lov_merge_lvb_kms(struct lov_stripe_md *lsm,
 int lov_merge_lvb(struct obd_export *exp,
                   struct lov_stripe_md *lsm, struct ost_lvb *lvb, int kms_only)
 {
-        int   rc;
-        __u64 kms;
-
-        ENTRY;
-        rc = lov_merge_lvb_kms(lsm, lvb, &kms);
-        if (kms_only)
-                lvb->lvb_size = kms;
+       int   rc;
+       __u64 kms;
+
+       ENTRY;
+       lov_stripe_lock(lsm);
+       rc = lov_merge_lvb_kms(lsm, lvb, &kms);
+       lov_stripe_unlock(lsm);
+       if (kms_only)
+               lvb->lvb_size = kms;
        CDEBUG(D_INODE, "merged for FID "DFID" s="LPU64" m="LPU64" a="LPU64
               " c="LPU64" b="LPU64"\n",
               lsm->lsm_object_seq, (__u32)lsm->lsm_object_id,
               (__u32)(lsm->lsm_object_id >> 32), lvb->lvb_size, lvb->lvb_mtime,
               lvb->lvb_atime, lvb->lvb_ctime, lvb->lvb_blocks);
-        RETURN(rc);
+       RETURN(rc);
 }
 
 /* Must be called under the lov_stripe_lock() */