Inductance is way too high.
What's the LM358 for? It looks like you're force-driving the internal error amp, but then doing
exactly the same thing that the internal error amp does: negative feedback with a 2.5V offset!
Ed: well, it's probably not 2.5V, given that you didn't specify resistor values....... it's also a current feedback circuit, I guess. In that case, an amp is still helpful, but it's probably better to simply amplify the current shunt signal, rather than force the internal amp.
The transistor has a considerable amount of stray inductance around it. There should at least be an RCD clamp snubber across drain-source, for example like this:
(the 10n, 15 ohm, and BYV diode; best suited values will differ)
But it would be very much better to change the layout to fix the stray inductance. Adding ground plane is a must.
Tim