Patch "ceph: make members in struct ceph_mds_request_args_ext a union" has been added to the 6.5-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ceph: make members in struct ceph_mds_request_args_ext a union

to the 6.5-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ceph-make-members-in-struct-ceph_mds_request_args_ex.patch
and it can be found in the queue-6.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7a622f53197ef6379dc758dccf2bccd62557f1ae
Author: Xiubo Li <xiubli@xxxxxxxxxx>
Date:   Tue Jul 25 09:44:40 2023 +0800

    ceph: make members in struct ceph_mds_request_args_ext a union
    
    [ Upstream commit 3af5ae22030cb59fab4fba35f5a2b62f47e14df9 ]
    
    In ceph mainline it will allow to set the btime in the setattr request
    and just add a 'btime' member in the union 'ceph_mds_request_args' and
    then bump up the header version to 4. That means the total size of union
    'ceph_mds_request_args' will increase sizeof(struct ceph_timespec) bytes,
    but in kclient it will increase the sizeof(setattr_ext) bytes for each
    request.
    
    Since the MDS will always depend on the header's vesion and front_len
    members to decode the 'ceph_mds_request_head' struct, at the same time
    kclient hasn't supported the 'btime' feature yet in setattr request,
    so it's safe to do this change here.
    
    This will save 48 bytes memories for each request.
    
    Fixes: 4f1ddb1ea874 ("ceph: implement updated ceph_mds_request_head structure")
    Signed-off-by: Xiubo Li <xiubli@xxxxxxxxxx>
    Reviewed-by: Milind Changire <mchangir@xxxxxxxxxx>
    Signed-off-by: Ilya Dryomov <idryomov@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h
index 49586ff261520..b4fa2a25b7d95 100644
--- a/include/linux/ceph/ceph_fs.h
+++ b/include/linux/ceph/ceph_fs.h
@@ -462,17 +462,19 @@ union ceph_mds_request_args {
 } __attribute__ ((packed));
 
 union ceph_mds_request_args_ext {
-	union ceph_mds_request_args old;
-	struct {
-		__le32 mode;
-		__le32 uid;
-		__le32 gid;
-		struct ceph_timespec mtime;
-		struct ceph_timespec atime;
-		__le64 size, old_size;       /* old_size needed by truncate */
-		__le32 mask;                 /* CEPH_SETATTR_* */
-		struct ceph_timespec btime;
-	} __attribute__ ((packed)) setattr_ext;
+	union {
+		union ceph_mds_request_args old;
+		struct {
+			__le32 mode;
+			__le32 uid;
+			__le32 gid;
+			struct ceph_timespec mtime;
+			struct ceph_timespec atime;
+			__le64 size, old_size;       /* old_size needed by truncate */
+			__le32 mask;                 /* CEPH_SETATTR_* */
+			struct ceph_timespec btime;
+		} __attribute__ ((packed)) setattr_ext;
+	};
 };
 
 #define CEPH_MDS_FLAG_REPLAY		1 /* this is a replayed op */



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux