mbox series

[v5,0/7] ceph: don't request caps for idle open files

Message ID 20200305122105.69184-1-zyan@redhat.com (mailing list archive)
Headers show
Series ceph: don't request caps for idle open files | expand

Message

Yan, Zheng March 5, 2020, 12:20 p.m. UTC
This series make cephfs client not request caps for open files that
idle for a long time. For the case that one active client and multiple
standby clients open the same file, this increase the possibility that
mds issues exclusive caps to the active client.

Yan, Zheng (7):
  ceph: always renew caps if mds_wanted is insufficient
  ceph: consider inode's last read/write when calculating wanted caps
  ceph: remove delay check logic from ceph_check_caps()
  ceph: simplify calling of ceph_get_fmode()
  ceph: update i_requested_max_size only when sending cap msg to auth mds
  ceph: check all mds' caps after page writeback
  ceph: calculate dir's wanted caps according to recent dirops

 fs/ceph/caps.c               | 360 ++++++++++++++++-------------------
 fs/ceph/dir.c                |  21 +-
 fs/ceph/file.c               |  45 ++---
 fs/ceph/inode.c              |  21 +-
 fs/ceph/ioctl.c              |   2 +
 fs/ceph/mds_client.c         |  16 +-
 fs/ceph/super.h              |  37 ++--
 include/linux/ceph/ceph_fs.h |   1 +
 8 files changed, 243 insertions(+), 260 deletions(-)

changes since v2
 - make __ceph_caps_file_wanted() more readable
 - add patch 5 and 6, which fix hung write during testing patch 1~4

changes since v3
 - don't queue delayed cap check for snap inode
 - initialize ci->{last_rd,last_wr} to jiffies - 3600 * HZ
 - make __ceph_caps_file_wanted() check inode type

changes since v4
 - add patch 7, improve how to calculate dir's wanted caps

Comments

Jeff Layton March 5, 2020, 3:32 p.m. UTC | #1
On Thu, 2020-03-05 at 20:20 +0800, Yan, Zheng wrote:
> This series make cephfs client not request caps for open files that
> idle for a long time. For the case that one active client and multiple
> standby clients open the same file, this increase the possibility that
> mds issues exclusive caps to the active client.
> 
> Yan, Zheng (7):
>   ceph: always renew caps if mds_wanted is insufficient
>   ceph: consider inode's last read/write when calculating wanted caps
>   ceph: remove delay check logic from ceph_check_caps()
>   ceph: simplify calling of ceph_get_fmode()
>   ceph: update i_requested_max_size only when sending cap msg to auth mds
>   ceph: check all mds' caps after page writeback
>   ceph: calculate dir's wanted caps according to recent dirops
> 
>  fs/ceph/caps.c               | 360 ++++++++++++++++-------------------
>  fs/ceph/dir.c                |  21 +-
>  fs/ceph/file.c               |  45 ++---
>  fs/ceph/inode.c              |  21 +-
>  fs/ceph/ioctl.c              |   2 +
>  fs/ceph/mds_client.c         |  16 +-
>  fs/ceph/super.h              |  37 ++--
>  include/linux/ceph/ceph_fs.h |   1 +
>  8 files changed, 243 insertions(+), 260 deletions(-)
> 
> changes since v2
>  - make __ceph_caps_file_wanted() more readable
>  - add patch 5 and 6, which fix hung write during testing patch 1~4
> 
> changes since v3
>  - don't queue delayed cap check for snap inode
>  - initialize ci->{last_rd,last_wr} to jiffies - 3600 * HZ
>  - make __ceph_caps_file_wanted() check inode type
> 
> changes since v4
>  - add patch 7, improve how to calculate dir's wanted caps
> 

Thanks Zheng. This one seems to work just fine. Merged into ceph-
client/testing branch with the following changes:

- squashed patch 7 into patch 2
- cleaned up a few changelog grammatical and spelling errors
- fix a small bit of whitespace damage

Thanks!