__u32 gid;
__u64 dv;
struct ll_swap_stack *llss = NULL;
- int rc, rc1;
+ int rc;
OBD_ALLOC_PTR(llss);
if (llss == NULL)
}
/* update time if requested */
- rc = rc1 = 0;
- if (llss->ia2.ia_valid != 0)
+ rc = 0;
+ if (llss->ia2.ia_valid != 0) {
+ mutex_lock(&llss->inode1->i_mutex);
rc = ll_setattr(file1->f_dentry, &llss->ia2);
+ mutex_unlock(&llss->inode1->i_mutex);
+ }
+
+ if (llss->ia1.ia_valid != 0) {
+ int rc1;
- if (llss->ia1.ia_valid != 0)
+ mutex_lock(&llss->inode2->i_mutex);
rc1 = ll_setattr(file2->f_dentry, &llss->ia1);
+ mutex_unlock(&llss->inode2->i_mutex);
+ if (rc == 0)
+ rc = rc1;
+ }
free:
if (llss != NULL)
* already have during req replay, declare_xattr_set()
* defines striping, then create() does the work
*/
- if (fl & LU_XATTR_REPLACE)
+ if (fl & LU_XATTR_REPLACE) {
+ /* free stripes, then update disk */
+ lod_object_free_striping(env, lod_dt_obj(dt));
rc = dt_xattr_set(env, next, buf, name, fl, th, capa);
- else
+ } else {
rc = lod_striping_create(env, dt, NULL, NULL, th);
+ }
RETURN(rc);
} else {
/*