mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-19 08:11:52 +00:00
ceph: fix open for write on clustered mds
Normally when we open a file we already have a cap, and simply update the wanted set. However, if we open a file for write, but don't have an auth cap, that doesn't work; we need to open a new cap with the auth MDS. Only reuse existing caps if we are opening for read or the existing cap is auth. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
d8b16b3d1c
commit
7421ab8041
@ -154,11 +154,13 @@ int ceph_open(struct inode *inode, struct file *file)
|
||||
}
|
||||
|
||||
/*
|
||||
* No need to block if we have any caps. Update wanted set
|
||||
* No need to block if we have caps on the auth MDS (for
|
||||
* write) or any MDS (for read). Update wanted set
|
||||
* asynchronously.
|
||||
*/
|
||||
spin_lock(&inode->i_lock);
|
||||
if (__ceph_is_any_real_caps(ci)) {
|
||||
if (__ceph_is_any_real_caps(ci) &&
|
||||
(((fmode & CEPH_FILE_MODE_WR) == 0) || ci->i_auth_cap)) {
|
||||
int mds_wanted = __ceph_caps_mds_wanted(ci);
|
||||
int issued = __ceph_caps_issued(ci, NULL);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user