Hello all, I was writing a device mapper target. Now in that target for each bio request I set the bi_end_io field to my endio function "my_end_io". So that whenever the bio request gets complete it will call the "my_end_io" function. While registering the device mapper target we provide a structure called "target_type" to the device mapper. This structure is like this. static struct target_type my_dm_target = { .name = "my_dmt", .version = {1, 0, 0}, .module = THIS_MODULE, .ctr = dmt_ctr, .dtr = dmt_dtr, .map = dmt_map, .end_io = dmt_endio, }; It contains many other fields(Mainly function pointers). Now if you have observed the end_io field in the target_type, this is function. I was not able to figure out why there is another end_io filed is given if we can set the bi_end_io field in each bio(my_end_io). I was also not getting what's the purpose of the end_io function given in the target_type. And when this function gets called. Earlier I did not define end_io function (from target_type ) but because of that OOPS was generated. Later I dug the logs, I found that clone_endio function in dm.c is trying to access the end_io field from the target_type structure. But since function was not defined the end_io field was NULL. So it gives OOPS NULL pointer reference at that point. Looking forward for some help..... Regards, Gaurav _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies