The freeze/thaw ones are simple, but the trim is an interesting struct.

* block.c (block_ioctl): Handle FIFREEZE/FITHAW/FITRIM.
* ioctl.c (ioctl_decode): Pass 'X' ioctls to block_ioctl.
---
 block.c | 20 ++++++++++++++++++++
 ioctl.c |  1 +
 2 files changed, 21 insertions(+)

diff --git a/block.c b/block.c
index b281b1a..b62e436 100644
--- a/block.c
+++ b/block.c
@@ -116,6 +116,11 @@ block_ioctl(struct tcb *tcp, long code, long arg)
        /* take a signed int */
        case BLKROSET:
        case BLKBSZSET:
+#ifdef FIFREEZE
+       /* First seen in linux-2.6.29 */
+       case FIFREEZE:
+       case FITHAW:
+#endif
                if (entering(tcp)) {
                        int val;
                        if (umove(tcp, arg, &val) < 0)
@@ -263,6 +268,21 @@ block_ioctl(struct tcb *tcp, long code, long arg)
                }
                break;
 
+#ifdef FITRIM
+       /* First seen in linux-2.6.37 */
+       case FITRIM:
+               if (entering(tcp)) {
+                       struct fstrim_range fstrim;
+                       if (umove(tcp, arg, &fstrim))
+                               tprintf(", %#lx", arg);
+                       else
+                               tprintf(", {start=%#" PRIx64 ", len=%#" PRIx64 
", "
+                                       "minlen=%#" PRIx64 "}", (uint64_t) 
fstrim.start,
+                                       (uint64_t) fstrim.len, (uint64_t) 
fstrim.minlen);
+               }
+               break;
+#endif
+
        /* No arguments or unhandled */
        case BLKTRACESTART:
        case BLKTRACESTOP:
diff --git a/ioctl.c b/ioctl.c
index 9c743ce..cfd5a24 100644
--- a/ioctl.c
+++ b/ioctl.c
@@ -85,6 +85,7 @@ ioctl_decode(struct tcb *tcp, long code, long arg)
                return rtc_ioctl(tcp, code, arg);
        case 0x03:
        case 0x12:
+       case 'X':
                return block_ioctl(tcp, code, arg);
 #ifdef HAVE_SCSI_SG_H
        case 0x22:
-- 
2.1.3


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to