ceph: don't include used caps in cap_wanted
when copying files to cephfs, file data may stay in page cache after corresponding file is closed. Cached data use Fc capability. If we include Fc capability in cap_wanted, MDS will treat files with cached data as open files, and journal them in an EOpen event when trimming log segment. Signed-off-by: Yan, Zheng <zyan@redhat.com>
This commit is contained in:
Родитель
3e0708b990
Коммит
41445999ae
|
@ -1525,13 +1525,13 @@ retry:
|
||||||
retry_locked:
|
retry_locked:
|
||||||
file_wanted = __ceph_caps_file_wanted(ci);
|
file_wanted = __ceph_caps_file_wanted(ci);
|
||||||
used = __ceph_caps_used(ci);
|
used = __ceph_caps_used(ci);
|
||||||
want = file_wanted | used;
|
|
||||||
issued = __ceph_caps_issued(ci, &implemented);
|
issued = __ceph_caps_issued(ci, &implemented);
|
||||||
revoking = implemented & ~issued;
|
revoking = implemented & ~issued;
|
||||||
|
|
||||||
retain = want | CEPH_CAP_PIN;
|
want = file_wanted;
|
||||||
|
retain = file_wanted | used | CEPH_CAP_PIN;
|
||||||
if (!mdsc->stopping && inode->i_nlink > 0) {
|
if (!mdsc->stopping && inode->i_nlink > 0) {
|
||||||
if (want) {
|
if (file_wanted) {
|
||||||
retain |= CEPH_CAP_ANY; /* be greedy */
|
retain |= CEPH_CAP_ANY; /* be greedy */
|
||||||
} else if (S_ISDIR(inode->i_mode) &&
|
} else if (S_ISDIR(inode->i_mode) &&
|
||||||
(issued & CEPH_CAP_FILE_SHARED) &&
|
(issued & CEPH_CAP_FILE_SHARED) &&
|
||||||
|
|
Загрузка…
Ссылка в новой задаче