Linus Torvalds <[EMAIL PROTECTED]> wrote: > How about something like this?
At first glance, this looks reasonable. It also looks like it should be used to replace a lot of the cancel_delayed_work() calls that attempt to cancel _undelayed_ work items. That would allow a number of work items to be downgraded from delayed_work to work_struct. Also, the name "run_scheduled_work" sort of suggests that the work *will* be run regardless of whether it was pending or not. Given the confusion over cancel_delayed_work(), I imagine this will rain confusion too. + if (get_wq_data(work) == cwq + && test_bit(WORK_STRUCT_PENDING, &work->management) I wonder if those can be combined, perhaps: + if ((work->management & ~WORK_STRUCT_NOAUTOREL) == + ((unsigned long) cwq | (1 << WORK_STRUCT_PENDING)) Otherwise for i386 the compiler can't combine them because test_bit() is done with inline asm. And: + if (!test_bit(WORK_STRUCT_PENDING, &work->management)) Should possibly be: + if (!work_pending(work)) David - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/