[opensuse-kernel] Kernel interface changes for blockdev_direct_IO() between 4.4 and 4.4.140
Hi, in an attempt to provide exfat-nofuse kmp for a number of our kernels[1][2], I noticed, that the signature deliberately of blockdev_direct_IO() changed between v4.4 and v4.4.140: 4.4: static inline ssize_t blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct iov_iter *iter, loff_t offset, get_block_t get_block) 4.4.140: static inline ssize_t blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct iov_iter *iter, get_block_t get_block) You might notice, 4.4.140 lost the offset argument. Apart from being hard to imagine, how this argument became obsolete, and given, that it reappeared for v4.5, that reveals 2 questions: * Doesn't this violate the rules of kernel sublevel updates? * How can I investigate, at which point this version got lost? In other words, is there a git tree, that happens to carry *all* sublevel updates (Greg's tree?), where I can git blame include/linux/fs.h and is this something to be expected? Thanks for your patience. Cheers, Pete [1] https://build.opensuse.org/package/show/home:frispete:kernel/exfat-nofuse [2] https://github.com/frispete/exfat-nofuse -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
On 08/15/2018, 11:02 PM, Hans-Peter Jansen wrote:
in an attempt to provide exfat-nofuse kmp for a number of our kernels[1][2], I noticed, that the signature deliberately of blockdev_direct_IO() changed between v4.4 and v4.4.140:
4.4:
static inline ssize_t blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct iov_iter *iter, loff_t offset, get_block_t get_block)
4.4.140:
static inline ssize_t blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct iov_iter *iter, get_block_t get_block)
You might notice, 4.4.140 lost the offset argument. Apart from being hard to imagine, how this argument became obsolete, and given, that it reappeared for v4.5, that reveals 2 questions:
It didn't appear in 4.5. Offset was there in the kernel up to 4.7.
* Doesn't this violate the rules of kernel sublevel updates?
No. This change happened before the kabi freeze via this *SUSE* commit: commit 7cb199f8c3d173b983f8a524a640f74efeba076d Author: Jan Kara <jack@suse.cz> Date: Thu Dec 22 15:19:28 2016 +0100 direct-io: eliminate the offset argument to ->direct_IO (fate#321148).
* How can I investigate, at which point this version got lost?
Version of what? You can assume Leap 42.3 and SLE12-SP3 never had offset.
In other words, is there a git tree, that happens to carry *all* sublevel updates (Greg's tree?), where I can git blame include/linux/fs.h and is this something to be expected?
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git is upstream kernel git. The change is not there though. https://kernel.opensuse.org/ is a SUSE portal. https://github.com/openSUSE/kernel/tree/openSUSE-42.3 is the git you are looking for. https://kernel.opensuse.org/cgit/kernel/log/?h=openSUSE-42.3 is the git where the development happens. regards, -- js suse labs -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
On Donnerstag, 16. August 2018 08:47:27 Jiri Slaby wrote:
On 08/15/2018, 11:02 PM, Hans-Peter Jansen wrote:
4.4.140:
static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
struct inode *inode, struct iov_iter *iter, get_block_t get_block)
You might notice, 4.4.140 lost the offset argument. Apart from being hard to imagine, how this argument became obsolete, and given, that it reappeared for v4.5, that reveals 2 questions: It didn't appear in 4.5. Offset was there in the kernel up to 4.7.
* Doesn't this violate the rules of kernel sublevel updates?
No. This change happened before the kabi freeze via this *SUSE* commit: commit 7cb199f8c3d173b983f8a524a640f74efeba076d Author: Jan Kara <jack@suse.cz> Date: Thu Dec 22 15:19:28 2016 +0100
direct-io: eliminate the offset argument to ->direct_IO (fate#321148).
* How can I investigate, at which point this version got lost?
Version of what? You can assume Leap 42.3 and SLE12-SP3 never had offset.
Great. Exactly what I was looking for.
In other words, is there a git tree, that happens to carry *all* sublevel updates (Greg's tree?), where I can git blame include/linux/fs.h and is this something to be expected?
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git is upstream kernel git. The change is not there though.
https://kernel.opensuse.org/ is a SUSE portal.
https://github.com/openSUSE/kernel/tree/openSUSE-42.3 is the git you are looking for.
https://kernel.opensuse.org/cgit/kernel/log/?h=openSUSE-42.3 is the git where the development happens.
Thank you very much, Jiri and Takashi. I will add some conditional sed magic to fix this issue. Cheers, Pete -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
On Wed, 15 Aug 2018 23:02:52 +0200, Hans-Peter Jansen wrote:
Hi,
in an attempt to provide exfat-nofuse kmp for a number of our kernels[1][2], I noticed, that the signature deliberately of blockdev_direct_IO() changed between v4.4 and v4.4.140:
4.4:
static inline ssize_t blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct iov_iter *iter, loff_t offset, get_block_t get_block)
4.4.140:
static inline ssize_t blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct iov_iter *iter, get_block_t get_block)
You might notice, 4.4.140 lost the offset argument. Apart from being hard to imagine, how this argument became obsolete, and given, that it reappeared for v4.5, that reveals 2 questions: * Doesn't this violate the rules of kernel sublevel updates?
Well, it's not done through "updates". This inline function change was seen from the very beginning of SLE12-SP3 / Leap 42.3 kernel releases; i.e. a backport of an upstream change along with SP2->SP3 upgrade. So please apply the patch conditionally for SLE12-SP3 and Leap 42.3 kernels.
* How can I investigate, at which point this version got lost?
FWIW, it's a backport from 4.7 kernel.
In other words, is there a git tree, that happens to carry *all* sublevel updates (Greg's tree?), where I can git blame include/linux/fs.h and is this something to be expected?
You can see it in the expanded kernel tree, http://kernel.opensuse.org/ thanks, Takashi
Thanks for your patience.
Cheers, Pete
[1] https://build.opensuse.org/package/show/home:frispete:kernel/exfat-nofuse [2] https://github.com/frispete/exfat-nofuse -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
-- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
participants (3)
-
Hans-Peter Jansen
-
Jiri Slaby
-
Takashi Iwai