Эх сурвалжийг харах

ceph: reserve caps for file layout/lock MDS requests

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Yan, Zheng 11 жил өмнө
parent
commit
3bd58143ba

+ 3 - 0
fs/ceph/ioctl.c

@@ -110,6 +110,8 @@ static long ceph_ioctl_set_layout(struct file *file, void __user *arg)
 		return PTR_ERR(req);
 		return PTR_ERR(req);
 	req->r_inode = inode;
 	req->r_inode = inode;
 	ihold(inode);
 	ihold(inode);
+	req->r_num_caps = 1;
+
 	req->r_inode_drop = CEPH_CAP_FILE_SHARED | CEPH_CAP_FILE_EXCL;
 	req->r_inode_drop = CEPH_CAP_FILE_SHARED | CEPH_CAP_FILE_EXCL;
 
 
 	req->r_args.setlayout.layout.fl_stripe_unit =
 	req->r_args.setlayout.layout.fl_stripe_unit =
@@ -154,6 +156,7 @@ static long ceph_ioctl_set_layout_policy (struct file *file, void __user *arg)
 		return PTR_ERR(req);
 		return PTR_ERR(req);
 	req->r_inode = inode;
 	req->r_inode = inode;
 	ihold(inode);
 	ihold(inode);
+	req->r_num_caps = 1;
 
 
 	req->r_args.setlayout.layout.fl_stripe_unit =
 	req->r_args.setlayout.layout.fl_stripe_unit =
 			cpu_to_le32(l.stripe_unit);
 			cpu_to_le32(l.stripe_unit);

+ 1 - 0
fs/ceph/locks.c

@@ -45,6 +45,7 @@ static int ceph_lock_message(u8 lock_type, u16 operation, struct file *file,
 		return PTR_ERR(req);
 		return PTR_ERR(req);
 	req->r_inode = inode;
 	req->r_inode = inode;
 	ihold(inode);
 	ihold(inode);
+	req->r_num_caps = 1;
 
 
 	/* mds requires start and length rather than start and end */
 	/* mds requires start and length rather than start and end */
 	if (LLONG_MAX == fl->fl_end)
 	if (LLONG_MAX == fl->fl_end)