From: Linus Torvalds on


On Wed, 5 May 2010, Nitin Gupta wrote:
>
> ramzswap driver creates RAM based block devices which can be
> used (only) as swap disks. Pages swapped to these disks are
> compressed and stored in memory itself.

Ok, this patch series looks way better, if only because it looks less
hacky.

That said, I absolutely _hate_ the f*cking notifier model that takes
"type" flags. It's a disgrace. It's a horrible horrible model.

I'd much rather bind a nice "swap_operations" structure to the device, and
have that structure have function pointers for the different operations.
No stupid "operation type codes". Real, honest-to-goodness function
pointers.

The notifier layer is a total piece of sh*t. I'm sorry I ever merged it,
and I'm _doubly_ sorry that it's use is so horribly widespread. It's a
mistake.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Linus Torvalds on


On Wed, 5 May 2010, Nitin Gupta wrote:
>
> I think such 'swap_operations' structure will be have to be part of
> block_device_operations, so we may access it from swap_entry_free()
> where a swap slot is freed. This will also get rid of all this notifier
> stuff.

Yes, I think adding it to block_device_operations would be fine. That
sounds like a sane layering, and would make it easy for a block device
driver to say "I want to know about swap events".

In fact, for regular block devices, a swap block free might well translate
into a TRIM command some day (where "some day" means when the SSD's
actually get their stuff together and there is real upside and not just
"most cases will be very slow and the upside is debatable").

> The patch you nacked did something similar: it add 'swap_slot_free_callback'
> directly to block_device_operations. Without such change, I could not think
> of any way to do away with notifiers.

Umm. No. IIRC, the patch I NAK'ed aded it to the 'swap_info_struct', which
I said was the wrong level. The block device driver level would seem to be
the _right_ level, since that's what ramzswap is. No?

Also, the patch I NAK'ed also used those nasty notifier chains, making it
even uglier.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/