I believe the issue is kernel-level, and have confirmed the following works (in stopping the fan, and running less often) with kernels 3.2 - 3.5. Though on Inspiron 15R 5520, the root cause is likely the same.
echo "min_power" | tee /sys/class/scsi_host/host*/link_power_management_policy
Typically one only needs to do it on host0, but it doesn't hurt to do it as above, just to be sure. Yes, as it's strange as it sounds, the only way I could get the fan to quite down is with enabling SATA ALPM (Agressive Link Power Management) -- the min_power used above. Unfortunately, medium_power doesn't help. max_performance is the default and is what keeps the fan always running for some odd reason. But, since this happens to be a laptop, this may be a good idea anyway as it shaves a good 0.7-1.5Watts off your power consumption when you running on batteries.
Another thing to help with power/heat, is power savings options of the integrated GPU - Intel HD 4000 kernel module; i915
options i915 modeset=1 i915_enable_rc6=1 i915_enable_fbc=1 lvds_downclock=1 semaphores=1
modeset is necessary (along with opensource radeon driver) for vgaswitcheroo to work. that way, you can disable the discrete graphics when not needed via:
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
echo MIGD > /sys/kernel/debug/vgaswitcheroo/switch
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
This 2nd OFF may not be needed, unless scripting, to avoid possible blanking on resume. You may want to run this in startup, for default boot to be more energy efficient (and quieter fan operation).