<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/super.c, branch linux-2.6.34.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.34.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.34.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-08-17T19:34:58Z</updated>
<entry>
<title>fs: assign sb-&gt;s_bdi to default_backing_dev_info if the bdi is going away</title>
<updated>2012-08-17T19:34:58Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2011-03-17T10:13:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bc661f5d238569cae7ca9da01e12451b7785fb01'/>
<id>urn:sha1:bc661f5d238569cae7ca9da01e12451b7785fb01</id>
<content type='text'>
commit 95f28604a65b1c40b6c6cd95e58439cd7ded3add upstream.

We don't have proper reference counting for this yet, so we run into
cases where the device is pulled and we OOPS on flushing the fs data.
This happens even though the dirty inodes have already been
migrated to the default_backing_dev_info.

Reported-by: Torsten Hilbrich &lt;torsten.hilbrich@secunet.com&gt;
Tested-by: Torsten Hilbrich &lt;torsten.hilbrich@secunet.com&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>Fix sget() race with failing mount</title>
<updated>2011-04-17T20:15:34Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2010-08-09T16:05:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0068c623f6fd0630176e224bf929dff4852b5580'/>
<id>urn:sha1:0068c623f6fd0630176e224bf929dff4852b5580</id>
<content type='text'>
commit 7a4dec53897ecd3367efb1e12fe8a4edc47dc0e9 upstream.

If sget() finds a matching superblock being set up, it'll
grab an active reference to it and grab s_umount.  That's
fine - we'll wait for completion of foofs_get_sb() that way.
However, if said foofs_get_sb() fails we'll end up holding
the halfway-created superblock.  deactivate_locked_super()
called by foofs_get_sb() will just unlock the sucker since
we are holding another active reference to it.

What we need is a way to tell if superblock has been successfully
set up.  Unfortunately, neither -&gt;s_root nor the check for
MS_ACTIVE quite fit.  Cheap and easy way, suitable for backport:
new flag set by the (only) caller of -&gt;get_sb().  If that flag
isn't present by the time sget() grabbed s_umount on preexisting
superblock it has found, it's seeing a stillborn and should
just bury it with deactivate_locked_super() (and repeat the search).

Longer term we want to set that flag in -&gt;get_sb() instances (and
check for it to distinguish between "sget() found us a live sb"
and "sget() has allocated an sb, we need to set it up" in there,
instead of checking -&gt;s_root as we do now).

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>fs: fs/super.c needs to include backing-dev.h for !CONFIG_BLOCK</title>
<updated>2010-04-29T18:33:35Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2010-04-29T18:33:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5477d0face8a3ba4e9a1e7283692fff9c92f8e5e'/>
<id>urn:sha1:5477d0face8a3ba4e9a1e7283692fff9c92f8e5e</id>
<content type='text'>
When CONFIG_BLOCK is set, it ends up getting backing-dev.h included.
But for !CONFIG_BLOCK, it isn't so lucky. The proper thing to do is
include &lt;linux/backing-dev.h&gt; directly from the file it's used from,
so do that.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>Catch filesystems lacking s_bdi</title>
<updated>2010-04-25T06:54:42Z</updated>
<author>
<name>Jörn Engel</name>
</author>
<published>2010-04-25T06:54:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5129a469a91a91427334c40e29e64c6d0ab68caf'/>
<id>urn:sha1:5129a469a91a91427334c40e29e64c6d0ab68caf</id>
<content type='text'>
noop_backing_dev_info is used only as a flag to mark filesystems that
don't have any backing store, like tmpfs, procfs, spufs, etc.

Signed-off-by: Joern Engel &lt;joern@logfs.org&gt;

Changed the BUG_ON() to a WARN_ON(). Note that adding dirty inodes
to the noop_backing_dev_info is not legal and will not result in
them being flushed, but we already catch this condition in
__mark_inode_dirty() when checking for a registered bdi.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>Mirror MS_KERNMOUNT in -&gt;mnt_flags</title>
<updated>2010-03-03T19:08:00Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2010-02-05T14:30:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8089352a13b785d4e0df63d87bd2b71c76bb9aee'/>
<id>urn:sha1:8089352a13b785d4e0df63d87bd2b71c76bb9aee</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>fs: improve remount,ro vs buffercache coherency</title>
<updated>2010-03-03T18:00:20Z</updated>
<author>
<name>Nick Piggin</name>
</author>
<published>2009-12-22T00:28:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d208bbdda991b8808d9c033ce4d31cb1bd87dcfc'/>
<id>urn:sha1:d208bbdda991b8808d9c033ce4d31cb1bd87dcfc</id>
<content type='text'>
Invalidate sb-&gt;s_bdev on remount,ro.

