Re: [PATCH 17/20] [SCSI] mpt3sas: Use alloc_ordered_workqueue() API instead of create_singlethread_workqueue() API

James Bottomley
2015-06-15T21:05:07Z

On Mon, 2015-06-15 at 16:26 +0530, Sreekanth Reddy wrote:
> On Sat, Jun 13, 2015 at 2:33 AM, Joe Lawrence <joe.lawrence@stratus.com> wrote:
> > On 06/12/2015 05:42 AM, Sreekanth Reddy wrote:
> > ...
> >> +#if defined(alloc_ordered_workqueue)
> >> + ioc->firmware_event_thread = alloc_ordered_workqueue(
> >> + ioc->firmware_event_name, WQ_MEM_RECLAIM);
> >> +#else
> >> + ioc->firmware_event_thread = create_singlethread_workqueue(
> >> ioc->firmware_event_name);
> >> +#endif
> >
> > Hi Sreekanth,
> >
> > I think the upstream version of this code can safely assume
> > alloc_ordered_workqueue is defined, no?
>
> yes, upstream version of this code can safely assume that
> alloc_ordered_workqueue is defined.
>
> While working in-house, I observed that some of the older kernels
> doesn't defined this macro, so I have added this else section.

The driver has to be defined for the current kernel. If you maintain a
backport, that's fine, but not in the upstream driver. The reasons are
fairly pragmatic: this code in the #else clause can't be compiled so
it's just junk to the upstream driver and the static checkers will find
it and you'll attract a flock of patches removing dead code.

James