diff mbox series

回覆: [PATCH v3 2/2] ceph: set the correct mask for getattr reqeust for read

Message ID SEZPR04MB69726C80F867BBBD2DFD21A2B72C2@SEZPR04MB6972.apcprd04.prod.outlook.com
State New
Headers show
Series 回覆: [PATCH v3 2/2] ceph: set the correct mask for getattr reqeust for read | expand

Commit Message

Frank Hsiao 蕭法宣 March 19, 2024, 8:02 a.m. UTC
Reviewed-by: Frank Hsiao 蕭法宣 <frankhsiao@qnap.com>
Tested-by: Frank Hsiao 蕭法宣 <frankhsiao@qnap.com>
diff mbox series

Patch

diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index c35878427985..a85f95c941fc 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -2191,14 +2191,16 @@  static ssize_t ceph_read_iter(struct kiocb *iocb, struct iov_iter *to)
                int statret;
                struct page *page = NULL;
                loff_t i_size;
+               int mask = CEPH_STAT_CAP_SIZE;
                if (retry_op == READ_INLINE) {
                        page = __page_cache_alloc(GFP_KERNEL);
                        if (!page)
                                return -ENOMEM;
                }

-               statret = __ceph_do_getattr(inode, page,
-                                           CEPH_STAT_CAP_INLINE_DATA, !!page);
+               if (retry_op == READ_INLINE)
+                       mask = CEPH_STAT_CAP_INLINE_DATA;
+               statret = __ceph_do_getattr(inode, page, mask, !!page);
                if (statret < 0) {
                        if (page)
                                __free_page(page);
@@ -2239,7 +2241,7 @@  static ssize_t ceph_read_iter(struct kiocb *iocb, struct iov_iter *to)
                /* hit EOF or hole? */
                if (retry_op == CHECK_EOF && iocb->ki_pos < i_size &&
                    ret < len) {
-                       doutc(cl, "hit hole, ppos %lld < size %lld, reading more\n",
+                       doutc(cl, "may hit hole, ppos %lld < size %lld, reading more\n",
                              iocb->ki_pos, i_size);

                        read += ret;