Fixes a problem reported by Jorge Boncompte who is seeing corruption
trying to snapshot a minix filesystem image.  Some filesystems modify
their metadata via a path other than the bdev buffer cache (eg.  they may
use a private linear mapping for their metadata, or implement directories
in pagecache, etc).  Also, file data modifications usually go to the bdev
via their own mappings.

These updates are not coherent with buffercache IO (eg.  via /dev/bdev)
and never have been.  However there could be a reasonable expectation that
after a mount -oremount,ro operation then the buffercache should
subsequently be coherent with previous filesystem modifications.

So invalidate the bdev mappings on a remount,ro operation to provide a
coherency point.

The problem was exposed when we switched the old rd to brd because old rd
didn't really function like a normal block device and updates to rd via
mappings other than the buffercache would still end up going into its
buffercache.  But the same problem has always affected other "normal"
block devices, including loop.

[akpm@linux-foundation.org: repair comment layout]
Reported-by: "Jorge Boncompte [DTI2]" &lt;jorge@dti2.net&gt;
Tested-by: "Jorge Boncompte [DTI2]" &lt;jorge@dti2.net&gt;
Signed-off-by: Nick Piggin &lt;npiggin@suse.de&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>vfs: get_sb_single() - do not pass options twice</title>
<updated>2009-12-23T19:23:43Z</updated>
<author>
<name>Kay Sievers</name>
</author>
<published>2009-12-18T20:18:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9329d1beaeed1a94f030c784dcec5ff973f402c4'/>
<id>urn:sha1:9329d1beaeed1a94f030c784dcec5ff973f402c4</id>
<content type='text'>
Filesystem code usually destroys the option buffer while
parsing it. This leads to errors when the same buffer is
passed twice. In case we fill a new superblock do not call
remount.

This is needed to quite a warning that the debugfs code
causes every boot.

Cc: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Signed-off-by: Kay Sievers &lt;kay.sievers@vrfy.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>freeze_bdev: grab active reference to frozen superblocks</title>
<updated>2009-09-24T11:47:41Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2009-08-03T21:28:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4504230a71566785a05d3e6b53fa1ee071b864eb'/>
<id>urn:sha1:4504230a71566785a05d3e6b53fa1ee071b864eb</id>
<content type='text'>
Currently we held s_umount while a filesystem is frozen, despite that we
might return to userspace and unlock it from a different process.  Instead
grab an active reference to keep the file system busy and add an explicit
check for frozen filesystems in remount and reject the remount instead
of blocking on s_umount.

Add a new get_active_super helper to super.c for use by freeze_bdev that
grabs an active reference to a superblock from a given block device.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>freeze_bdev: kill bd_mount_sem</title>
<updated>2009-09-24T11:47:39Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2009-08-03T21:28:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4fadd7bb20a1e7c774ed88dc703d8fbcd00ff917'/>
<id>urn:sha1:4fadd7bb20a1e7c774ed88dc703d8fbcd00ff917</id>
<content type='text'>
Now that we have the freeze count there is not much reason for bd_mount_sem
anymore.  The actual freeze/thaw operations are serialized using the
bd_fsfreeze_mutex, and the only other place we take bd_mount_sem is
get_sb_bdev which tries to prevent mounting a filesystem while the block
device is frozen.  Instead of add a check for bd_fsfreeze_count and
return -EBUSY if a filesystem is frozen.  While that is a change in user
visible behaviour a failing mount is much better for this case rather
than having the mount process stuck uninterruptible for a long time.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>vfs: change sb-&gt;s_maxbytes to a loff_t</title>
<updated>2009-09-24T11:47:33Z</updated>
<author>
<name>Jeff Layton</name>
</author>
<published>2009-09-18T20:05:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=42cb56ae2ab67390da34906b27bedc3f2ff1393b'/>
<id>urn:sha1:42cb56ae2ab67390da34906b27bedc3f2ff1393b</id>
<content type='text'>
sb-&gt;s_maxbytes is supposed to indicate the maximum size of a file that can
exist on the filesystem.  It's declared as an unsigned long long.

Even if a filesystem has no inherent limit that prevents it from using
every bit in that unsigned long long, it's still problematic to set it to
anything larger than MAX_LFS_FILESIZE.  There are places in the kernel
that cast s_maxbytes to a signed value.  If it's set too large then this
cast makes it a negative number and generally breaks the comparison.

Change s_maxbytes to be loff_t instead.  That should help eliminate the
temptation to set it too large by making it a signed value.

Also, add a warning for couple of releases to help catch filesystems that
set s_maxbytes too large.  Eventually we can either convert this to a
BUG() or just remove it and in the hope that no one will get it wrong now
that it's a signed value.

Signed-off-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Cc: Johannes Weiner &lt;hannes@cmpxchg.org&gt;
Cc: Christoph Hellwig &lt;hch@lst.de&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Cc: Robert Love &lt;rlove@google.com&gt;
Cc: Mandeep Singh Baines &lt;msb@google.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
</feed>
