Jean-Tiare LE BIGOT wrote: > Hi, > > I started to implement 'DISCARD' support in RBD kernel driver as > described on http://tracker.ceph.com/issues/190 > > This first (easy) step was to add at the end of > drivers/block/rbd.c:rbd_init_disk > > /* Advertise discard support for aligned blocks */ > queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); > disk->queue->limits.discard_granularity = segment_size; > disk->queue->limits.discard_alignment = segment_size; > > With this both 'mount -o discard' and 'fstrim' stopped to complain about > missing 'DISCARD' support. Good ! > > Next step was to add support on `rbd_request_fn` which I did (sort of). > But here I'm stuck. If I understood well FS drivers uses `REQ_DISCARD` > flag of `rq->cmd_flags` to notify the driver of the discard operation. > But the problem is that (rq->cmd_flags & REQ_DISCARD) never appears to > be set. > > I tried copying then removing large files, lots of small files, forcing > fstrim. But I never got it. I must be missing something obvious but I > can't manage to find what ? Do you have any clue what could be wrong ? > > Thanks, > Well, you can use the "blkdiscard" command to force a discard of an arbitrary portion of a block device directly. You can used dd or ddrescue to copy test patterns (maybe 0xFF) to and from RBD device, and use blkdiscard to trim parts of that. If that doesn't work, then the error must be elsewhere. -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html