[lkml]   [2001]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: swapoff() behaviour

On Fri, 21 Sep 2001, Alexander Viro wrote:

> Guys, do we want
> swapon /dev/sda6
> cp -a /dev/sda6 /tmp
> swapoff /tmp/sda6
> to work? Code in sys_swapoff() looks like an attempt to make it work.
> However, it doesn't -
> if ((p->flags & SWP_WRITEOK) == SWP_WRITEOK) {
> if (p->swap_file) {
> if (p->swap_file == nd.dentry)
> break;
> } else {
> if (S_ISBLK(nd.dentry->d_inode->i_mode)
> && (p->swap_device == nd.dentry->d_inode->i_
> rdev))
> break;
> }
> }
> _never_ hits the second break since we have ->swap_file set for all
> active swap components, be they swap files or swap partitions.
> Comments? The same goes for 2.2, BTW.

After a look through the CVS, it seems that prior to 2.1.45 we actually
had that behaviour - for swap partitions swapoff() cared only about
major:minor. Since 2.1.45 we really need the same dentry - not even
the same inode (i.e.
swapon /dev/sda6 && ln /dev/sda6 /dev/foo && swapoff /dev/foo
is guaranteed to fail; prior to 2.1.45 it used to work).

In other words, during the last 4 years quite a few pieces of mm/swapfile.c
had been a dead code. Looks like we either need to restore old behaviour
or perform the amputation. Snippet above is not the only place of that

Linus, it's your call.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:03    [W:0.037 / U:0.288 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site