if (bio) {
#if (defined SSD_TRIM && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
+ if (!(bio_op(bio) & REQ_OP_DISCARD)) {
+#else
if (!(bio->bi_rw & REQ_DISCARD)) {
+#endif
ssd_end_io_acct(cmd);
if (!cmd->flag) {
pci_unmap_sg(dev->pdev, cmd->sgl, cmd->nsegs,
msg = (struct ssd_rw_msg *)cmd->msg;
#if (defined SSD_TRIM && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
+ if (bio_op(bio) & REQ_OP_DISCARD) {
+#else
if (bio->bi_rw & REQ_DISCARD) {
+#endif
unsigned int length = bio_sectors(bio);
//printk(KERN_WARNING "%s: discard len %u, block %llu\n", dev->name, bio_sectors(bio), block);
sgl = cmd->sgl;
#if (defined SSD_TRIM && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
+ if (bio_op(bio) & REQ_OP_DISCARD) {
+#else
if (bio->bi_rw & REQ_DISCARD) {
+#endif
unsigned int length = bio_sectors(bio);
//printk(KERN_WARNING "%s: discard len %u, block %llu\n", dev->name, bio_sectors(bio), block);
}
#else
//xx
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
+ if (unlikely(bio->bi_opf & REQ_FUA)) {
+#else
if (unlikely(bio->bi_rw & REQ_FUA)) {
+#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
bio_endio(bio, -EOPNOTSUPP);
#else
}
#else
//xx
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
+ if (unlikely(bio->bi_opf & REQ_FUA)) {
+#else
if (unlikely(bio->bi_rw & REQ_FUA)) {
+#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
bio_endio(bio, -EOPNOTSUPP);
#else
}
/* writeback_cache_control.txt: REQ_FLUSH requests without data can be completed successfully without doing any work */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
+ if (unlikely((bio_op(bio) & REQ_OP_FLUSH) && !bio_sectors(bio))) {
+#else
if (unlikely((bio->bi_rw & REQ_FLUSH) && !bio_sectors(bio))) {
+#endif
bio_endio(bio, 0);
goto out;
}
dev->gd->fops = &ssd_fops;
dev->gd->queue = dev->rq;
dev->gd->private_data = dev;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,8,0))
dev->gd->driverfs_dev = &dev->pdev->dev;
+#endif
snprintf (dev->gd->disk_name, sizeof(dev->gd->disk_name), "%s", dev->name);
set_capacity(dev->gd, dev->hw_info.size >> 9);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,8,0))
add_disk(dev->gd);
+#else
+ device_add_disk(&dev->pdev->dev, dev->gd);
+#endif
return 0;