systemtap/bz1448099.3.patch

43 lines
1.6 KiB
Diff

commit 030e9465eadf7d3b3a278951264dac83b2f4b4f7
Author: David Smith <dsmith@redhat.com>
Date: Wed Feb 22 10:04:00 2017 -0600
Update the vfs.stp tapset for newer kernels.
* tapset/linux/vfs.stp: Since the __block_write_begin() function can be
inlined on newer kernels, we'll also probe
__block_write_begin_int(). Also, check to see if '$file' is defined
before using it in _vfs.block_write_begin.return.
diff --git a/tapset/linux/vfs.stp b/tapset/linux/vfs.stp
index 4572bd7..32db300 100644
--- a/tapset/linux/vfs.stp
+++ b/tapset/linux/vfs.stp
@@ -1104,7 +1104,8 @@ probe _vfs.generic_commit_write = kernel.function("generic_commit_write") ?
argstr = sprintf("%p, %p, %d, %d", $file, $page, $from, $to)
}
-probe _vfs.block_prepare_write = kernel.function("__block_write_begin") !,
+probe _vfs.block_prepare_write = kernel.function("__block_write_begin_int") !,
+ kernel.function("__block_write_begin") !,
kernel.function("__block_prepare_write")
{
page = $page
@@ -1134,6 +1135,7 @@ probe _vfs.block_prepare_write = kernel.function("__block_write_begin") !,
}
probe _vfs.block_prepare_write.return =
+ kernel.function("__block_write_begin_int").return !,
kernel.function("__block_write_begin").return !,
kernel.function("__block_prepare_write").return
{
@@ -1188,7 +1190,7 @@ probe _vfs.block_write_begin.return =
name = "_vfs.block_write_begin"
retstr = sprintf("%d", $return)
- file = @entry($file)
+ file = @choose_defined(@entry($file), "")
pathname = @defined(@entry($file)) ? fullpath_struct_file(task_current(), @entry($file)) : ""
pos = @entry($pos)
len = @entry($len)