From: Linus Torvalds <torvalds@linux-foundation.org>
To: Nitin Gupta <ngupta@vflare.org>
Cc: Greg KH <greg@kroah.com>, Minchan Kim <minchan.kim@gmail.com>,
Pekka Enberg <penberg@cs.helsinki.fi>,
Hugh Dickins <hugh.dickins@tiscali.co.uk>, Cyp <cyp561@gmail.com>,
driverdev <devel@driverdev.osuosl.org>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/3] ramzswap: Eliminate stale data in compressed memory
Date: Wed, 5 May 2010 10:50:02 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.2.00.1005051036070.27218@i5.linux-foundation.org> (raw)
In-Reply-To: <4BE1A307.709@vflare.org>
On Wed, 5 May 2010, Nitin Gupta wrote:
>
> Please see the original mail below (patch you nacked). Maybe, at that time, I didn't
> make it clear that ramzswap is really a *block device* :)
Oh, you're right. I looked up another patch of yours that had that
swap_info" thing, and decided I hated that one with a passion, but it's
not the one I NAK'ed in the earlier discussion.
Now that I see the block-layer patch, my reaction is (a) it's so much
nicer than using that horrid nasty 'notifier' crap and (b) it reminds me
why I wasn't entirely happy: it doesn't work - or even make sense - for
filesystem-backed swap.
So when you do
struct gendisk *disk = p->bdev->bd_disk;
..
if (disk->fops->swap_slot_free_notify)
disk->fops->swap_slot_free_notify(p->bdev, offset);
there's nothing that says that 'offset' makes any sense at all, because if
it's a swap-file on a device, it does all kinds of totally wrong things.
So I don't think that patch works either. I still suspect that the right
"level" for something like this should be the 'mapping' level (which is
how we actually do the write), but that seems to not work well with the
block device layer.
So at a _minimum_, that 'disk->fops' approach needs to verify that the
swap device is actually the whole bdev, and that the bdev isn't just the
backing store for a swap _file_.
I dunno how to best check that. Either add a new flag to
'swap_info_struct' that gets set on 'swapon()' whether it's a full device
or a file. Or possibly just something like
static int swap_is_block_device(struct swap_info_struct *p)
{
return S_ISBLK(p->swap_file->f_mapping->host);
}
instead.
Because doing that 'disk->fops' thing _really_ isn't right if it isn't a
disk.
Linus
next prev parent reply other threads:[~2010-05-05 17:52 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-05 13:45 [PATCH 0/3] ramzswap: Eliminate stale data in compressed memory Nitin Gupta
2010-05-05 13:45 ` [PATCH 1/3] Add notifiers for swapon and swapoff events Nitin Gupta
2010-05-05 13:45 ` [PATCH 2/3] Send callback when a swap slot is freed Nitin Gupta
2010-05-05 13:45 ` [PATCH 3/3] ramzswap: Register for swap event notifiers and callback Nitin Gupta
2010-05-05 15:14 ` [PATCH 0/3] ramzswap: Eliminate stale data in compressed memory Linus Torvalds
2010-05-05 16:05 ` Nitin Gupta
2010-05-05 16:22 ` Linus Torvalds
2010-05-05 16:55 ` Nitin Gupta
2010-05-05 17:50 ` Linus Torvalds [this message]
-- strict thread matches above, loose matches on Subject: below --
2010-03-05 10:22 Nitin Gupta
2010-03-09 19:07 ` Nitin Gupta
2010-03-11 7:22 ` Hugh Dickins
2010-03-11 11:36 ` Nitin Gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.2.00.1005051036070.27218@i5.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=cyp561@gmail.com \
--cc=devel@driverdev.osuosl.org \
--cc=greg@kroah.com \
--cc=hugh.dickins@tiscali.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=minchan.kim@gmail.com \
--cc=ngupta@vflare.org \
--cc=penberg@cs.helsinki.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox